Следующая стратегия WaveTrend и CMF

Автор:Чао Чжан, Дата: 2023-11-16 16:38:03
Тэги:

img

Обзор

Эта стратегия сочетает в себе индикатор WaveTrend и индикатор Chaikin Money Flow (CMF) для определения направления тренда и отслеживания тенденций.

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

Индикатор WaveTrend может эффективно идентифицировать направление тренда цен. Он состоит из средней линии канала, средней линии канала и индекса канала. Средняя линия канала - это экспоненциальная скользящая средняя цена, отражающая тенденцию цен. Средняя линия канала - это скользящая средняя линия канала, используемая для определения средней линии канала. Индекс канала отражает степень отклонения цены от средней линии канала и генерирует сигналы перекупки / перепродажи.

Индикатор CMF может оценивать приток и отток средств и подтверждать тенденции. Этот индикатор основан на линии накопления / распределения, скорректированной по объему, отражающей сравнение покупательной и продажной способности. Значение около 0 указывает на баланс между притоком и оттоком средств. Ниже 0 указывает на отток средств, а выше 0 указывает на приток средств.

Эта стратегия работает в течение 15 минут. Сначала она использует индикатор WaveTrend для определения направления ценового тренда, затем использует индикатор CMF для подтверждения, чтобы следовать за тенденциями. В частности, когда индекс канала WaveTrend ниже -60 и CMF меньше -0,2, она идет на длинный. Когда индекс канала WaveTrend выше 60 и CMF больше 0,2, она идет на короткий. Условия выхода в основном основаны на индикаторе CMF - она закрывает длинную позицию, когда CMF больше 0,18, и закрывает короткую позицию, когда CMF меньше -0,18.

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

  1. Индикатор WaveTrend может эффективно определить направление ценового тренда.
  2. CMF индикатор может подтвердить направление тренда и избежать неправильных сделок.
  3. Объединение WaveTrend и CMF позволяет достичь ультракороткосрочного тренда.
  4. 15-минутный график делает его более подходящим для краткосрочной торговли.

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

  1. WaveTrend может генерировать неправильные сигналы во время консолидации.
  2. CMF может отставать и пропустить поворотные моменты тренда.
  3. Торговля в одноразовом периоде имеет более высокие риски, следует расширить период хранения.
  4. Отсутствие стратегии стоп-лосса, неспособность контролировать одиночные потери.

Решения:

  1. Добавьте другие индикаторы для подтверждения, чтобы избежать ошибочных сигналов.
  2. Настройка параметров CMF для повышения чувствительности.
  3. Расширить период хранения, чтобы снизить риски в однократном периоде.
  4. Добавьте движущуюся остановку потери, остановку по безубыточности и т.д. для контроля потери.

Оптимизация

  1. Добавьте размеры позиций для лучшего следования тренду.
  2. Добавьте стратегию стоп-лосса для ограничения одиночных потерь.
  3. Добавьте такие индикаторы, как стохастика, чтобы избежать ошибок от одного индикатора.
  4. Испытайте различные периоды ожидания, чтобы найти оптимальный результат.
  5. Оптимизируйте параметры CMF, чтобы найти лучшую комбинацию.

Резюме

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


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

//@version=3
strategy(title = "CMF - WaveTrend", shorttitle = "CMF - WaveTrend", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR)

//Chaikin Money Flow

len = input(20, minval=1, title="Length")
mas = input(title="Aggregation", defval="SUM", options=["SUM", "EMA", "WMA"])
e = input(10.0, title="Volume Exponent (0-10 reduces & 10+ increases volume effect)")
p = input(false, title="Show in Percentage")
mvs = input(false, "Factor in Price (Money Volume)")
src=input(hlc3, title="Source for price factor")

trl = min(low,close[1]), trh = max(high,close[1]) // 'true range' fixes issues caused by gaps in price
wv = pow(volume,e/10.0)*(mvs ? src : 1)
ad = (trh==trl ? 0 : (2*close-(trh+trl))/tr(true))*wv
cmf = mas=="SUM" ? sum(ad, len)/sum(wv, len) : mas=="EMA" ? ema(ad, len)/ema(wv, len) : mas=="WMA" ? wma(ad, len)/wma(wv, len) : na
cmf_p  = if p
    50*cmf+50
else
    cmf
b = p ? 50 : 0


//WaveTrend
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)
// 


longCondition = wt1 < -60 and cmf < - 0.20
if (longCondition)
 
    strategy.entry("My Long Entry Id", strategy.long)
    
 
shortCondition = wt1 > 60 and cmf > 0.20
if (shortCondition)
 
    strategy.entry("My Short Entry Id", strategy.short)
    
closeLongCondition = cmf_p > 0.18 ? true : false
closeShortCondition = cmf_p < -0.18 ? true : false
    
    
strategy.close("My Long Entry Id", when=(closeLongCondition == true))
strategy.close("My Short Entry Id", when=(closeShortCondition == true))

Больше