Эта стратегия представляет собой криптовалютную трендовую стратегию, основанную на индикаторе Хайкена Аши. Она использует два экспоненциальных скользящих средних (EMAs) с различными периодами в сочетании с Хайкеном Аши и различными условиями для генерации торговых сигналов. Цель этой стратегии заключается в определении средне- и долгосрочных ценовых тенденций и своевременном входе, когда происходит перелом тренда.
Стратегия использует 50- и 100-периодные EMA. Между тем, она рассчитывает свечи Хайкена Аши, которые являются специальным свечником, который может фильтровать рыночный шум. Стратегия использует открытые, закрытые, высокие и низкие цены свечей Хайкена Аши и применяет их к 100-периодной EMA для генерации более точных торговых сигналов.
В частности, когда открытая цена 100-периодного Heiken Ashi выше цены закрытия, а открытая цена предыдущей свечи ниже цены закрытия, это длинный сигнал.
Стратегия сочетает в себе двойную систему EMA и индикатор Хайкена Аши, целью которого является своевременное использование возможностей при формировании средне- и долгосрочных тенденций.
Для смягчения рисков мы можем должным образом уменьшить диапазон стоп-лосса или рассмотреть возможность сочетания других индикаторов для определения обратного тренда.
Стратегия также может быть оптимизирована в следующих аспектах:
Стратегия криптовалютного тренда, основанная на Хайкен Аши, всесторонне учитывает такие аспекты, как суждение о тренде, время входа, контроль стоп-лосса и т. Д., что делает ее очень адаптивной к очень волатильным активам, таким как криптовалюты. Используя Хайкен Аши для фильтрации шума и принятия надежных методов контроля рисков, стратегия может эффективно использовать торговые возможности, предоставляемые среднесрочными и долгосрочными ценовыми тенденциями.
/*backtest start: 2023-01-12 00:00:00 end: 2024-01-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //@SoftKill21 strategy(title="CRYPTO HA Strategy", shorttitle="CRYPTO HA Strategy", overlay=true , default_qty_type =strategy.percent_of_equity, default_qty_value =100, commission_type= strategy.commission.percent,commission_value =0.1 ) ma1_len = input(50) ma2_len = input(100) fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2020, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2020, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //First Moving Average data o = ema(open, ma1_len) c = ema(close, ma1_len) h = ema(high, ma1_len) l = ema(low, ma1_len) // === HA calculator === ha_t = heikinashi(syminfo.tickerid) ha_o = security(ha_t, timeframe.period, o) ha_c = security(ha_t, timeframe.period, c) ha_h = security(ha_t, timeframe.period, h) ha_l = security(ha_t, timeframe.period, l) //Second Moving Average data o2 = ema(ha_o, ma2_len) c2 = ema(ha_c, ma2_len) h2 = ema(ha_h, ma2_len) l2 = ema(ha_l, ma2_len) // === Color def === ha_col = o2 > c2 ? color.white : color.lime sell = o2 > c2 and o2[1] < c2[1] and time_cond buy = o2 < c2 and o2[1] > c2[1] and time_cond plotshape(buy, color=color.green, text= "Buy", location= location.belowbar,style= shape.labelup, textcolor=color.white, size = size.tiny, title="Buy Alert",editable=false, transp=60) plotshape(sell, color=color.red, text= "Sell", location= location.abovebar,style= shape.labeldown, textcolor=color.white, size = size.tiny, title="Sell Alert", editable=false, transp=60) trendColor = buy ? color.red : sell ? color.green : na plot( buy ? close: sell ? close : na , color=trendColor, style=plot.style_line, linewidth=4, editable=false) onlylong=input(true) original=input(false) if(onlylong) strategy.entry("long",1,when=buy) strategy.close("long",when=sell) if(original) strategy.entry("long",1,when=buy) strategy.entry("short",0,when=sell) sl = input(0.075) strategy.exit("closelong", "long" , loss = close * sl / syminfo.mintick, alert_message = "sl point") strategy.exit("closeshort", "short" , loss = close * sl / syminfo.mintick, alert_message = "sl point")