チャンネルブレイク SMA戦略

作者: リン・ハーンチャオチャン,日付: 2023-10-23 17:08:51
タグ:

img

概要

この戦略はチャネルブレークアウトに基づい,移動平均クロスオーバーを出口信号として使用する.先物とインデックスでうまく機能する.

戦略の論理

  1. 特定の期間の最高高と最低低を計算して上下チャネルを構成します

  2. 価格が上方チャネルを突破するとロング;価格が下方チャネルを突破するとショート.

  3. 速くて遅い SMA線を計算する

  4. 長い場合,高速SMAが遅いSMAを下回るときに長い閉じる.短い場合,高速SMAが遅いSMAを下回るときに短い閉じる.

利点分析

  1. チャンネルと移動平均を組み合わせることで 収益性が向上します

  2. チャンネルは回転を判断し SMAはトレンドの疲労を判断します

  3. SMAフィルタは,ウィップソウを避け,不必要な取引を減らす.

  4. 調整可能なチャネル範囲は,異なる期間と変動に対応します.

リスク分析

  1. 誤ったチャネル範囲で ブレイクが逃れられ 偽ブレイクが発生する可能性があります

  2. 誤った SMA パラメータは早か遅か出ます

  3. 単一の損失を制限するために合理的な位置サイズが必要です.

  4. 高値/低値で売るのを避ける

最適化

  1. チャンネル範囲とSMA期間を最適化するためのテストパラメータ

  2. トレンドフィルターを追加して ブレイクアウトの成功率を向上させる

  3. 固定分数やマルティンゲールなどのポジションサイズを追加します.

  4. 単一の損失を制御するためにストップ損失を追加します.

概要

この戦略は,強いトレンドで安定した利益を達成するために,チャネルと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)

もっと