Динамическая стратегия поддержки и сопротивления на основе исторических данных


Дата создания: 2023-11-28 17:00:13 Последнее изменение: 2023-11-28 17:04:16
Копировать: 4 Количество просмотров: 648
1
Подписаться
1619
Подписчики

Динамическая стратегия поддержки и сопротивления на основе исторических данных

Обзор

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

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

  1. Вычислите средние значения максимальной, минимальной и закрывающей цены за предыдущий цикл и получите базисную точку PP.

  2. Вычислить 3 линии опоры: S1 = 2PP - самая высокая цена; S2 = PP - (R1-S1); S3 = самая низкая цена - 2(Самая высокая цена - PP)

  3. Рассчитайте 3 линии сопротивления: R1 = 2PP - минимальная цена; R2 = PP + (R1-S1); R3 = максимальная цена + 2(ПП - минимальная цена)

  4. Когда цена пересекает линию сопротивления, делайте больше; когда цена пересекает линию поддержки, делайте пустоту.

Анализ преимуществ

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

  2. Установка многоуровневой поддерживающей резистентности позволяет оптимизировать управление рисками.

  3. Простые, интуитивно понятные торговые сигналы и способы остановки убытков.

Анализ рисков

  1. В условиях высокой волатильности цены, предоставляемые историческими данными, могут быть недействительными.

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

  3. Необходимо обеспечить качество данных, чтобы избежать ошибок в расчетах.

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

  1. Можно рассмотреть возможность использования дополнительных исторических данных, таких как 100-дневная линия и т.д.

  2. Оптимизация управления позициями, например, корректировка пропорций позиций на основе волатильности.

  3. Добавление стратегий по прекращению убытков, таких как отслеживание убытков или управление убытками.

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

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

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/06/2020
// Pivot points simply took the high, low, and closing price from the previous period and 
// divided by 3 to find the pivot. From this pivot, traders would then base their 
// calculations for three support, and three resistance levels. The calculation for the most 
// basic flavor of pivot points, known as ‘floor-trader pivots’, along with their support and 
// resistance levels.
//
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Pivot Point V2", shorttitle="Pivot Point V2", overlay = true)
res = input(title="Resolution", type=input.resolution, defval="D")
SellFrom = input(title="Sell from ", defval="R1", options=["R1", "R2", "R3"])
BuyFrom = input(title="Buy from ", defval="S1", options=["S1", "S2", "S3"])
width = input(1, minval=1)
reverse = input(false, title="Trade reverse")
xHigh  = security(syminfo.tickerid,res, high)
xLow   = security(syminfo.tickerid,res, low)
xClose = security(syminfo.tickerid,res, close)
vPP = (xHigh+xLow+xClose) / 3
vS1 = 2*vPP - xHigh 
vR1 = 2*vPP-xLow
vS2 = vPP - (vR1 - vS1)
vR2 = vPP + (vR1 - vS1)
vS3 = xLow - 2 * (xHigh - vPP)
vR3 = xHigh + 2 * (vPP - xLow) 
pos = 0
S = iff(BuyFrom == "S1", vS1, 
      iff(BuyFrom == "S2", vS2,
         iff(BuyFrom == "S3", vS3,0)))
B = iff(SellFrom == "R1", vR1, 
      iff(SellFrom == "R2", vR2,
         iff(SellFrom == "R3", vR3,0)))
pos := iff(close > B, 1,
       iff(close < S, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )