移動平均とスーパートレンドを組み合わせた日中ロングショートダイナミックバランス戦略


作成日: 2024-03-11 11:33:47 最終変更日: 2024-03-11 11:33:47
コピー: 0 クリック数: 692
1
フォロー
1617
フォロワー

移動平均とスーパートレンドを組み合わせた日中ロングショートダイナミックバランス戦略

戦略概要

平均線と超トレンドを組み合わせた1日間の多空動的バランス戦略は,Pine ScriptTM 5を基に書かれた定量取引戦略である.この戦略は,MACD指標と超トレンド指標を使用して,市場のトレンドの機会を捉え,同時に,ダイナミックな多空の切り替えと損失の停止を介してリスクを制御する.

戦略原則

この戦略の核心は,市場のトレンド方向を判断するために,MACD指標とスーパートレンド指標を組み合わせることです.具体的には:

  1. 超トレンド指標を用いて現在のトレンドの方向を判断する.超トレンド指標が変化したとき,トレンドが逆転したことを示す.
  2. MACD指標の柱状図を用いて動力の変化を判断する.MACD柱状図は,負の正転から,上動力の強化を示し,MACD柱状図は,正の負転から,下動力の強化を示している.
  3. 超トレンド指数とMACD指数が同時に多行シグナルを発信するとき,多行を開く.超トレンド指数とMACD指数が同時に空行シグナルを発信するとき,空行を開く.
  4. 取引日の固定時間 (例えば15時15分) にすべてのポジションをクリアし,夜間リスクを回避します.
  5. 新しい取引日 (例えば9:30) に,スーパートレンド指数とMACD指数の指示に従って,ポジションを再開する.

ダイナミックな多空の切り替えにより,この戦略は市場の変化に適応し,トレンドの機会を捉えることができます.同時に,固定時間平仓の設計は,リスクを制御するのに役立ちます.

戦略的優位性

  1. トレンド追跡:超トレンド指数とMACD指数を組み合わせることで,この戦略は市場のトレンドの機会を効果的に捉えることができます.
  2. ダイナミック多空スイッチ:この戦略は,指標の変化のダイナミックに合わせてポジションの方向を調整し,市場の変化に適応する.
  3. リスク管理: 固定時間平仓と多空動的切替により,この戦略はリスクをより良く管理することができる.
  4. パラメータの柔軟性:この戦略のパラメータ (ATR周期,因子など) は,市場特性と個人の好みに応じて調整され,一定の柔軟性があります.

戦略リスク

  1. 指数失敗のリスク:特定の市場環境では,MACD指数とスーパートレンド指数が誤った信号を発し,戦略の失敗を引き起こす可能性があります.
  2. パラメータ最適化リスク:この戦略のパフォーマンスはパラメータの選択に依存し,不適切なパラメータは戦略の不良なパフォーマンスを引き起こす可能性があります.
  3. ストップ・ローズリスク:この戦略には明確なストップ・ローズロジックがないため,極端な市場環境で大きな損失を招く可能性があります.
  4. 夜間リスク:この戦略は,日中にポジションをクリアするものの,夜間ポジションを開設すると,夜間ギャップのリスクに直面する可能性があります.

最適化の方向

  1. ストップロジックを増やす: 固定パーセントストップやATRストップなどの明確なストップロジックを戦略に追加し,リスクをさらに制御する.
  2. パラメータ最適化:戦略の安定性および収益性を高めるために,ATR周期,因子,MACDパラメータなどの戦略の重要なパラメータを最適化する.
  3. 信号フィルター: 信号の信頼性を高めるために,価格の突破,取引量などのより多くの信号フィルター条件を追加します.
  4. マルチマーケットテスト:戦略を異なる市場と品種でテストし,その適用性と安定性を評価する.

要約する

平均線と超トレンドを組み合わせた日中の多空の動的均衡戦略は,トレンド追跡と動的判断に基づいた取引戦略である.超トレンド指標とMACD指標を組み合わせて,ポジションの方向を動的に調整することで,この戦略は,市場の変化に適応し,トレンドの機会を捕捉することができる.同時に,固定時間平仓の設計は,夜間のリスクを制御するのに役立ちます.

しかし,この戦略には,指標失敗リスク,パラメータ最適化リスク,ストップダスのリスクなど,いくつかのリスクと欠陥があります. この戦略をさらに完善するために,ストップダスのロジックを追加し,パラメータ最適化,より多くの信号フィルタリング条件を追加し,複数の市場でのテストなどを検討することができます.

全体として,均線と超トレンドを組み合わせた1日間の多空動的均衡戦略は,トレンド追跡とリスク制御のための考え方を提供します.実際の適用では,トレーダーは,自身のリスク好みと市場の特性を組み合わせて,戦略を適切に調整し,最適化し,慎重に使用する必要があります.量化取引戦略は,取引方法を提供することができますが,市場は瞬時に変化します.いかなる戦略も,利益の投資を保証することはできません.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © smj31071995

//@version=5
strategy("EQ - INTRA - Samsuga supertrend prod", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick = false)


atrPeriod = input.int(7,    "ATR Length", minval = 1)
factor =    input.float(1.0, "Factor",     minval = 0.01, step = 0.01)
st_tf = "3"
macd_tf="30"

[supertrend, direction] =request.security(symbol = syminfo.tickerid, timeframe = st_tf,expression =  ta.supertrend(factor, atrPeriod),lookahead=barmerge.lookahead_on)

supertrend := barstate.isfirst ? na : supertrend
upTrend =    plot(direction <= 0 ? supertrend : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend =  plot(direction <= 0 ? na : supertrend, "Down Trend", color = color.red,   style = plot.style_linebr)
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)
longcondition = direction[1] > direction 
shortCondition = direction[1] < direction 

macdp1 = 2
macdp2=8
macdp3=4

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = macd_tf,expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
timezone_input = input("Asia/Kolkata", title="Timezone")
// log.info(timezone_input)
if(hour==15 and minute==15)
    strategy.close_all(comment = "DAY EXIT",alert_message = "X-D")
else if(hour==9 and minute==30)
    if(longcondition or histLine[1]>0)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "DL",alert_message = "L")
    else if(shortCondition or histLine[1]<0) 
        strategy.entry(id= "Short", direction=strategy.short,  comment = "DS",alert_message = "S")
else
    if(longcondition)
        strategy.close("Short",comment = "X-S", alert_message = "X-S")
        if(histLine[1]>0)    
            strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
    else if(shortCondition) 
        strategy.close("Long",comment = "X-L",alert_message = "X-L")
        if(histLine[1]<0)    
            strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")


// plot(macdLine,   title = "MACD",   color = #2962FF)
// plot(signalLine, title = "Signal", color = #FF6D00)
// 8, 21, 5
// 8,13,9
// 12,26,9
//  1--> 3, 17, 5
// 3, 10, 16
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
//  /////////----------------METHOD 1-----------------////////////////
// if(longcondition)
//     if(strategy.opentrades>0)
//         strategy.close("Long","Prev Exit", immediately = true)
//     if( histLine[0] > 0.1)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long")

    
// else if(shortCondition and strategy.openprofit<=0.1) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 2-----------------////////////////
// if(longcondition)
//     if(histLine[0] > 0)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long" )
//         strategy.exit("Long", loss = close*0.2)


    
// else if(shortCondition ) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 3-----------------////////////////