この戦略は,高速EMAラインと遅いEMAラインのクロスオーバーに基づいて取引信号を生成する.高速EMAラインが遅いEMAラインの上を横切ると,購入信号が生成される.高速EMAラインが遅いEMAラインを下を横切ると,販売信号が生成される.この戦略は,動平均の利点を利用して,市場のトレンドを効果的に追跡し,トレンド開始時に取引信号を生成する.
この戦略のコアインジケーターは,高速EMAラインと遅いEMAラインである.この戦略は,異なるパラメータを持つ2つのEMAラインを設定し,高速EMAは10で,遅いEMAは20である.10日間のEMAラインは価格変化により速く反応し,20日間のEMAラインはよりゆっくり反応する.短期EMAラインが長期EMAラインを越えると,短期平均線が長期EMAラインを上向きにリードし始めることを意味し,市場が牛状態に移行する可能性がある.この時点で,購入信号が生成される.逆に,ショートEMAがロングEMAを下回ると,ショートEMAがロングEMAよりも先立ってリード力を失い始めることを意味し,市場が熊状態に移行する可能性がある.したがって,販売信号が生成される.
この戦略は,EMAの高速・遅い EMA線間のクロスオーバーロジックを利用することで,市場のトレンドの切り替え点を及時に把握し,それに応じて取引信号を生成する.一方,EMA自体は,誤った信号をフィルタリングし,市場の統合中に過剰な取引を回避する能力を備えている.これは,戦略が間違った取引を削減しながら市場転換点を把握することを可能にし,優れた収益性につながる.
これらのリスクに対処するために,フィルタリングルールを追加し,誤った信号を避けるためにMACDを組み合わせ,応答を加速するために適応型EMAを使用するなど,最適化が導入できます.また,適切なストップ・ロストと利益取りメカニズムも必要です.
さらに最適化するための潜在的な方向性には,以下が含まれます.
この戦略は,デュアルEMAラインのクロスオーバーロジックを通じて重要な市場ターニングポイントを把握し,ライブ取引に有効にします.追加のフィルター,アシスタントインジケーター,ストップロスの最適化により,戦略の安定性がさらに強化できます. 戦略ロジックは,拡張と改善の可能性が豊富で,量子トレーダーにとってシンプルで学ぶ価値がある.
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Backtest single EMA cross", overlay=true) qty = input(100000, "Buy quantity") testStartYear = input(2019, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testStartMin = input(0, "Backtest Start Minute") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin) testStopYear = input(2099, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #00FF00 : na testPeriod() => true ema1 = input(10, title="Select EMA 1") ema2 = input(20, title="Select EMA 2") expo = ema(close, ema1) ma = ema(close, ema2) avg_1 = avg(expo, ma) s2 = cross(expo, ma) ? avg_1 : na //plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0) p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0) p2 = plot(ma, color=color.orange, linewidth=2, transp=0) fill(p1, p2, color=color.white, transp=80) longCondition = crossover(expo, ma) shortCondition = crossunder(expo, ma) if testPeriod() strategy.entry("Long", strategy.long, when=longCondition) strategy.entry("Short", strategy.short, when=shortCondition) plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0) plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)