Стратегия отслеживания на основе ключевых ценовых ориентиров


Дата создания: 2023-09-21 15:24:53 Последнее изменение: 2023-09-21 15:24:53
Копировать: 0 Количество просмотров: 684
1
Подписаться
1617
Подписчики

Обзор

Стратегия основана на идее, что остановки и остановки часто устанавливаются на целых или ключевых уровнях цен, которые часто служат в качестве точек поддержки и сопротивления. Стратегия, идентифицируя эти ключевые уровни цен, совершает покупку или продажу, когда цена приближается.

Стратегический принцип

Основные правила этой стратегии:

  1. При закрытии цены выше уровня ключевой цены, и она не коснулась этой цены в течение последних 10 K-линий, совершается покупка.

  2. Затем используется слежение за восхождением, чтобы отследить движение цены, которая пробивает критическую цену.

  3. Продажа - это противоположность покупке. Продажа совершается, когда цена закрытия ниже уровня ключевой цены и не коснулась этой цены в течение последних 10 K-линий.

  4. Ключевые ценовые уровни определяются следующим образом:

    • Преобразовать конечную цену в целое число
    • Рассчитывается с 50 конфигурируемым остатком
    • Если остаток больше 25, то в качестве ключевой цены используются последние 50 целых пунктов.
    • В противном случае ключевые цены останутся неизменными.

Эта стратегия основана на идее ценовой психологии, которая предполагает, что целые цены или ключевые уровни часто являются важными позициями, за которые борются многосторонние стороны, что дает эффект в качестве торгового сигнала. В то же время, слежение за скачками позволяет отслеживать тенденции после ценового прорыва.

Стратегические преимущества

Эта стратегия имеет следующие преимущества:

  1. Простые, интуитивно понятные торговые сигналы и правила входа.
  2. Это общее правило, используемое в ключевых ценовых точках, не зависит от конкретных сортов.
  3. Следить за стоп-лостами позволяет зафиксировать прибыль и идти в ногу с тенденцией.

Стратегический риск

Также существуют следующие риски:

  1. Ключевые точки цены не обязательно должны быть сильной поддержкой или сопротивлением.
  2. Фиксированные правила определения 10 K-линий могут не подходить для разных сортов.
  3. Не следует отслеживать потерю слишком далеко, иначе может произойти преждевременная потеря.

Решение проблемы:

  1. Сила и слабость ключевых ценовых точек в сочетании с другими показателями.
  2. Оптимизация параметров для разных сортов, поиск оптимального сочетания параметров.
  3. Оптимизация параметров для отслеживания стоп-лосса, чтобы быть ближе к рынку.

Направление оптимизации стратегии

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Добавление дополнительных условий для оценки важности ключевых ценовых точек, чтобы избежать риска ложных прорывов.

  2. Оптимизация параметров, в частности, для определения шаговой длины в ключевых ценовых зонах, циклов K-линий и т. Д.

  3. Оптимизация механизмов отслеживания потерь, например, использование динамического отслеживания потерь вместо фиксированного восхождения.

  4. Добавление алгоритмов машинного обучения, использующих исторические данные для определения силы и слабости ключевых ценовых зон для улучшения качества сигнала.

  5. Расширять стратегию на различные временные периоды, одновременно оценивать тенденции на более высоких временных периодах и отслеживать их на более низких.

Подвести итог

Эта стратегия основана на простой и интуитивной мысли о ценовых ключевых точках, используя распространенные торговые привычки для формирования торговых сигналов. У стратегии есть много возможностей, но ее необходимо дополнительно оптимизировать для борьбы с ложными прорывами. Такие средства, как оптимизация параметров и машинное обучение, могут повысить стабильность стратегии.

Исходный код стратегии
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Strategy based on the idea that stop loss and take profit are often placed at full price levels or round numbers, whcih acts as resistance and supports levels
//Buy Rules:
//Actual price (close) is above round number.
//Round number level was not touched in previous ten bars (arbitrary value).
//Place a buy and follow the order with a trail step because price can bounce at round number (support) or can go through it.
//Sell Rules are the same of buy rules but inverted.
//
//Need improvement on conditions' logic and round numbers definitions


strategy("dP magnet", overlay=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)

//Round Levels credit to RKchartest

roundLevel50 = input(500, 'Round Level 1, pips')
//roundLevel100 = input(1000, 'Round Level 2, pips')
deviation = input(1000, 'Max distance, pips', minval=0) 

rDelimeter = 1/syminfo.mintick

intRoundLevel = close[1] * rDelimeter

intRemainder = intRoundLevel % roundLevel50 
toRound = (intRemainder >= roundLevel50/2) ? roundLevel50 : 0
roundLevel = (intRoundLevel - intRemainder + toRound) / rDelimeter
plot(roundLevel, title='Round Level 1', color=black, style=line, transp=0, linewidth=1, trackprice=false)

//intRemainder2 = intRoundLevel % roundLevel100
//toRound2 = (intRemainder2 >= roundLevel100/2) ? roundLevel100 : 0
//roundLevel2 = (intRoundLevel - intRemainder2 + toRound2) / rDelimeter
//plot((abs(roundLevel2 - close) * rDelimeter < deviation) ? roundLevel2 : na, title='Round Level 2', color=black, style=circles, transp=0, linewidth=1, trackprice=true)

// end

//Start of strategy

distToFullNumber=(close-roundLevel) //can be positive or negative number

distPips=input(100,'Distance in pips to full level',minval=10) //user defined: this distance defines when to open an order at market price


TrailS=input(20,'Trail Step points',minval=10) //trail step that follows the order

longCondition = iff(distToFullNumber>0 and abs(distToFullNumber)<=distPips and lowest(low,10)>roundLevel,true,false)

if (longCondition)
    strategy.entry("LongMagnet", strategy.long)
    strategy.exit("ExitMagnet","LongMagnet",trail_points=TrailS)

shortCondition = iff(distToFullNumber<0 and abs(distToFullNumber)<=distPips and highest(high,10)<roundLevel,true,false)

if (shortCondition)
    strategy.entry("ShortMagnet", strategy.short)
    strategy.exit("Exit_Magnet","ShortMagnet",trail_points=TrailS)