Количественная стратегия торговли, объединяющая обратные и будущие линии демаркации

Автор:Чао Чжан, Дата: 2023-12-08 12:00:35
Тэги:

img

Обзор

Эта стратегия объединяет стратегию 123 реверсии и стратегию будущих линий демаркации (FLD) для реализации количественной торговой стратегии, которая входит или выходит из позиций, когда обе стратегии генерируют сигналы одновременно.

Принципы

123 Стратегия отмены

Стратегия 123 возникает из книги "Как я утроил свои деньги на фьючерсном рынке". Она длится, когда цена закрытия показывает обратные модели в течение двух дней подряд, а 9-дневная медленная стохастика ниже 50; она становится короткой, когда цена закрытия показывает обратные модели в течение двух дней подряд, а 9-дневная быстрая стохастика выше 50.

Будущие направления стратегии демаркации

Стратегия фьючерсных линий демаркации (FLD) - это стратегия, основанная на периодичности колебаний цен.

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

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

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

Основные риски этой стратегии возникают из-за ложных прорывов сигналов отмены и ошибок в суждениях о линии FLD. Для первых параметры могут быть скорректированы для подтверждения сигналов отмены или добавления других вспомогательных индикаторов для улучшения точности. Для последних параметры должны быть оптимизированы, чтобы гарантировать, что FLD более точно описывает рыночные циклы. Кроме того, следует также следить за ошибками FLD при возникновении крупных перемены тренда.

Руководство по оптимизации

  1. Улучшить стратегию отмены путем добавления других индикаторов к фильтру сигналов и уменьшить вероятность ложного прорыва
  2. Сравнение различных параметров FLD для лучшего описания циклических моделей
  3. Добавление логики стоп-лосса для контроля рисков единичных потерь
  4. Эффективность параметров испытания для различных продуктов

Заключение

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


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/08/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
//  An FLD is a line that is plotted on the same scale as the price and is in fact the 
//  price itself displaced to the right (into the future) by (approximately) half the 
//  wavelength of the cycle for which the FLD is plotted. There are three FLD's that can be 
//  plotted for each cycle:
//    An FLD based on the median price.
//    An FLD based on the high price.
//    An FLD based on the low price.
//
// 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


FLD(Period,src) =>
    pos = 0
    pos := iff(src[Period] < close , 1,
             iff(src[Period] > close, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & FLD's - Future Lines of Demarcation", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Period = input(title="Period", defval=40)
src = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFLD = FLD(Period,src)
pos = iff(posReversal123 == 1 and posFLD == 1 , 1,
	   iff(posReversal123 == -1 and posFLD == -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 )

Больше