この戦略はチャネルブレークアウトに基づい,移動平均クロスオーバーを出口信号として使用する.先物とインデックスでうまく機能する.
特定の期間の最高高と最低低を計算して上下チャネルを構成します
価格が上方チャネルを突破するとロング;価格が下方チャネルを突破するとショート.
速くて遅い SMA線を計算する
長い場合,高速SMAが遅いSMAを下回るときに長い閉じる.短い場合,高速SMAが遅いSMAを下回るときに短い閉じる.
チャンネルと移動平均を組み合わせることで 収益性が向上します
チャンネルは回転を判断し SMAはトレンドの疲労を判断します
SMAフィルタは,ウィップソウを避け,不必要な取引を減らす.
調整可能なチャネル範囲は,異なる期間と変動に対応します.
誤ったチャネル範囲で ブレイクが逃れられ 偽ブレイクが発生する可能性があります
誤った SMA パラメータは早か遅か出ます
単一の損失を制限するために合理的な位置サイズが必要です.
高値/低値で売るのを避ける
チャンネル範囲とSMA期間を最適化するためのテストパラメータ
トレンドフィルターを追加して ブレイクアウトの成功率を向上させる
固定分数やマルティンゲールなどのポジションサイズを追加します.
単一の損失を制御するためにストップ損失を追加します.
この戦略は,強いトレンドで安定した利益を達成するために,チャネルとSMAをキャピタライズする.しかし,ウィップソー損失を避ける必要があるし,ポジションサイズ化が重要です.パラメータチューニング,シグナルフィルタリング,リスク管理のさらなる改善は強度を改善します.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-13 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © anshuanshu333 //@version=4 // strategy("ChBrkOutStrategySMA", overlay=true, initial_capital = 200000) length = input(title="Length", type=input.integer, minval=1, maxval=1000, defval=7) fastSMA = sma(close,9) slowSMA = sma(close,21) upBound = highest(high, length) downBound = lowest(low, length) boundLongEntry = ((close >= upBound) or (high >= upBound)) and fastSMA>slowSMA and (close > open) boundShortEntry =((close <= downBound) or (low <= downBound)) and fastSMA<slowSMA and (close <open) u=plot(upBound, title = "Upper Bound",color=color.blue, linewidth=1) l=plot(downBound, title = "Lower Bound",color=color.red, linewidth=1) plot(fastSMA,title = "Fast SMA", color = color.red, linewidth =2) plot(slowSMA,title = "Slow SMA" ,color = color.green, linewidth =1) fill(u,l, transp=95) plot(avg(upBound,downBound), title = "Avg", color=color.gray,linewidth =1) if (boundLongEntry ) strategy.entry("LE", long = true) if (boundShortEntry) strategy.entry("SE", long = false) SmaLongExit = crossunder(fastSMA,slowSMA) SmaShortExit = crossover(fastSMA,slowSMA) //Close TRades if (strategy.position_size > 0) strategy.close(id="LE",when= SmaLongExit) if (strategy.position_size < 0) strategy.close(id="SE",when= SmaShortExit)