
Эта стратегия является динамической стратегией отслеживания стоп-порогов, основанной на двойных средних линиях EMA. Она использует 9-й и 20-й линии для определения направления тенденции рынка в сочетании с RSI, фильтрующей ложные трещины. При этом используется индикатор ATR для вычисления динамических стоп-порогов и стоп-порогов.
Эта стратегия использует 9-дневную ЭМА в качестве краткосрочной средней линии, 20-дневную ЭМА в качестве среднесрочной средней линии, чтобы определить тенденцию цены. Когда цена вверх пробивает краткосрочную среднюю линию, и цена закрытия выше предыдущей дневной максимальной цены, в то время как RSI выше 30, делать больше; когда цена вниз пробивает краткосрочную среднюю линию, и цена закрытия ниже предыдущей дневной минимальной цены, в то время как RSI ниже 70, делать пустоту.
Стоп-стоп устанавливается как цена закрытия за вычетом ATR в 1,5 раза, стоп-стоп устанавливается как цена закрытия за вычетом ATR в 1,5 раза, а стоп-стоп устанавливается как цена закрытия за вычетом ATR в 2 раза.
Эта стратегия в целом представляет собой более стабильную стратегию удержания позиций на средних и длинных линиях. Она объединяет основные тенденции рынка, которые определяются двумя EMA, чтобы избежать влияния на решения, связанные с шумом на краткосрочном рынке. Включение показателя RSI также в некоторой степени фильтрует ложные прорывы. Кроме того, динамический стоп-стоп-паук позволяет стратегии корректировать свой уровень стоп-стоп в зависимости от степени волатильности рынка.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("CJTrade", overlay=true)
short = ema(close, 9)
medium = ema(close, 20)
long = ema(close, 50)
very_long = ema(close, 200)
plot(short, color=color.gray, linewidth=1)
plot(medium, color=color.red, linewidth=1)
plot(long, color=color.black, linewidth=1)
plot(very_long, color=color.blue, linewidth=1)
rsiValue = rsi(close, 14)
near20EMA = close > medium - atr(14)
longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA
shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA
strategy.entry("Long", strategy.long, when=longCond)
strategy.entry("Short", strategy.short, when=shortCond)
atrValue = atr(14)
stopLossLevel = close - atrValue * 1.5
// Dynamic take profit level based on ATR
takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1)
takeProfitLevel = close + atrValue * takeProfitMultiplier
// Trailing stop loss for long positions
longTrailingStop = close - atrValue * 2
strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop)
// Trailing stop loss for short positions
shortTrailingStop = close + atrValue * 2
strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop)
strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)