Стратегия объемного комбинирования и количественного перевода

Автор:Чао Чжан, Дата: 2021-09-21 21:07:09
Тэги:

Обзор

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

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

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

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

Использует индикатор STO для обратных сигналов. Длинный, когда ближайший поднимается на 2 дня, а медленная линия STO ниже 50.

  1. Стратегия объема

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

Он идет длинным, когда обе стратегии сигнализируют длинный, и идет коротким, когда обе сигнализируют короткий.

Комбо улучшает качество сигнала, значительно уменьшая ложные сигналы от любой стратегии.

Преимущества

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

Риски

  • Рискованные реверсии без строгих правил выхода
  • Анализ объема может задерживаться
  • Исключительно на основе индикаторов, требует технического анализа
  • Для скользящих средних необходимы более длинные серии данных
  • Параметры могут быть не универсальными для всех продуктов

Риски могут быть уменьшены:

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

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

Стратегия может быть улучшена путем:

  1. Оптимизация параметров STO

    Ценности тонкой настройки K, D для лучших комбинаций

  2. Вторичное подтверждение нарушения объема

    С такими показателями, как MACD, BOLL и т.д.

  3. Оптимизация периодов скользящих средних

    Испытание различных периодов для более стабильных сигналов

  4. Добавление шаблонов диаграммы

    Ввод на шаблоны в дополнение к комбинации сигналов

  5. Испытания специфических для продукта параметров

    Параметры могут варьироваться в зависимости от продукции

Резюме

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


/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/10/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 is another version of FVE indicator that we have posted earlier 
// in this forum.
// This version has an important enhancement to the previous one that`s 
// especially useful with intraday minute charts.
// Due to the volatility had not been taken into account to avoid the extra 
// complication in the formula, the previous formula has some drawbacks:
// The main drawback is that the constant cutoff coefficient will overestimate 
// price changes in minute charts and underestimate corresponding changes in 
// weekly or monthly charts.
// And now the indicator uses adaptive cutoff coefficient which will adjust to 
// all time frames automatically.
//
// 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


FVI(Samples,Perma,Cintra,Cinter) =>
    pos = 0
    xhl2 = hl2
    xhlc3 = hlc3
    xClose = close
    xIntra = log(high) - log(low)
    xInter = log(xhlc3) - log(xhlc3[1])
    xStDevIntra = stdev(sma(xIntra, Samples) , Samples)
    xStDevInter = stdev(sma(xInter, Samples) , Samples)
    xVolume = volume
    TP = xhlc3
    TP1 = xhlc3[1]
    Intra = xIntra
    Vintra = xStDevIntra
    Inter = xInter
    Vinter = xStDevInter
    CutOff = Cintra * Vintra + Cinter * Vinter
    MF = xClose - xhl2 + TP - TP1
    FveFactor =  iff(MF > CutOff * xClose, 1, 
                  iff(MF < -1 * CutOff * xClose, -1,  0))
    xVolumePlusMinus = xVolume * FveFactor
    Fvesum = sum(xVolumePlusMinus, Samples)
    VolSum = sum(xVolume, Samples)
    xFVE = (Fvesum / VolSum) * 100
    xEMAFVE = ema(xFVE, Perma)
    pos :=iff(xFVE > xEMAFVE, 1,
    	   iff(xFVE < xEMAFVE, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Volatility Finite Volume Elements", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Samples = input(22, minval=1)
Perma = input(40, minval=1)
Cintra = input(0.1)
Cinter = input(0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFVI = FVI(Samples,Perma,Cintra,Cinter)
pos = iff(posReversal123 == 1 and posFVI == 1 , 1,
	   iff(posReversal123 == -1 and posFVI == -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 )

Больше