Селективная стратегия двойного перекрытия

Автор:Чао Чжан, Дата: 2023-10-26 16:56:56
Тэги:

img

Обзор

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

Логика стратегии

Стратегия состоит из двух перекрывающихся подстратегий:

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

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

  1. Стратегия осциллятора DSS

Эта стратегия использует осциллятор DSS для анализа перекупленной перепроданности. Она длинная, если 5-дневный MA ниже 10-дневного MA и 20-дневного уровня перепроданности, и короткая, если 5-дневный MA выше 10-дневного MA и 80-дневного уровня перепроданности. Эта стратегия перекупленной перепроданности помогает избежать ненужных сделок в иррациональных зонах.

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

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

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

  2. Простая логика и небольшое количество параметров позволяют легко реализовать 123 обращение.

  3. Сочетание улучшает надежность сигнала за счет уменьшения ложных сигналов.

  4. Гибкая настройка параметров адаптирует стратегию к различным рынкам.

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

  1. Стратегии реверсии включают в себя подборку пенни риска и риска на различных рынках.

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

  3. Дивергентные сигналы могут упустить торговые возможности.

  4. Простые ценовые показатели ограничивают прибыльность.

Решения:

  1. Сокращение периодов хранения для снижения риска.

  2. Тщательная настройка параметров на основе успешных примеров.

  3. Добавьте фильтры, чтобы улучшить стратегию.

  4. Оптимизируйте время входа или размещение позиции.

Руководство по улучшению

  1. Испытать другие индикаторы обратного движения для улучшения точности сигнала.

  2. Изучите альтернативные показатели перекупленности и перепродажи, такие как RSI.

  3. Добавьте стоп-лосс для блокировки прибыли и ограничения потерь.

  4. Оптимизировать параметры для различных рынков.

  5. Рассмотрим динамическую настройку параметров.

  6. Построить модели машинного обучения для генерации сигналов.

Заключение

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


/*backtest
start: 2023-09-25 00:00:00
end: 2023-10-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/03/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
// Double Smoothed Stochastics (DSS) is designed by William Blaw. 
// It attempts to combine moving average methods with oscillator principles. 
//
// 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

DSSB(PDS, EMAlen,TriggerLen,Overbought,Oversold) =>
    pos = 0
    xPreCalc = ema(stoch(close, high, low, PDS), EMAlen)
    xDSS = ema(stoch(xPreCalc, xPreCalc, xPreCalc, PDS), EMAlen)
    xTrigger = ema(xDSS, TriggerLen)
    pos := iff(xTrigger < xDSS and xTrigger < Oversold, -1,
	         iff(xTrigger > xDSS and xTrigger > Overbought, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & DSS Bressert", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
PDS = input(10, minval=1)
EMAlen = input(9, minval=1)
TriggerLen = input(5, minval=1)
Overbought = input(80, minval=1)
Oversold = input(20, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDSS = DSSB(PDS, EMAlen,TriggerLen,Overbought,Oversold)
pos = iff(posReversal123 == 1 and posDSS == 1 , 1,
	   iff(posReversal123 == -1 and posDSS == -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 )

Больше