Основная идея этой стратегии заключается в том, чтобы открыть длинную позицию после появления определенного шаблона свечей, а именно открыть длинную позицию на следующем открытии после разрыва в сторону падения (колорбар), за которым следует откат до предыдущего минимума.
Конкретные условия для этой стратегии таковы: предыдущий бар имеет более низкий минимум и более высокий максимум по сравнению с предыдущими двумя барми, что указывает на разрыв в сторону падения; и текущий бар
После открытия длинной позиции, стоп-лосс устанавливается на низком уровне pullback, который является низким уровнем предыдущего порога, и прибыль устанавливается более чем на 2% выше цены входа.
Самое большое преимущество этой стратегии заключается в том, что она использует высоковероятный отскок после конкретного шаблона свечей. Разрыв вниз, за которым следует откат, представляет собой чрезвычайно мощную техническую модель, которая указывает на то, что давление на продажу может быть исчерпано на этом уровне, и вероятность отскока высока. Поэтому эта стратегия более подходит для краткосрочной торговли.
Основным риском является продолжение падения после окончания вывода. Поскольку мы занимаем длинные позиции вокруг минимумов вывода, могут быть понесены значительные убытки, если не сможем сократить убытки вовремя. Кроме того, если диапазон вывода мал, то стоп-лосс, установленный слишком плотно, может привести к остановке. Таким образом, эта стратегия более предпочтительна для краткосрочной торговли, требующая пристального внимания рынка и своевременного стоп-лосса.
Другие технические индикаторы могут быть включены для улучшения точности сигнала и стабильности стратегии, такие как вход на золотой крест MACD или проверка типичной цены на уровне поддержки перед входом.
В целом, это типичная краткосрочная стратегия выхода на рынок. Она захватывает возможность отскока после сильного паттерна снижения разрыва, за которым следует откат. Но она также несет риск огромных потерь, если не удастся сократить потери вовремя. Для достижения благоприятных результатов необходимо частое наблюдение за рынком. Дальнейшие улучшения могут быть сделаны с помощью фильтрации сигналов с большей количеством индикаторов и оптимизации параметров.
/*backtest start: 2024-01-22 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Created by Leon Ross //study(title="OutsideDownOpenLower", shorttitle="ODOL", overlay=true) strategy(title = "Outside", shorttitle = "OB", overlay = true ) //Window of time //start = timestamp(2018, 01, 01, 00, 00) // backtest start window //finish = timestamp(2018, 12, 31, 23, 59) // backtest finish window //window() => time >= start and time <= finish ? true : false // create function "within window of time" //Conditions outsideBar = low < low[1] and high > high[1] and close < open allConditions = outsideBar //Stop and Take Profit as percentages //inpTakeProfit = input(2, title='Take Profit %', type=float)/100 //takeProfitValue = strategy.position_avg_price * (1 + inpTakeProfit) //useTakeProfit = inpTakeProfit > 0 ? takeProfitValue : na //inpStopLoss = input(1, title='Stop Loss %', type=float)/100 //stopLossValue = strategy.position_avg_price * (1 - inpStopLoss) //useStopLoss = inpStopLoss > 0 ? stopLossValue : na //entry = strategy.position_avg_price //Stop as last bars low and profit as percentage entry = strategy.position_avg_price inpTakeProfit = input(2.0, title='Take Profit %', type=float)/100 takeProfitValue = strategy.position_avg_price * (1 + inpTakeProfit) useTakeProfit = inpTakeProfit > 0 ? takeProfitValue : na inpStopLoss = valuewhen(allConditions, low, 0) stopLossValue = inpStopLoss useStopLoss = inpStopLoss > 0 ? stopLossValue : na //Plots bgcolor(allConditions ==1 ? aqua : na, transp=70) plot(entry, color=blue, style=linebr, linewidth=2) plot(useStopLoss, color=red, style=linebr, linewidth=2) plot(useTakeProfit, color=green, style=linebr, linewidth=2) //Entires strategy.entry(id = "Long", long = true, when = allConditions) // use function or simple condition to decide when to get in //Exits //if (barssince(allConditions) == 2) //strategy.close("Long") //else strategy.exit("Exit Long", from_entry = "Long", stop = useStopLoss)