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


Дата создания: 2023-12-08 12:00:35 Последнее изменение: 2023-12-08 12:00:35
Копировать: 0 Количество просмотров: 624
1
Подписаться
1621
Подписчики

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

Обзор

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

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

123 Стратегия переворота

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

Стратегия прогресса в будущем

Стратегия FLD (Future Lines of Demarcation) - это стратегия отслеживания тенденций, основанная на периодических законах колебаний цены. ФЛД-линии на основе цены, средней, высокой или низкой, переносятся в будущее примерно на половину цикла, и создают торговый сигнал, когда ценовая линия пересекает линию 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 )