
Стратегия динамического торга - это стратегия торговли на средне- и коротких линиях, которая сочетает в себе индикаторы движущихся средних и модель формы K-линии для обнаружения торговых возможностей путем идентификации точек прорыва и точек реверсии. Эта стратегия применима для торговли высоко-ливеринговыми финансовыми продуктами, такими как опционы на взвешивание, опционы на взвешивание и фьючерсы.
Центральная логика этой стратегии основана на 5-дневных простых движущихся средних. Когда цена должна преодолеть эту среднюю, образуется высокая точка или низкая точка K-линии, которая является потенциальным сигналом о покупке или продаже. Когда цена преодолевает среднюю, вторая линия K-линии закрывается, если не нарушается минимальная цена или высокая цена предыдущей линии K-линии.
Когда цена закрывается, когда она превышает 5-дневную среднюю линию, максимальная цена предыдущего прорыва K-линии является остановкой, а минимальная цена за вычетом определенного диапазона отклонения умножена на риск-возвращение в качестве цели остановки. Когда цена закрывается, когда она превышает 5-дневную среднюю линию, минимальная цена предыдущего прорыва K-линии является остановкой, максимальная цена плюс определенный диапазон отклонения умножена на риск-возвращение в качестве цели остановки.
Эта стратегия также предоставляет опциональное условие фильтрации, то есть закрытие текущей K-линии должно быть немного ниже или немного выше по сравнению с выскочной K-линией, что позволяет избежать частичного ошибочного сигнала.
Снижение риска может быть достигнуто с помощью рационального остановки убытков, адекватного смягчения позиций, выбора низкочастотных торгов. Также можно рассмотреть возможность фильтрации сигналов в сочетании с другими показателями.
В целом, эта стратегия является легкой для понимания и реализации. Она использует движущиеся средние и K-линии, чтобы идентифицировать переломные моменты в тренде и работать в рамках рационального контроля риска. Хотя все еще есть место для улучшения, ее основные идеи универсальны и заслуживают изучения и применения.
/*backtest
start: 2024-01-18 00:00:00
end: 2024-01-25 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TradingInsights2
//@version=5
strategy("Ultimate 5EMA Strategy By PowerOfStocks", overlay=true)
Eusl = input.bool(false, title="Enable the Extra SL shown below")
usl = input.int(defval=5, title='Value to set SL number of points below-low or above-high', minval=1, maxval=100)
RiRe = input.int(defval=3, title='Risk to Reward Ratio', minval=1, maxval=25)
ShowSell = input.bool(true, 'Show Sell Signals')
ShowBuy = input.bool(false, 'Show Buy Signals')
BSWCon = input.bool(defval=false, title='Buy/Sell with Extra Condition - candle close')
// Moving Average
ema5 = ta.ema(close, 5)
pema5 = plot(ema5, '5 Ema', color=color.new(#da1a1a, 0), linewidth=2)
var bool Short = na
var bool Long = na
var shortC = 0
var sslhitC = 0
var starhitC = 0
var float ssl = na
var float starl = na
var float star = na
var float sellat = na
var float alert_shorthigh = na
var float alert_shortlow = na
var line lssl = na
var line lstar = na
var line lsell = na
var label lssllbl = na
var label lstarlbl = na
var label lselllbl = na
var longC = 0
var lslhitC = 0
var ltarhitC = 0
var float lsl = na
var float ltarl = na
var float ltar = na
var float buyat = na
var float alert_longhigh = na
var float alert_longlow = na
var line llsl = na
var line lltar = na
var line lbuy = na
var label llsllbl = na
var label lltarlbl = na
var label lbuylbl = na
ShortWC = low[1] > ema5[1] and low[1] > low and shortC == 0 and close < close[1]
ShortWOC = low[1] > ema5[1] and low[1] > low and shortC == 0
Short := BSWCon ? ShortWC : ShortWOC
sslhit = high > ssl and shortC > 0 and sslhitC == 0
starhit = low < star and shortC > 0 and starhitC == 0
LongWC = high[1] < ema5[1] and high[1] < high and longC == 0 and close > close[1]
LongWOC = high[1] < ema5[1] and high[1] < high and longC == 0
Long := BSWCon ? LongWC : LongWOC
lslhit = low < lsl and longC > 0 and lslhitC == 0
ltarhit = high > ltar and longC > 0 and ltarhitC == 0
if Short and ShowSell
shortC := shortC + 1
sslhitC := 0
starhitC := 0
alert_shorthigh := high[1]
if Eusl
ssl := high[1] + usl
starl := BSWCon ? ((high[1] - close) + usl) * RiRe : ((high[1] - low[1]) + usl) * RiRe
else
ssl := high[1]
starl := BSWCon ? (high[1] - close) * RiRe : (high[1] - low[1]) * RiRe
star := BSWCon ? close - starl : low[1] - starl
sellat := BSWCon ? close : low[1]
// lssl := line.new(bar_index, ssl, bar_index, ssl, color=color.new(#fc2d01, 45), style=line.style_dashed)
// lstar := line.new(bar_index, star, bar_index, star, color=color.new(color.green, 45), style=line.style_dashed)
// lsell := line.new(bar_index, sellat, bar_index, sellat, color=color.new(color.orange, 45), style=line.style_dashed)
// lssllbl := label.new(bar_index, ssl, style=label.style_none, text='Stop Loss - Short' + ' (' + str.tostring(ssl) + ')', textcolor=color.new(#fc2d01, 35), color=color.new(#fc2d01, 35))
// lstarlbl := label.new(bar_index, star, style=label.style_none, text='Target - Short' + ' (' + str.tostring(star) + ')', textcolor=color.new(color.green, 35), color=color.new(color.green, 35))
// lselllbl := label.new(bar_index, sellat, style=label.style_none, text='Sell at' + ' (' + str.tostring(sellat) + ')', textcolor=color.new(color.orange, 35), color=color.new(color.orange, 35))
if sslhit == false and starhit == false and shortC > 0
// line.set_x2(lssl, bar_index)
// line.set_x2(lstar, bar_index)
// line.set_x2(lsell, bar_index)
sslhitC := 0
starhitC := 0
else
if sslhit
shortC := 0
sslhitC := sslhitC + 1
else
if starhit
shortC := 0
starhitC := starhitC + 1
if Long and ShowBuy
longC := longC + 1
lslhitC := 0
ltarhitC := 0
alert_longlow := low[1]
if Eusl
lsl := low[1] - usl
ltarl := BSWCon ? ((close - low[1]) + usl) * RiRe : ((high[1] - low[1]) + usl) * RiRe
else
lsl := low[1]
ltarl := BSWCon ? (close - low[1]) * RiRe : (high[1] - low[1]) * RiRe
ltar := BSWCon ? close + ltarl : high[1] + ltarl
buyat := BSWCon ? close : high[1]
llsl := line.new(bar_index, lsl, bar_index, lsl, color=color.new(#fc2d01, 45), style=line.style_dotted)
lltar := line.new(bar_index, ltar, bar_index, ltar, color=color.new(color.green, 45), style=line.style_dotted)
lbuy := line.new(bar_index, buyat, bar_index, buyat, color=color.new(color.orange, 45), style=line.style_dotted)
llsllbl := label.new(bar_index, lsl, style=label.style_none, text='Stop Loss - Long' + ' (' + str.tostring(lsl) + ')', textcolor=color.new(#fc2d01, 35), color=color.new(#fc2d01, 35))
lltarlbl := label.new(bar_index, ltar, style=label.style_none, text='Target - Long' + ' (' + str.tostring(ltar) + ')', textcolor=color.new(color.green, 35), color=color.new(color.green, 35))
lbuylbl := label.new(bar_index, buyat, style=label.style_none, text='Buy at' + ' (' + str.tostring(buyat) + ')', textcolor=color.new(color.orange, 35), color=color.new(color.orange, 35))
if lslhit == false and ltarhit == false and longC > 0
// line.set_x2(llsl, bar_index)
// line.set_x2(lltar, bar_index)
// line.set_x2(lbuy, bar_index)
lslhitC := 0
ltarhitC := 0
else
if lslhit
longC := 0
lslhitC := lslhitC + 1
else
if ltarhit
longC := 0
ltarhitC := ltarhitC + 1
strategy.entry("Buy", strategy.long, when=Long)
strategy.entry("Sell", strategy.short, when=Short)
strategy.close("ExitBuy", when=sslhit or starhit)
strategy.close("ExitSell", when=lslhit or ltarhit)
plotshape(ShowSell and Short, title='Sell', location=location.abovebar, offset=0, color=color.new(#e74c3c, 45), style=shape.arrowdown, size=size.normal, text='Sell', textcolor=color.new(#e74c3c, 55))
plotshape(ShowSell and sslhit, title='SL Hit - Short', location=location.abovebar, offset=0, color=color.new(#fc2d01, 25), style=shape.arrowdown, size=size.normal, text='SL Hit - Short', textcolor=color.new(#fc2d01, 25))
plotshape(ShowSell and starhit, title='Target Hit - Short', location=location.belowbar, offset=0, color=color.new(color.green, 45), style=shape.arrowup, size=size.normal, text='Target Hit - Short', textcolor=color.new(color.green, 55))
plotshape(ShowBuy and Long, title='Buy', location=location.belowbar, offset=0, color=color.new(#2ecc71, 45), style=shape.arrowup, size=size.normal, text='Buy', textcolor=color.new(#2ecc71, 55))
plotshape(ShowBuy and lslhit, title='SL Hit - Long', location=location.belowbar, offset=0, color=color.new(#fc2d01, 25), style=shape.arrowdown, size=size.normal, text='SL Hit - Long', textcolor=color.new(#fc2d01, 25))
plotshape(ShowBuy and ltarhit, title='Target Hit - Long', location=location.abovebar, offset=0, color=color.new(color.green, 45), style=shape.arrowup, size=size.normal, text='Target Hit - Long', textcolor=color.new(color.green, 55))
if ShowSell and Short
alert("Go Short@ " + str.tostring(sellat) + " : SL@ " + str.tostring(ssl) + " : Target@ " + str.tostring(star) + " ", alert.freq_once_per_bar )
if ShowBuy and Long
alert("Go Long@ " + str.tostring(buyat) + " : SL@ " + str.tostring(lsl) + " : Target@ " + str.tostring(ltar) + " ", alert.freq_once_per_bar )
///// End of code