Трех-четырех-K-линии прорыв обратной стратегии путем выявления трех или четырех K-линий, которые имеют большую динамику на K-линии, после чего несколько меньших K-линий образуют поддержку или давление, и при обратной K-линии происходит обратная торговля, которая относится к стратегии обратной торговли.
Основная логика идентификации стратегии состоит из следующих частей:
Выявление K-линии с существенным увеличением ((Gap Bar): прорыв в 1,5 раза среднего ATR, физическая часть больше 0,65. Эта K-линия считается с более сильным падением.
Идентифицируйте сжатые линии K ((Collecting Bar): линии K, следующие за промежуточными линиями с незначительными колебаниями в пределах 1-2, с высокими или низкими точками, близкими к промежуточным линиям. Эти линии K представляют собой замедление и сборку тенденций, которые образуют поддержку или давление.
Идентифицируйте K-линию обратного сигнала: после сбора K-линии, если появляется объект, прорывающий высокую точку или низкую точку предыдущих K-линий, можно считать, что это сигнал обратного сигнала, в зависимости от направления объекта, открывать позиции на этой K-линии.
Остановка и остановка: остановка устанавливается ниже или выше высокой точки Gap K; остановка основана на Stop Loss Point, умноженной на коэффициент прибыли.
Эта стратегия имеет следующие основные преимущества:
Используя свойства самой K-линии, чтобы определить тенденции и переломы, не полагаясь на какие-либо показатели, реализуется линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная линейная
Строгие критерии отбора для Gap Bar и Collecting Bar позволяют эффективно идентифицировать реальные тенденции и сопоставлять их.
Определение обратного сигнала на основе объекта уменьшает вероятность ложного сигнала.
Только 3-4 комбинации K-линий позволяют совершить одну транзакцию, с коротким временным циклом и высокой частотой.
Установка стоп-лосса четкая, а отзыв и прибыль-убыток легко контролируемы.
В этой стратегии также есть некоторые риски:
В зависимости от качества параметров, если параметры настроены слишком мягко, это увеличивает вероятность ложных сигналов и убыточных торгов.
Подвержены высокочастотным ложным взломам, не могут эффективно отфильтровывать все ложные сигналы.
Существует риск быть застрявшим, если недостаточно обратного отклонения, легко формируется коррекция, что не может остановить убытки.
Стоп-лосс имеет большой диапазон, и отдельные риски могут привести к большим потерям.
Для снижения этих рисков можно оптимизировать следующие аспекты:
Оптимизация параметров для более точного распознавания Gap Bar и Collecting Bar.
Добавить фильтр и открыть позицию после повторного подтверждения обратной K-линии.
Оптимизация алгоритмов остановки убытков, чтобы они были ближе к цене и были более управляемыми.
В этой стратегии есть несколько основных улучшений:
Добавление сложных фильтров, чтобы избежать ложного прорыва помех. Например, увеличение показателя объема сделок, только в случае увеличения объема сделок рассматривать торговые сигналы.
В сочетании с индикатором средней линии, только при прорыве цены через важную среднюю линию (например, 20-дневную линию, 60-дневную линию) следует учитывать торговый сигнал.
Проверка многократных временных рамок, открытие позиции только при одновременном сигнале нескольких циклов.
Оптимизация условий хранения прибыли и убытков в зависимости от динамики рыночных колебаний и предпочтений риска.
В сочетании с системой определения свободного рынка, эта стратегия используется только в условиях трендового рынка.
Эти оптимизации могут способствовать дальнейшему повышению стабильности и вероятности прибыльности стратегии.
Стратегия по преодолению трех-четырех K-линий для проведения торговли путем выявления высококачественных потенциальных сегментов тренда и обратных сигналов. Операционный цикл короткий, высокая частота, ожидается высокая избыточная прибыль. В то же время существует определенный риск, необходимо продолжать оптимизацию для снижения риска и повышения стабильности. В целом, стратегия эффективно использует тенденции и обратные точки, характерные для контуры рынка, и заслуживает дальнейшего изучения и применения.
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Three (3)-Bar and Four (4)-Bar Plays Strategy", shorttitle="Three (3)-Bar and Four (4)-Bar Plays Strategy", overlay=true, calc_on_every_tick=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity)
frommonth = input(defval = 1, minval = 01, maxval = 12, title = "From Month")
fromday = input(defval = 1, minval = 01, maxval = 31, title = "From day")
fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year")
tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month")
today = input(defval = 31, minval = 01, maxval = 31, title = "To day")
toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
garBarSetting1 = input(defval = 1.5, minval = 0.0, maxval = 100.0, title = "Gap Bar Size", type = input.float)
garBarSetting2 = input(defval = 0.65, minval = 0.0, maxval = 100.0, title = "Gap Bar Body Size", type = input.float)
TopSetting = input(defval = 0.10, minval = 0.0, maxval = 100.0, title = "Bull Top Bar Size", type = input.float)
profitMultiplier = input(defval = 2.0, minval = 1.0, maxval = 100.0, title = "Profit Multiplier", type = input.float)
// ========== 3-Bar and 4-Bar Play Setup ==========
barSize = abs(high - low)
bodySize = abs(open - close)
gapBar = (barSize > (atr(1000) * garBarSetting1)) and (bodySize >= (barSize * garBarSetting2)) // find a wide ranging bar that is more than 2.5x the size of the average bar size and body is at least 65% of bar size
bullTop = close > close[1] + barSize[1] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (first collecting bull bar)
bullTop2 = close > close[2] + barSize[2] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (first collecting bear bar)
bearTop = close < close[1] - barSize[1] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (second collecting bull bar)
bearTop2 = close < close[2] - barSize[2] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (second collecting bear bar)
collectingBarBull = barSize < barSize[1] / 2 and low > close[1] - barSize[1] / 2 and bullTop // find a collecting bull bar
collectingBarBear = barSize < barSize[1] / 2 and high < close[1] + barSize[1] / 2 and bearTop // find a collecting bear bar
collectingBarBull2 = barSize < barSize[2] / 2 and low > close[2] - barSize[2] / 2 and bullTop2 // find a second collecting bull bar
collectingBarBear2 = barSize < barSize[2] / 2 and high < close[2] + barSize[2] / 2 and bearTop2 // find a second collecting bear bar
triggerThreeBarBull = close > close[1] and close > close[2] and high > high[1] and high > high[2] // find a bull trigger bar in a 3 bar play
triggerThreeBarBear = close < close[1] and close < close[2] and high < high[1] and high < high[2] // find a bear trigger bar in a 3 bar play
triggerFourBarBull = close > close[1] and close > close[2] and close > close[3] and high > high[1] and high > high[2] and high > high[3] // find a bull trigger bar in a 4 bar play
triggerFourBarBear = close < close[1] and close < close[2] and close < close[3] and high < high[1] and high < high[2] and high < high[3] // find a bear trigger bar in a 4 bar play
threeBarSetupBull = gapBar[2] and collectingBarBull[1] and triggerThreeBarBull // find 3-bar Bull Setup
threeBarSetupBear = gapBar[2] and collectingBarBear[1] and triggerThreeBarBear // find 3-bar Bear Setup
fourBarSetupBull = gapBar[3] and collectingBarBull[2] and
collectingBarBull2[1] and triggerFourBarBull // find 4-bar Bull Setup
fourBarSetupBear = gapBar[3] and collectingBarBear[2] and
collectingBarBear2[1] and triggerFourBarBear // find 4-bar Bear Setup
labels = input(title="Show Buy/Sell Labels?", type=input.bool, defval=true)
plotshape(threeBarSetupBull and labels, title="3-Bar Bull", text="3-Bar Play", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
plotshape(threeBarSetupBear and labels, text="3-Bar Bear", title="3-Bar Play", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
plotshape(fourBarSetupBull and labels, title="4-Bar Bull", text="4-Bar Play", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
plotshape(fourBarSetupBear and labels, text="4-Bar Bear", title="4-Bar Play", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
alertcondition(threeBarSetupBull or threeBarSetupBear or fourBarSetupBull or fourBarSetupBear, title="3-bar or 4-bar Play", message="Potential 3-bar or 4-bar Play")
float sl = na
float tp = na
sl := nz(sl[1], 0.0)
tp := nz(tp[1], 0.0)
plot(sl==0.0?na:sl,title='SL', color = color.red)
plot(tp==0.0?na:tp,title='TP', color = color.green)
if (true)
if threeBarSetupBull and strategy.position_size <=0
strategy.entry("3 Bar Long", strategy.long, when=threeBarSetupBull)
sl :=low[1]
if threeBarSetupBear and strategy.position_size >=0
strategy.entry("3 Bar Short", strategy.short, when=threeBarSetupBull)
sl :=high[1]
if fourBarSetupBull and strategy.position_size <=0
strategy.entry("4 Bar Long", strategy.long, when=fourBarSetupBull)
sl :=min(low[1], low[2])
if fourBarSetupBear and strategy.position_size >=0
strategy.entry("4 Bar Short", strategy.short, when=fourBarSetupBear)
sl :=max(high[1], high[2])
if sl !=0.0
if strategy.position_size > 0
tp := strategy.position_avg_price + ((strategy.position_avg_price - sl) * profitMultiplier)
strategy.exit(id="Exit", limit=tp, stop=sl)
if strategy.position_size < 0
tp := strategy.position_avg_price - ((sl - strategy.position_avg_price) * profitMultiplier)
strategy.exit(id="Exit", limit=tp, stop=sl)