
Целью этой стратегии является определение процента изменения цены индикатора в течение определенного периода времени, который дает торговый сигнал при превышении установленного порога. Эта стратегия применима к коротким линиям и дисконтным сделкам, которые могут использовать торговые возможности, вызванные внезапными изменениями в рыночной ситуации.
Вводящий параметр x представляет собой количество циклов проверки K-линии, при этом по умолчанию 5 представляет собой 5-минутную K-линию.
Вычислить процентное изменение текущей цены закрытия линии K относительно цены закрытия до x цикла, сохранив trueChange1 и trueChange2.
Вводящие параметры percentChangePos и percentChangeNeg представляют собой установленные процентные пороги изменения, по умолчанию 0.4% и -0.4% .
Когда trueChange1 больше, чем percentChangePos, генерируется сигнал купить, когда trueChange2 меньше, чем percentChangeNeg, генерируется сигнал продать.
Текстовые и фоновые маркировки для Buy и Sell.
Условия входа и выхода в зависимости от настроек сигнала.
Настройка сигнализации и картографии.
Используя процентное изменение, а не абсолютное изменение цены, параметры могут автоматически корректироваться в соответствии с различными стандартами.
Гибкость в установке процентных порогов положительных и отрицательных изменений, чтобы идентифицировать прорывы с обеих сторон пояса Брин.
Можно настроить параметры цикла обнаружения, чтобы определить изменения тенденции в разные периоды времени.
Настройка оповещений для предупреждения, чтобы не пропустить важные сигналы.
Простая, непосредственная логика сигналов покупки и продажи, легко понятная в использовании.
Это означает, что мы можем поймать возможность для краткосрочного переворота.
Изменение процента не позволяет определить направление тренда, что может привести к ошибочным сигналам.
Параметры по умолчанию могут не подходить для всех стандартов и требуют адаптации.
Не существует средств для сдерживания убытков, не существует контроля над отдельными потерями.
Сигналы бывают частыми, а расходы на транзакции могут быть высокими.
Невозможность оценить структуру рынка, легко поддающаяся обману в бурных рынках.
Решение проблемы:
Показатели, такие как линейная регрессия в сочетании с тенденцией, определяют большую тенденцию.
Оптимизация параметров в зависимости от характеристик различных стандартов.
Установка соответствующих условий для остановки убытков
Фильтрация сигналов, чтобы избежать слишком частых сделок
Необходимо оценивать структуру рынка в соответствии с более высокими временными циклами, чтобы избежать слепой торговли на рынке во время колебаний.
Добавление механизмов по удержанию убытков, таких как отслеживание убытков, мобильные убытки и т. д., для контроля одиночных убытков.
Добавление фильтрующих условий, таких как индикатор мощности, движущаяся средняя линия и т. д., чтобы избежать зацепления.
Оптимизация позиции покупки и продажи, например, в сочетании с MACD и другими индикаторами.
Автоматическая оптимизация параметров с использованием методов машинного обучения.
Повышение оценки структуры рынка, чтобы избежать слепой торговли в условиях колебаний.
Различия, такие как волатильность, ликвидность, динамические параметры настройки.
В сочетании с высокоуровневым анализом временных циклов можно определить направление основных тенденций.
Эта стратегия относится к краткосрочной стратегии обратного отсчета путем сравнения процента изменения цены с заданной отметкой, для определения времени покупки и продажи. Преимущества состоят в том, что она проста, интуитивна, может быть настроена гибко и подходит для захвата внезапных ситуаций. Недостатком является наличие определенного риска потери, необходимость использования методов оценки тенденций и контроля риска.
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// created by Oliver
strategy("Percentage Change strategy w/BG color", overlay=true, scale=scale.none, precision=2)
x = input(5, title = 'x candles difference', minval = 1)
trueChange1 = (close - close[x]) / close[x] * 100
percentChangePos = input(0.4, title="Percent Change")
//if (percentChange > trueChange) then Signal
plotChar1 = if percentChangePos > trueChange1
false
else
true
plotchar(series=plotChar1, char='🥶', color=color.green, location=location.top, size = size.tiny )
trueChange2 = (close - close[x]) / close[x] * 100
percentChangeNeg = input(-0.4, title="Percent Change")
plotChar2 = if percentChangeNeg < trueChange2
false
else
true
plotchar(series=plotChar2, char='🥵', color=color.red, location=location.top, size = size.tiny)
//------------------------------------------------------------------------
UpColor() => percentChangePos < trueChange1
DownColor() => percentChangeNeg > trueChange2
//Up = percentChangePos < trueChange1
//Down = percentChangeNeg > trueChange2
col = percentChangePos < trueChange1 ? color.lime : percentChangeNeg > trueChange2 ? color.red : color.white
//--------
condColor = percentChangePos < trueChange1 ? color.new(color.lime,50) : percentChangeNeg > trueChange2 ? color.new(color.red,50) : na
//c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na
//barcolor(Up ? color.blue : Down ? color.yellow : color.gray, transp=70)
//Background Highlights
//bgcolor(condColor, transp=70)
//---------
barcolor(UpColor() ? color.lime: DownColor() ? color.red : na)
bgcolor(UpColor() ? color.lime: DownColor() ? color.red : na)
//------------------------------------------------------------------------
buy = percentChangePos < trueChange1
sell = percentChangeNeg > trueChange2
//------------------------------------------------------------------------
/////////////// Alerts ///////////////
alertcondition(buy, title='buy', message='Buy')
alertcondition(sell, title='sell', message='Sell')
//-------------------------------------------------
if (buy)
strategy.entry("My Long Entry Id", strategy.long)
if (sell)
strategy.entry("My Short Entry Id", strategy.short)
/////////////////// Plotting ////////////////////////
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0) //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)