
Эта стратегия использует перекрестные сигналы от быстрой и медленной линий MACD в сочетании с несколькими другими показателями для комплексного суждения, моментально захватывает прорывные сигналы от скользящей средней индекса, принимает решения о покупке или продаже, относятся к стратегии короткой торговли.
Используйте перекрестку быстрого и медленного курса MACD в качестве основного торгового сигнала. Посмотрите на прибыль, когда быстрое движение пересекает медленную линию, и посмотрите на падение, когда быстрое движение пересекает медленную линию.
В сочетании с показателем RSI можно определить, было ли перекуплено или продано. Если RSI находится ниже средней линии, то это является позитивным, а если RSI находится выше средней линии, то это является отрицательным.
Расчет текущей ценой закрытия и средней линией SMA в течение определенного периода. При закрытии цена ниже SMA становится позитивной, а при закрытии цена выше SMA становится отрицательной.
Вычислите 0,5 фибоначчи-бит с наивысшим значением в определенном цикле, как устойчивое значение для прогноза. Вычислите 0,5 фибоначчи-бит с наименьшим значением в определенном цикле, как устойчивое значение для прогноза.
Поисковый вход при удовлетворении быстрого прохождения линии и цены ниже поддержки, попадание в bear market при удовлетворении быстрого прохождения линии и цены выше сопротивления.
Применение постепенно движущегося метода остановки. В начале после входа остановка фиксируется в виде определенного процента от цены открытия позиции, а после достижения определенного процента потерь изменяется на небольшую постепенную остановку.
Стратегия использует в полной мере перекрестный сигнал MACD, классический и эффективный торговый сигнал технического индикатора.
В сочетании с RSI, SMA и другими показателями для подтверждения, можно отфильтровать ложные сигналы, повышая надежность сигналов.
Вычисление динамической поддержки сопротивления, для совершения прорывных сделок, чтобы захватить более крупные сделки.
Поэтапный подход к движению остановок позволяет закрепить большую часть прибыли и контролировать риск.
Логика стратегии трейдинга ясна, проста, легко понятна и подходит для начинающих.
Показатель MACD отстает, и может пропустить лучшие моменты для покупки или продажи.
Поскольку многополюсные оценки увеличивают сложность стратегии, они легко могут привести к конфликтам.
Динамические расчеты подтверждают риск ошибочного прорыва в точке сопротивления.
Мобильные потери могут быть преждевременно прекращены в больших ситуациях и не могут быть устойчивыми.
Параметры стратегии нуждаются в повторном тестировании и оптимизации, а неправильные параметры могут повлиять на эффективность стратегии.
Можно тестировать различные комбинации параметров, оптимизировать MACD-циклические параметры.
Для многомерного анализа могут быть введены дополнительные показатели, такие как линия Бринна, KDJ и т. д.
Можно объединить больше факторов, чтобы оценить обоснованность поддерживающих точек сопротивления.
Можно исследовать более продвинутые механизмы остановки движения, такие как остановка времени, остановка колебаний и т. д.
Можно добавить модуль автоматической оптимизации параметров, чтобы реализовать автоматическую поиск оптимальных параметров.
Стратегия использует множество индикаторов, таких как MACD, RSI, SMA, чтобы в мгновение ока поймать прорывные сигналы от скользящих средних индексов, и является типичной стратегией для коротких прорывов. Стратегия генерирует определенный запаздывающий сигнал, но ее точность может быть улучшена с помощью оптимизации параметров. В целом, логика торговли этой стратегии проста, ясна, проста в освоении, стабильна, подходит для изучения и использования большинством людей, требует дальнейшего тестирования и оптимизации.
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-09 23:00:00
period: 1m
basePeriod: 1m
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/
// © onurenginogutcu
//@version=4
strategy("R19 STRATEGY", overlay=true, calc_on_every_tick=true , margin_long=100, margin_short=100 , process_orders_on_close=true )
sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT" , group = "SYMBOL")
timeFrame = input(title="Strategy Decision Time Frame", type = input.resolution , defval="60")
adxlen = input(14, title="ADX Smoothing" , group = "ADX")
dilen = input(14, title="ADX DI Length", group = "ADX")
adxemalenght = input(30, title="ADX EMA", group = "ADX")
adxconstant = input(19, title="ADX CONSTANT", group = "ADX")
fibvar = input (title = "Fibo Look Back Canles" , defval = 50 , minval = 0 , group = "FIBO MACD SMA")
smaLookback = input (title = "SMA Look Back Candles" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDFast = input (title = "MACD Fast Lenght" , defval = 15 , minval = 0 , group = "FIBO MACD SMA")
MACDSlow = input (title = "MACD Slow Lenght" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDSmooth = input (title = "MACD Signal Smoothing" , defval = 9 , minval = 0 , group = "FIBO MACD SMA")
MACDLookback = input (title = "MACD Look Back Candles" , defval = 100 , minval = 0 , group = "FIBO MACD SMA")
trailingStopLong = input (title = "Trailing Long Stop %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01
trailingStopShort = input (title = "Trailing Short Stop %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
LongTrailingProfitStart = input (title = "Long Profit Start %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
ShortTrailingProfitStart = input (title = "Short Profit Start %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01
lsl = input(title="Max Long Stop Loss (%)",
minval=0.0, step=0.1, defval=3.0, group = "TP & SL") * 0.01
ssl = input(title="Max Short Stop Loss (%)",
minval=0.0, step=0.1, defval=2.5, group = "TP & SL") * 0.01
longtp = input(title="Long Take Profit (%)",
minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
shorttp = input(title="Short Take Profit (%)",
minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
capperc = input(title="Capital Percentage to Invest (%)",
minval=0.0, maxval=100, step=0.1, defval=95, group = "CAPITAL TO INVEST") * 0.01
symClose = security(sym, timeFrame, close)
symHigh = security(sym, timeFrame, high)
symLow = security(sym, timeFrame, low)
atr = atr (14)
/////////adx code
dirmov(len) =>
up = change(symHigh)
down = -change(symLow)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
emasig = ema (sig , adxemalenght )
////////adx code over
i = ema (symClose , MACDFast) - ema (symClose , MACDSlow)
r = ema (i , MACDSmooth)
sapust = highest (i , MACDLookback) * 0.729
sapalt = lowest (i , MACDLookback) * 0.729
simRSI = rsi (symClose , 50 )
fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
cond1 = 0
cond2 = 0
cond3 = 0
cond4 = 0
longCondition = crossover(i, r) and i < sapalt and sig > adxconstant and symClose < sma (symClose , smaLookback) and simRSI < sma (simRSI , 50) and symClose < fibbottom
shortCondition = crossunder(i, r) and i > sapust and sig > adxconstant and symClose > sma (symClose , smaLookback) and simRSI > sma (simRSI , 50) and symClose > fibtop
//////////////////////probability long/short
if (crossover(i, r) and i < sapalt)
cond1 := 35
else if (crossunder(i, r) and i > sapust)
cond1 := -35
else
cond1 := 0
if (symClose < sma (symClose , smaLookback))
cond2 := 30
else if (symClose > sma (symClose , smaLookback))
cond2 := -30
else
cond2 := 0
if (simRSI < sma (simRSI , 50))
cond3 := 25
else if (simRSI > sma (simRSI , 50))
cond3 := -25
else
cond3 := 0
if (symClose < fibbottom)
cond4 := 10
else if (symClose > fibbottom)
cond4 := -10
else
cond4 := 0
probab = cond1 + cond2 + cond3 + cond4
////////////////////////////////////////////////////////////////
///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////
var startTrail = 0
var trailingLongPrice = 0.0
var trailingShortPrice = 0.0
if (longCondition and strategy.position_size == 0)
strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close )
if (shortCondition and strategy.position_size == 0)
strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close )
if (strategy.position_size == 0)
trailingShortPrice := 0.0
trailingLongPrice := 0.0
startTrail := 0
/////////////////////////////////strategy exit
if (strategy.position_size > 0 and close >= strategy.position_avg_price * (1 + LongTrailingProfitStart))
startTrail := 1
if (strategy.position_size < 0 and close <= strategy.position_avg_price * (1 - ShortTrailingProfitStart))
startTrail := -1
trailingLongPrice := if strategy.position_size > 0 and startTrail == 1
stopMeasure = close * (1 - trailingStopLong)
max (stopMeasure , trailingLongPrice [1])
else if strategy.position_size > 0 and startTrail == 0
strategy.position_avg_price * (1 - lsl)
trailingShortPrice := if strategy.position_size < 0 and startTrail == -1
stopMeasure = close * (1 + trailingStopShort)
min (stopMeasure , trailingShortPrice [1])
else if strategy.position_size < 0 and startTrail == 0
strategy.position_avg_price * (1 + ssl)
if (strategy.position_size > 0)
strategy.exit("Exit Long", "Long", stop = trailingLongPrice , limit=strategy.position_avg_price*(1 + longtp))
if (strategy.position_size < 0)
strategy.exit("Exit Short", "Short", stop = trailingShortPrice , limit=strategy.position_avg_price*(1 - shorttp))
////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)
plot (trailingLongPrice , color = color.green) ///long price trailing stop
plot (trailingShortPrice , color = color.red) /// short price trailing stop
plot (startTrail , color = color.yellow)
plot (probab , color = color.white) ////probability