Стратегия разворота модели импульса


Дата создания: 2023-11-15 15:36:39 Последнее изменение: 2023-11-15 15:36:39
Копировать: 0 Количество просмотров: 632
1
Подписаться
1617
Подписчики

Стратегия разворота модели импульса

Обзор

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

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

Стратегия состоит из двух частей:

  1. Стратегия 123 форм реверсии
  • Показатель Stoch для определения перекупа и перепродажи
  • Произойти дисконт, когда цена закрытия падает два дня подряд, а скоростная линия Stoch выше, чем медленная линия
  • Если конечная цена повышается два дня подряд, а скоростная линия Stoch ниже скоростной линии
  1. Легко подвижная стратегия
  • Расчет среднего значения за предыдущий день
  • Средняя точка отсчета перемещения (изменения) относительно предыдущего дня
  • Рассчитывается соотношение промежуточного перемещения и объема транзакций
  • При более высокой стоимости, чем обесценение, она повышается, а при меньшей - снижается

Комбинируя два сигнала, когда Easy of Movement и 123 формы одновременно делают многосигналы, открывают многопозиции; когда Easy of Movement и 123 формы одновременно делают пустые сигналы, открывают пустые позиции.

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

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

  1. Повышение точности сигналов в сочетании с ценовой технологией и динамикой рынка

  2. 123 формы обратного схватывания поворотных точек, легко перемещаются, чтобы определить динамику тренда, они дополняют друг друга

  3. Stoch избегает повторного открытия позиций в ликвидации

  4. Логика транзакций проста, понятна и легко реализуема

  5. Настраиваемые параметры, адаптированные к различным рыночным условиям

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

Однако эта стратегия также несет в себе некоторые риски:

  1. Слишком большая зависимость от параметров, неправильные параметры могут привести к частым сделкам или пропущенным счетам

  2. Использование множества условий фильтрации в сочетании может привести к низкой частоте создания сигнала

  3. Легко подвижные индикаторы, чувствительные к колебаниям рынка, могут вызывать ложные сигналы

  4. Небольшая отклонение от фиксированного диска, необходимость контролировать размер позиций

  5. Только для акций с тенденциями, не подходит для рыночной ликвидации

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

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

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

  2. Присоединяйтесь к стратегии Stop Loss и строго контролируйте одиночные потери

  3. Включение фильтрации трендов, чтобы избежать обратной торговли

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

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

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

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

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/04/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This indicator gauges the magnitude of price and volume movement. 
// The indicator returns both positive and negative values where a 
// positive value means the market has moved up from yesterday's value 
// and a negative value means the market has moved down. A large positive 
// or large negative value indicates a large move in price and/or lighter 
// volume. A small positive or small negative value indicates a small move 
// in price and/or heavier volume.
// A positive or negative numeric value. A positive value means the market 
// has moved up from yesterday's value, whereas, a negative value means the 
// market has moved down. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

EOM(BuyZone, SellZone) =>
    pos = 0
    xHigh = high
    xLow = low
    xVolume = volume
    xHalfRange = (xHigh - xLow) * 0.5
    xMidpointMove = mom(xHalfRange, 1)
    xBoxRatio = iff((xHigh - xLow) != 0, xVolume / (xHigh - xLow), 0)
    nRes = iff(xBoxRatio != 0, 1000000 * ((xMidpointMove - xMidpointMove[1]) / xBoxRatio), 0)
    pos := iff(nRes > BuyZone, 1,
             iff(nRes < SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ease of Movement (EOM)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
BuyZone = input(4000, minval=1)
SellZone = input(-4000)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEOM = EOM(BuyZone, SellZone)
pos = iff(posReversal123 == 1 and posEOM == 1 , 1,
	   iff(posReversal123 == -1 and posEOM == -1, -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 )