動向平均値とスーパートレンドを組み合わせたダイナミックな日中の長期短期バランス戦略

作者: リン・ハーンチャオチャン,日付: 2024-03-11 11時33分47秒
タグ:

img

戦略の概要

ダイナミック・イントラデイ・ロング・ショート・バランス・ストラテジー (Dynamic Intraday Long-Short Balancing Strategy Combining Moving Average and Supertrend) は,パイン・スクリプトTM 5 で書かれた定量的な取引戦略である.この戦略は,市場におけるトレンド機会を把握するためにMACD指標とスーパートレンド指標を使用し,ダイナミック・ロング・ショート・スイッチングとストップ・ロスト/テイク・プロフィートを通じてリスクを制御する.

戦略の原則

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

  1. スーパートレンド指標を使用して現在のトレンド方向を決定します. スーパートレンド指標が変化すると,トレンドの逆転を示します.
  2. MACD インディケーターのヒストグラムを使用してモメントの変化を判断する.MACD ヒストグラムがマイナスから正に転移すると,上向きモメントの増加を示します.MACD ヒストグラムが正から負に転移すると,下向きモメントの増加を示します.
  3. スーパートレンド指標とMACD指標の両方が長信号を出しているときにロングポジションを開く. スーパートレンド指標とMACD指標の両方が短信号を出しているときにショートポジションを開く.
  4. すべてのポジションを各取引日の固定時間 (15時15分など) に閉じて,一夜間のリスクを回避する.
  5. 新しい取引日 (例えば9時30分) に Supertrend インジケーターと MACD インジケーターの指示に従ってポジションを再開する.

ダイナミックなロング・ショート・スイッチングにより,戦略は市場の変化に適応し,トレンドの機会を把握することができます.同時に,固定時間でのポジション閉じるデザインはリスク制御にも役立ちます.

戦略 の 利点

  1. トレンド追跡:スーパートレンド指標とMACD指標を組み合わせることで,戦略は市場のトレンド機会を効果的に把握することができます.
  2. ダイナミック・ロング・ショート・スイッチング: 戦略は,指標の変化に応じてポジション方向を動的に調整し,市場の変化に適応します.
  3. リスク管理: 固定時間でのポジション閉鎖とダイナミックなロングショートスイッチを通じて,戦略はリスクを比較的うまくコントロールすることができます.
  4. パラメータの柔軟性:戦略のパラメータ (ATR期間,因子など) は,市場特性と個人の好みに合わせて調整され,一定の柔軟性があります.

戦略リスク

  1. インディケーターの失敗リスク:一部の市場環境では,MACDインディケーターとスーパートレンドインディケーターは誤った信号を与え,戦略の失敗につながる可能性があります.
  2. パラメータ最適化リスク: 戦略のパフォーマンスはパラメータの選択に依存し,不適切なパラメータは戦略のパフォーマンスが低下する可能性があります.
  3. ストップ・ロスのリスク: 戦略には明示的なストップ・ロスのロジックがないため,極端な市場環境では大きな損失を引き起こす可能性があります.
  4. オブナイトリスク: 戦略は日中にポジションを閉じるが,オブナイト・ギャップのリスクは,オブナイト・ポジションを開設する際に発生する可能性がある.

オプティマイゼーションの方向性

  1. ストップ・ロスのロジックを追加:リスクをさらに制御するために,固定パーセントストップ・ロスやATRストップ・ロスなどの明示的なストップ・ロスのロジックを戦略に追加します.
  2. パラメータ最適化:戦略の安定性と収益性を向上させるために,ATR期間,因子,MACDパラメータなど,戦略の主要なパラメータを最適化します.
  3. シグナルフィルタリング: 信号の信頼性を向上させるために,価格ブレイク,取引量など,より多くのシグナルフィルタリング条件を追加します.
  4. 多市場テスト: 戦略の適用性と安定性を評価するために,異なる市場と手段で戦略をテストする.

概要

ダイナミック・イントラデイ・ロング・ショートバランス戦略 (Dynamic Intraday Long-Short Balancing Strategy Combining Moving Average and Supertrend) は,トレンド追跡とモメント判断に基づく取引戦略である.スーパートレンド指標とMACD指標を組み合わせ,ポジション方向を動的に調整することで,戦略は市場の変化に適応し,トレンド機会を把握することができる.同時に,固定時間にポジションを閉じるデザインは,一夜間のリスクを制御するのに役立ちます.

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

一般的に,動向平均とスーパートレンドを組み合わせたダイナミック・イントラデイ・ロング・ショートバランス戦略は,トレンド追跡とリスク管理のための考え方を提供している.実用的な応用では,トレーダーは自身のリスク好みと市場特性に基づいて戦略に適切な調整と最適化を行い,慎重に使用すべきである.定量的な取引戦略は取引アイデアを提供することができるが,市場は常に変化しており,いかなる戦略も利益を保証することはできません.投資家は戦略の原則とリスクを理解し,ポジションを合理的に制御し,損失を厳密に停止し,長期的に市場で生き残るために常に警戒し続けなければなりません.


/*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-----------------////////////////



もっと