この戦略は,ハイケン・アシ指標に基づいた仮想通貨のトレンドフォロー戦略である.これは,ハイケン・アシと異なる期間と様々な条件を組み合わせた2つの指数的な移動平均値 (EMA) を使用して取引信号を生成する.この戦略の目標は,中期から長期間の価格トレンドを特定し,トレンド逆転が起きたときにタイミングで入る.
この戦略は50期と100期EMAを使用している.一方,市場騒音をフィルタリングできる特別なキャンドルスタイクであるハイケン・アシのキャンドルを計算する.この戦略は,ハイケン・アシのキャンドルのオープン,閉鎖,高値,低値を使用して,より正確な取引信号を生成するために100期EMAに適用する.
具体的には,100期ヘイケンアシのオープン価格が終了価格より高く,前のキャンドルのオープン価格が終了価格より低くなった場合,それはロング信号である.逆に,100期ヘイケンアシのオープン価格が終了価格より低く,前のキャンドルのオープン価格が終了価格より高くなった場合,それはショート信号である.
この戦略は,二重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")