Стратегия основана на криптовалюте Билла Уильямса, но использует другой ценовой вход в линию Хайкена Аши. Это стратегия короткого скальпинга, которая работает в 1-минутных и 5-минутных временных рамках.
Основные принципы этой стратегии заключаются в следующем:
Использование штрихов Heiken Ashi, а не стандартных штрихов в качестве ввода цены. Heiken Ashi может фильтровать рыночный шум, идентифицировать тенденции.
Используйте три средние линии из индикатора рыбалки Билла Уильямса: нижняя, зубная и губная линии. Они похожи на скользящие средние и позволяют определить направление тенденции.
Когда три равномерные линии расположены так: нижний косой, средний зубной и верхний губной линии, то это указывает на тенденцию к многоглазовому движению; когда они расположены в таком порядке: нижний косой, средний зубной и нижний губной линии, то это указывает на тенденцию к пустому глазу.
Судя по направлению сущности и расположению рыболовных линий в Heiken Ashi. Сущность вверх и рыболовная линия в ряд смотрят больше, делают больше; сущность вниз и рыболовная линия в ряд смотрят вниз, делают пусто.
Когда происходит изменение последовательности, это означает обратный тренд, и нужно вовремя остановить повреждение.
Управление рисками с помощью фиксированных стоп-стоп и стоп-стоп-стоп. Можно выбрать целевые точки прибыли, стоп-стоп-стоп и отслеживание стоп-стоп для контроля каждого убытка.
Стратегия сочетает в себе двойные фильтры, использующие как идентификацию трендов Heiken Ashi, так и отклонения в соответствии с фиксированной рыбной линией, что создает стратегию торговли короткими линиями с высокой вероятностью.
Основные преимущества этой стратегии:
Двойная фильтрация уменьшает количество ложных сигналов. Комбинация из Heiken Ashi и филевых проводов улучшает качество сигнала.
Ясное и интуитивное суждение о тенденциях. Установка рыболовных линий является четкой и надежной, не вызывает сомнений.
Эффективная ловля коротких линий. Подходит для скальпирования с 1 минутной до 5 минутной периодичностью.
Простая настройка параметров. Не требует сложной оптимизации, используется небольшое количество параметров.
Строгое управление рисками. Контроль за каждым убытком осуществляется с использованием стоп-стоп-лосс.
Четкий механизм входа и выхода. Открытие позиции в соответствии с изменениями в расположении рыболовных линий.
Легко копировать и реализовывать.
Основные риски этой стратегии:
Риск отмены. Частые сигналы, появляющиеся в результате промывания, увеличивают частоту сделок и увеличивают стоимость проскальзывания.
Риск возникновения шокирующих ситуаций. Во время свертывания ситуации, филеры часто пересекаются, что приводит к ошибочным сигналам.
Риск переоптимизации. Неправильная оптимизация параметров может привести к пересоответствию кривой.
Риск сбоя показателей. В экстремальных ситуациях рынок может полностью потерять рыболовные линии.
Стоп-лома рискует быть взломанным. Быстрый взлом может вызвать потерю стоп-лома.
Слишком высокая частота торгов рискованна. Слишком высокая частота торгов увеличивает торговые издержки и ненужные потери.
Ожидания могут быть смягчены методами управления ожиданиями, оптимизации стратегии остановки убытков, контроля частоты торговли и т. Д.
Эта стратегия может быть оптимизирована в следующих аспектах:
Интеграция других показателей для фильтрации сигналов, повышает коэффициент выигрыша. Например, сочетание сильных и слабых показателей, таких как RSI.
Настройка динамического стоп-лоска ATR для контроля риска потерь в одноразовом режиме.
Добавление модуля управления позициями, оптимизация размера каждого открытия позиции. Можно увеличить позиции, когда тенденция более ясна.
В сочетании с методами технического анализа, такими как графическая форма, повышается точность поступления.
Оптимизация параметров в зависимости от типа рынка (например, акции, валюты и т. д.), чтобы они были более подходящими для данного сорта.
Добавление модулей машинного обучения для оптимизации параметров.
Проведите расчет выигрыша Expectancy и оптимизируйте Stop Loss Ratio.
При постоянном совершенствовании эта стратегия может стать стабильным набором стратегий торговли на коротких линиях.
Эта стратегия использует Heiken Ashi в сочетании с Биллом Уильямсом, чтобы создать высоковероятную стратегию торговли короткой линией. Она обладает такими преимуществами, как двойная фильтрация показателей, простая настройка параметров и четкий механизм входа и выхода, что позволяет эффективно улавливать изменения в тенденции для совершения торгов с скальпированием. Но также требуется быть бдительным к колебаниям рынка.
/*backtest
start: 2022-09-18 00:00:00
end: 2023-09-24 00:00:00
period: 4d
basePeriod: 1d
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/
// © 03.freeman
//Scalping strategy based on Bill Williams Alligator technique but applied to heikin ashi candles
//This strategy has to be applied to standard candles and low time frames (1min to 5min)
//@version=4
strategy("Bill Williams Alligator improved", shorttitle="Scalping alligator",overlay=true)
//source = input(close)
useHA = input (true,"Use heikin ashi candle?")
// ----------MA calculation - ChartArt-------------
smoothinput = input(1, minval=1, maxval=5, title='Moving Average Calculation: (1=SMA), (2=EMA), (3=WMA), (4=Linear), (5=VWMA)')
calc_ma(src,l) =>
smoothinput == 1 ? sma(src, l):smoothinput == 2 ? ema(src, l):smoothinput == 3 ? wma(src, l):smoothinput == 4 ? linreg(src, l,0):smoothinput == 5 ? vwma(src,l):na
//----------------------------------------------
heikinashi_close = security(heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_open = security(heikinashi(syminfo.tickerid), timeframe.period, open)
heikinashi_hl2 = security(heikinashi(syminfo.tickerid), timeframe.period, hl2)
direzione=heikinashi_close>heikinashi_open and heikinashi_close[1]>heikinashi_open[1]? 1 : heikinashi_close<heikinashi_open and heikinashi_close[1]<heikinashi_open[1]? -1 : 0
jawLength = input(13, minval=1, title="Jaw Length")
teethLength = input(8, minval=1, title="Teeth Length")
lipsLength = input(5, minval=1, title="Lips Length")
jawOffset = input(8, title="Jaw Offset")
teethOffset = input(5, title="Teeth Offset")
lipsOffset = input(3, title="Lips Offset")
jaw = calc_ma(heikinashi_hl2, jawLength)
teeth = calc_ma(heikinashi_hl2, teethLength)
lips = calc_ma(heikinashi_hl2, lipsLength)
plot(jaw, title="jaw",offset = jawOffset, color=#3BB3E4)
plot(teeth, title="teeth",offset = teethOffset, color=#FF006E)
plot(lips, title="lips",offset = lipsOffset, color=#36C711)
longCondition = direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips
shortCondition = direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips
// Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips // functions can be used to wrap up and work out complex conditions
exitLong() => jaw>teeth or jaw>lips or teeth>lips
strategy.entry(id = "Buy", long = true, when = enterLong() ) // use function or simple condition to decide when to get in
strategy.close(id = "Buy", when = exitLong() ) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips
exitShort() => jaw<teeth or jaw<lips or teeth<lips
strategy.entry(id = "Sell", long = false, when = enterShort())
strategy.close(id = "Sell", when = exitShort() )
// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
// === Backtesting Dates === thanks to Trost
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = true
// === /END
if not isPeriod
strategy.cancel_all()
strategy.close_all()