この戦略は"SMAとEMAに基づく定量取引戦略"と呼ばれる.その主なアイデアは,SMA線とEMA線を異なるパラメータで組み合わせて取引信号を構築することです.
閉じる価格とEMA20のSMA9,SMA50,SMA180を計算する.
閉じる価格とサポートsupとレジスタンスresの関係に基づいて購入と販売シグナルを決定します. 閉じるブレイクがsupを通過すると購入シグナルBuySignalを生成し,閉じるブレイクがresを通過すると販売シグナルSellSignalを生成します.
シグナルトリガーを購入するときは,ロングポジション戦略を実行し,シグナルトリガーを売却する場合はロングポジションを閉じる.
シグナルトリガーを売るときはショートポジション戦略を実行し,シグナルトリガーを購入するときはショートポジションを閉じる.
複数の移動平均値を組み合わせて取引信号を形成することで,正確性と安定性が向上します.
ダイナミックなサポートとレジスタンスを計算することで 取引シグナルがより信頼性が高まります
高,中,低波動性の移動平均を採用すると,長期的傾向と短期的突破の両方を考慮し,戦略の収益性を向上させます.
ロングとショートポジションの両方をサポートすることで,トレンドと横向の市場で利益を得ることができます.
SMAは遅延効果があり,購入・売却の信号を遅らせ,戦略の業績に影響を与える可能性があります.
ストップ・ロスのメカニズムがないので 損失は拡大する可能性があります
バックテストデータ不足で,市場に応じてパラメータを調整する必要がある.
技術的な指標に頼る ブラック・スワン事件に対応できない
解決策:
単一の損失を制御するために,変動に基づくストップ損失を追加します.
傾向判断と信号生成を支援する機械学習モデルを追加します
サポートとレジスタンスの精度を向上させるために キー価格分析を追加します
より良いパラメータを見つけるために 異なるパラメータの組み合わせをテストします
この戦略は,SMAとEMAの技術指標を組み合わせて取引信号を構築し,完全な買い売りロジックを形成するために動的サポートとレジスタンスを計算する.利点は柔軟なパラメータ,双方向取引,異なる市場に適応できるが,遅れや不十分なストップ損失などの問題にも直面する.将来の最適化は,ストップ損失,判断トレンド,安定性と収益性を向上させるキー価格分析などの側面で行うことができる.
]
/*backtest start: 2023-12-10 00:00:00 end: 2023-12-11 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="StrategySMA 9/50/180 | EMA 20 | BUY/SELL", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) //SMA and EMA code smaInput1 = input(9, title="SMA1") smaInput2 = input(50, title="SMA2") smaInput3 = input(180, title="SMA3") emaInput1 = input(20, title="EMA1") sma1 = sma(close, smaInput1) sma2 = sma(close, smaInput2) sma3 = sma(close, smaInput3) EMA1 = ema(close, emaInput1) plot(sma1, color= color.red , title="SMA1") plot(sma2, color = color.blue, title="SMA2") plot(sma3, color= color.white, title="SMA3") plot(EMA1, color = color.yellow, title="EMA1") no=input(3,title="BUY/SELL Swing") Barcolor=input(false,title="BUY/SELL Bar Color") Bgcolor=input(false,title="BUY/SELL Background Color") res=highest(high,no) sup=lowest(low,no) avd=iff(close>res[1],1,iff(close<sup[1],-1,0)) avn=valuewhen(avd!=0,avd,0) tsl=iff(avn==1,sup,res) // Buy/sell signals BuySignal = crossover(close, tsl) SellSignal = crossunder(close, tsl) // Enter long position strategy.entry("Buy", strategy.long, when=BuySignal) // Exit long position strategy.exit("Sell", "Buy", when=SellSignal) // Enter short position strategy.entry("Sell", strategy.short, when=SellSignal) // Exit short position strategy.exit("Buy", "Sell", when=BuySignal) colr = close>=tsl ? color.green : close<=tsl ? color.red : na plot(tsl, color=colr)