
Стратегия использует в сочетании индикатора волнового канала и индикатора денежных потоков, чтобы идентифицировать направление тенденции и отслеживать тенденцию. Стратегия работает на 15-минутных временных циклах, определяет направление ценовой тенденции через волновый канал, затем использует индикатор денежных потоков для подтверждения тенденции и отслеживает тенденцию сверх короткой линии.
Индикатор WaveTrend позволяет эффективно идентифицировать направление тренда цены. Он состоит из средней линии канала, средней цены канала и индекса канала. Средняя линия канала - это показательная движущаяся средняя цены, отражающая тенденцию цены.
Показатель денежных потоков (CMF) позволяет оценить приток и отток денег, подтверждая тенденцию. Этот показатель основан на накоплении/распределении после корректировки объемов сделок и отражает соотношение сил между покупателями и продавцами. Значение около 0 означает равновесие притока и оттока денег; ниже 0 означает отток денег, выше 0 означает приток денег.
Эта стратегия работает на 15-минутных циклах, с помощью индикатора волнового канала определяет направление ценовой тенденции, а затем использует индикатор денежных потоков для подтверждения, что позволяет отслеживать тенденцию. В частности, если индикатор волнового канала индикатор канального индекса ниже 60, а индикатор денежных потоков меньше -0.2, то делать больше; если индикатор волнового канала индикатора канала индикатора более 60, а индикатор денежных потоков больше 0,2, то делать свободные позиции.
Решение риска:
Стратегия использует индикаторы волнового канала для определения направления тренда и подтверждения показателей денежных потоков для осуществления операций по отслеживанию тренда сверх короткой линии. Преимущество стратегии заключается в том, что портфель показателей разумен, эффективно отслеживает тенденцию, а 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))