この戦略は,トレンドの方向性を特定し,トレンドをフォローするためにWaveTrend指標とChaikin Money Flow (CMF) インジケーターを組み合わせます.これは15分間のタイムフレームで実行され,WaveTrendを使用して価格トレンドを決定し,CMFを使用してトレンドを確認し,それによって超短期トレンドフォローを実装します.
WaveTrendインジケーターは,価格のトレンド方向を効果的に特定することができる.チャネルミッドライン,チャネル平均線,チャネルインデックスで構成される.チャネルミッドラインは,価格傾向を反映する価格の指数関数移動平均線である.チャネルミッドラインの移動平均線は,チャネルミッドラインを特定するために使用されるチャネルミッドラインの移動平均線である.チャネルインデックスは,チャネルミッドラインからの価格の偏差を反映し,過買い/過売り信号を生成する.
CMF指標は,資金の流入と流出を判断し,傾向を確認することができる.この指標は,購入力と販売力の比較を反映する,容量調整の蓄積/分配線に基づいています. 0 周りの値は資金の流入と流出のバランスを示します. 0 未満は資金の流出を示し,0 以上は資金の流入を示します.
この戦略は15分間のタイムフレームで実行される.まずは価格トレンド方向性を決定するためにWaveTrendインジケーターを使用し,その後,トレンドを追跡するためにCMFインジケーターを使用して確認する.特に,WaveTrendチャネルインデックスが-60未満でCMFが-0.2未満の場合,ロングに行く.WaveTrendチャネルインデックスが60を超え,CMFが-0.2未満の場合,ショートに行く.出口条件は主にCMFインジケーターに基づいている - CMFが-0.18未満でロングポジションを閉じて,CMFが-0.18未満でショートポジションを閉じる.
解決策:
この戦略は,トレンドを決定するためにWaveTrendとCMFを確認するために,超短期的なトレンドフォローのために使用する.その利点は,合理的な指標組み合わせと効果的なトレンドフォローで,15分間のタイムフレームで,短期取引に適している.しかし,不正確な信号や過短な保持期間などのリスクがあります.ストップ損失,パラメータ最適化,より多くの信号フィルタリングなどの将来の改善は,安定性と収益性をさらに高めることができます.
/*backtest start: 2023-11-08 00:00:00 end: 2023-11-15 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "CMF - WaveTrend", shorttitle = "CMF - WaveTrend", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR) //Chaikin Money Flow len = input(20, minval=1, title="Length") mas = input(title="Aggregation", defval="SUM", options=["SUM", "EMA", "WMA"]) e = input(10.0, title="Volume Exponent (0-10 reduces & 10+ increases volume effect)") p = input(false, title="Show in Percentage") mvs = input(false, "Factor in Price (Money Volume)") src=input(hlc3, title="Source for price factor") trl = min(low,close[1]), trh = max(high,close[1]) // 'true range' fixes issues caused by gaps in price wv = pow(volume,e/10.0)*(mvs ? src : 1) ad = (trh==trl ? 0 : (2*close-(trh+trl))/tr(true))*wv cmf = mas=="SUM" ? sum(ad, len)/sum(wv, len) : mas=="EMA" ? ema(ad, len)/ema(wv, len) : mas=="WMA" ? wma(ad, len)/wma(wv, len) : na cmf_p = if p 50*cmf+50 else cmf b = p ? 50 : 0 //WaveTrend n1 = input(10, "Channel Length") n2 = input(21, "Average Length") obLevel1 = input(60, "Over Bought Level 1") obLevel2 = input(53, "Over Bought Level 2") osLevel1 = input(-60, "Over Sold Level 1") osLevel2 = input(-53, "Over Sold Level 2") ap = hlc3 esa = ema(ap, n1) d = ema(abs(ap - esa), n1) ci = (ap - esa) / (0.015 * d) tci = ema(ci, n2) wt1 = tci wt2 = sma(wt1,4) // longCondition = wt1 < -60 and cmf < - 0.20 if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = wt1 > 60 and cmf > 0.20 if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) closeLongCondition = cmf_p > 0.18 ? true : false closeShortCondition = cmf_p < -0.18 ? true : false strategy.close("My Long Entry Id", when=(closeLongCondition == true)) strategy.close("My Short Entry Id", when=(closeShortCondition == true))