
この戦略は,快線EMAと慢線EMAの交差を計算することによって,黄金交差と死交差の取引信号の生成を実現します.快線EMA上を慢線EMAを横切ると,買い信号を生じ,快線EMA下を慢線EMAを横切ると,売り信号を生じます.この戦略は,移動平均の優位性を十分に利用し,市場トレンドを効果的に追跡することができ,トレンド開始段階で取引信号を生成します.
この戦略の核心指標は,急速EMA線と遅いEMA線である.この戦略は,2つの異なるパラメータのEMA線を設定することによって行われる.急速EMA線は10に設定され,遅いEMA線は20に設定される.そのうち,10日間のEMA線は,価格の変化により迅速に反応し,20日間の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)