振動ブレークスルー移動平均追跡戦略


作成日: 2023-10-30 11:39:31 最終変更日: 2023-10-30 11:39:31
コピー: 1 クリック数: 629
1
フォロー
1617
フォロワー

振動ブレークスルー移動平均追跡戦略

この戦略は,均等線の突破を追跡し,揺れ動いた市場において持続的な利益を実現します.

戦略原則

この戦略は,主に均線の突破原理に基づいてポジションを構築し,MAを集積した多重均線を使用して,主均線を形成する.価格が主均線を破るとき,取引信号を生成する.

具体的には,戦略は60周期のWMA双動平均を主平均線として採用する. 同時に,価格の実際の波動範囲を計算し,上下チャネルを描画する.価格が上軌を突破すると看板になり,下軌を突破すると看板になる.

突破の基礎では,戦略はまた,RSI指標とEMA指標を補助判断のために導入し,RSI>50で価格がEMAより高い場合,RSI<50で価格がEMAより低い場合,空白を要求し,偽の突破を避ける.

さらに,戦略は三重均線の強弱な状態を利用して,ポジションを終了する判断をする.三重均線形成が弱弱であるとき ((-1),退出点を逆転突破通路として選択する.

戦略的優位性

  • MAの多重平均線を用いて,価格の変化を効率的に平滑化し,トレンドの方向を識別する
  • チャンネルの突破取引により,地震の時により大きな利益を得ることができます.
  • RSIとEMAを組み合わせて,偽の突破信号をフィルタリングする補助判断
  • 三重均線状態を利用して適切な退出点判断し,衰退を回避する.

戦略リスク

  • 大幅な振動の状況では,MA主平均線は偽突破を多く発生させる可能性があります.
  • 脱退のタイミングは不正確かもしれない
  • RSIパラメータの不適切な設定により,取引頻度が高すぎます.

MA周期パラメータの最適化,三重平均線設定の調整,RSIパラメータの慎重な使用などの方法によってリスクを減らすことができます.

戦略最適化の方向性

  • MA周期パラメータを最適化して,より適切な主平均線周期を探す
  • KDJ,MACDなどのRSIを補う様々な補助指標を試す
  • 三重平均線パラメータを調整し,より正確な反転時刻を探す
  • 単一取引のリスクをコントロールするストップ・ロスの追加

要約する

この戦略は,全体として,震動行情に非常に適した突破策である.その核心構想は,MAを突破してポジションを構築し,トレンド指数フィルターで補足し,震動行情で継続的に利益を得るものである.同時に,三重均線判断逆転時機を早期退出する.この戦略の最適化スペースは大きい.パラメータの調整,場への退出などの面で最適化することができる.震動行情で優れた効果を得ることができる.

ストラテジーソースコード
/*backtest
start: 2022-10-23 00:00:00
end: 2023-03-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/



//@version=5

//exapple bot
strategy('RIPO BOT', shorttitle='RIPO BOT', overlay=true, process_orders_on_close=true, calc_on_order_fills=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
sl_inp = input(0.1, title='Stop Loss %') / 100
tp_inp = input(0.33, title='Take Profit %') / 100

length = input(defval=21)
upper = ta.highest(length)
lower = ta.lowest(length)

lengthChop = input.int(14, minval=1)
ci = 100 * math.log10(math.sum(ta.atr(1), lengthChop) / (ta.highest(lengthChop) - ta.lowest(lengthChop))) / math.log10(lengthChop)
offset = input.int(0, "Offset",  minval = -500, maxval = 500)
plot(ci, "CHOP", color=#2962FF, offset = offset)
band1 = hline(61.8, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(50, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(38.2, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color = color.rgb(33, 150, 243, 90), title = "Background")

rsi = ta.rsi(close, 14)

var float entry_price = na

output = 100 * (close - upper) / (upper - lower)
ema = ta.ema(output, input(defval=13, title='EMA'))

ma(src, len) =>
    ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))
BBMC = ma(close, 60)
rangema = ta.ema(ta.tr, 60)
upperk = BBMC + rangema * 0.2
lowerk = BBMC - rangema * 0.2
color_bar = close > upperk ? color.blue : close < lowerk ? color.fuchsia : color.gray

ExitHigh = ma(high, 15)
ExitLow = ma(low, 15)
Hlv3 = int(na)
Hlv3 := close > ExitHigh ? 1 : close < ExitLow ? -1 : Hlv3[1]
sslExit = Hlv3 < 0 ? ExitHigh : ExitLow
base_cross_Long = ta.crossover(close, sslExit)
base_cross_Short = ta.crossover(sslExit, close)
codiff = base_cross_Long ? 1 : base_cross_Short ? -1 : na
entry_long = false

entry_short = false

    
if ta.crossover(close, BBMC) and output > ema
    entry_long := true
    
if ta.crossunder(close, BBMC) and output < ema
    entry_short := true

if entry_long and strategy.position_size == 0
    entry_price := close
    strategy.entry('enter long', strategy.long, comment='ENTER-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size > 0
    strategy.exit('Stop Loss/TP long', 'enter long', limit=entry_price * (1 + tp_inp), stop = color_bar == color.fuchsia ? BBMC : na, comment='EXIT-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))


//if entry_short and strategy.position_size == 0
    //entry_price := close
    //strategy.entry('enter short', strategy.short, comment='ENTER-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size < 0
    strategy.exit('Stop Loss/TP short', 'enter short', limit=entry_price * (1 - tp_inp), stop = color_bar == color.blue ? BBMC : na, comment='EXIT-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))
// plot(entry_price * (1 - sl_inp), color=color.new(color.red, 0))

plot(rsi, color=color.yellow)

plot(output, title='%R', color=color.new(color.yellow, 0), linewidth=2)
plot(ema, title='EMA', color=color.new(color.aqua, 0), linewidth=2)

plotarrow(codiff, colorup=color.new(color.blue, 35), colordown=color.new(color.fuchsia, 35), title='Exit Arrows', maxheight=20, offset=0)
plot(BBMC, color=color_bar, linewidth=4, title='MA Trendline')