Двойной показатель средней тенденции реверсии в соответствии со стратегией

Автор:Чао Чжан, Дата: 2024-02-01 10:55:30
Тэги:

img

Обзор

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

Принципы

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

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

Эта стратегия генерирует фактические ордера на покупку и продажу, когда оба индикатора одновременно выдают согласованные торговые сигналы.

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

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

Риски и решения

  • Трудно извлечь выгоду из возможностей перехода в случае длительного одностороннего восходящего или нисходящего тренда, невозможно выйти на рынок

  • Может расслабить параметры среднего индикатора реверсии для увеличения шансов захвата сигналов покупки и продажи

  • Также можно увеличить размер позиции, чтобы компенсировать прибыль.

  • Неточные сигналы отмены могут привести к недействительности стратегии

  • Может оптимизировать параметры или добавить этапы подтверждения сигнала для фильтрации ложных сигналов

Области улучшения

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

Резюме

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 02/02/2021
// 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
// The Market Facilitation Index is an indicator that relates price range to 
// volume and measures the efficency of price movement. Use the indicator to 
// determine if the market is trending. If the Market Facilitation Index increased, 
// then the market is facilitating trade and is more efficient, implying that the 
// market is trending. If the Market Facilitation Index decreased, then the market 
// is becoming less efficient, which may indicate a trading range is developing that 
// may be a trend reversal.
//
// 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


MFI(BuyZone,SellZone) =>
    pos = 0.0
    xmyVol = volume
    xmyhigh = high
    xmylow = low
    nRes = (xmyhigh - xmylow) / xmyVol * 10000
    pos := iff(nRes > BuyZone, 1,
             iff(nRes < SellZone, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & Market Facilitation Index", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- MFI ----")
SellZone = input(6.2, minval=0.01, step = 0.01)
BuyZone = input(1, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMFI = MFI(BuyZone,SellZone)
pos = iff(posReversal123 == 1 and posMFI == 1 , 1,
	   iff(posReversal123 == -1 and posMFI == -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 )

Больше