ダイナミック・イントラデイ・ロング・ショート・バランス・ストラテジー (Dynamic Intraday Long-Short Balancing Strategy Combining Moving Average and Supertrend) は,パイン・スクリプトTM 5 で書かれた定量的な取引戦略である.この戦略は,市場におけるトレンド機会を把握するためにMACD指標とスーパートレンド指標を使用し,ダイナミック・ロング・ショート・スイッチングとストップ・ロスト/テイク・プロフィートを通じてリスクを制御する.
この戦略の核心は,MACD指標とスーパートレンド指標を組み合わせて市場のトレンド方向性を決定することです.具体的には:
ダイナミックなロング・ショート・スイッチングにより,戦略は市場の変化に適応し,トレンドの機会を把握することができます.同時に,固定時間でのポジション閉じるデザインはリスク制御にも役立ちます.
ダイナミック・イントラデイ・ロング・ショートバランス戦略 (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-----------------////////////////