この戦略は,動的チャネルと移動平均トレンド追跡の原則に基づいて設計されています.動的価格チャネルを計算し,チャネルの上下レールを通じてトレンド方向を判断し,移動平均を組み合わせて価格変動をフィルターすることで取引信号を生成します.この戦略は,中期および短期間のトレンド取引に適しています.
この戦略の主な原則は以下のとおりです.
動的価格チャネルを計算する.チャネルの中間線は,最高価格と最低価格から計算される.上部のレールは中間線 + 価格変動MA,下部のレールは中間線 - 価格変動MAである.
トレンド方向を判断します.価格が上部レールを破ると,それは上昇傾向と定義されます.価格が下部レールを破ると,それは下落傾向と定義されます.
フィルターノイズ. ランダムな価格変動からノイズをフィルターするために,特定の期間の価格変動MAを使用します.
取引シグナルを生成する.上昇傾向の場合,閉じる価格が開く価格よりも低いときに購入信号が生成される.下落傾向の場合,閉じる価格が開く価格よりも高いときに販売信号が生成される.
この戦略の利点は次のとおりです.
この戦略のリスクは次のとおりです.
解決策:
戦略は次の側面で最適化できます.
この戦略は,ダイナミックチャネルとMAトレンド判断のアイデアを統合し,中期および短期間のトレンド方向を把握するのに良好なパフォーマンスを発揮しています.しかし,より多くの市場状況に適応するためにさらなるテストと最適化が必要ないくつかの制限があります.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Strategy v1.0", shorttitle = "NoroBands str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period") color = input(true, "Color") needbb = input(false, defval = false, title = "Show Bands") needbg = input(false, defval = false, title = "Show Background") src = close //PriceChannel 1 lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 //dist dist = abs(src - center) distsma = sma(dist, len) hd = center + distsma ld = center - distsma //Trend trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1] //Lines colo = needbb == false ? na : black plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 90) //up = and trend == 1 ? 1 : 0 //dn = and trend == -1 ? 1 : 0 up = close < hd and trend == 1 and (close < open or color == false) ? 1 : 0 dn = close > ld and trend == -1 and (close > open or color == false) ? 1 : 0 longCondition = up == 1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na)