
この戦略は,線形回帰指数と二次指数移動平均を組み合わせて,ショートライン追跡操作を実現する. この戦略は,価格が上下軌道に突破したときにポジションを空け,価格が再び突破したときに平仓する. 同時に,この戦略は,二次指数移動平均を使用して価格の傾向を判断し,ポジションの補助条件として使用する.
この策略は,主に線形回帰指標によって価格の突破を判断する.線形回帰指標は,線形回帰法を使用して,特定の周期内の最高価格と最低価格に基づいて計算された上下軌道である.価格が上下軌道から突破したり,下下軌道から突破したりするときは,取引信号であると考えます.
さらに,この戦略は,二指数移動平均が中間トレンドを判断することを導入している. 二指数移動平均は,価格の変化により迅速に反応することができる. 上線から下線に突破するときに,この時点で二指数移動平均がすでに価格の上にある場合,現在の下降傾向にあることを示し,この時点で空白ポジションを確立します.
具体的には,戦略は以下の通りです.
従来の移動平均などの指標に比べて,この戦略は以下の利点があります.
この戦略にはいくつかのリスクがあります.
このリスクについては,パラメータ最適化,厳格な止損,適正な突破幅の緩和などで対処できます.
この戦略は,以下の点で最適化できます.
この戦略は,線形回帰指数と二次指数移動平均を総合的に使用しており,理論上および実践上には一定の優位性がある.継続的な最適化調整によって,安定性と戦略の効果をさらに向上させることができる.この戦略は,ショートライン操作に適しており,量化トレーダーに優れたアルファをもたらす.
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy('LR&SSL_Short', overlay=true)
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end = timestamp(9999,1,1,0,0)
_testPeriod() => true
len = input(title="Period", defval=89)
smaHigh = linreg(high, len, 0)
smaLow = linreg(low, len, -1)
Hlv = 0.0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh
plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)
length = input(200, title="DEMA")
d1 = ema(close, length)
d2 = 2 * d1 - ema(d1, length)
trendColour = d2 > d1 ? #AAFFAA : #FFAAAA
dema=sma(d2,length)
turnGreen = d2 > d1 and d2[1] <= d1[1]
turnRed = d2 <= d1 and d2[1] > d1[1]
up =turnGreen
down=turnRed
plotshape(down, title="down", style=shape.triangledown,location=location.abovebar, color=color.red, transp=0, size=size.small)
plotshape(up, title="up", style=shape.triangleup,location=location.belowbar, color=color.green, transp=0, size=size.small)
plot(dema, color = trendColour,linewidth=3 ,transp = 0)
bgcolor(close > dema ? color.green : color.red)
strategy.entry("short", strategy.short, when= crossunder(sslUp, sslDown) and dema > close and _testPeriod())
strategy.close("short", when = crossover(sslUp, sslDown) or crossover(close, dema))