この戦略は,上昇傾向の開始を特定するために,EMAクロスオーバーとRSI隠された上昇差異信号に基づいてロングポジションを開設する. EMAライン,RSI指標,Kライン閉じる価格の組み合わせは,上昇勢力を確保するための二重確認を提供します.この戦略は,中長期のトレンドを追跡し,価格統合後にロングポジションを開設するのに適しています.
EMA 戦略: 50 期間の EMA と 250 期間の EMA の黄金十字を用いて,トレンド方向を決定する.50 EMA の上での閉じることは,長い信号である.
RSI 隠れた差異戦略:RSI は低低値を形成し,価格は高低値を形成し,初期にトレンド逆転をシグナル化します.ピボットポイントの数を制限することで,誤った信号をフィルタリングします.
K線閉じる戦略:閉じる価格が50 EMA線を超えるとロングする.
上記の3つの戦略の組み合わせによって 上向きの傾向が始まり,それに応じてロングポジションが開かれる.
EMA線を使用して,RSI逆転信号とともにトレンド方向を決定することで,トレンドの開始時に早期に入場できます.
EMA線,RSI指標,K線閉値からの二重確認は 誤った信号を効果的にフィルタリングします
中長期の傾向を追跡することで,統合後の新たな上昇傾向を特定することが可能になります.
EMA線が死十字を表示するとポジションを閉じる.
RSIの隠れた差異を特定するには経験が必要で,パラメータの調節が不適切であれば,欠落または誤った信号が生じる可能性があります.
パラメータは,異なる取引ツールに最適化する必要があります.
動的に EMA パラメータを調整し,より正確なトレンド決定をします.
RSIのパラメータを細かく調節して 隠れた差異信号の精度を向上させる
ATRや百分比停止のようなストップ・ロスのメカニズムを追加してリスクを制御します
低迷傾向の取引のためのショートポジションの戦略を開発する.
この戦略は,トレンド決定のためのEMA線と,精度を高めるためのRSIシグナルを組み合わせます.統合後に新しい上昇傾向を特定します.適切なパラメータ調節とリスク管理により,良い結果を達成することができます.単純な移動平均戦略と比較して,より優れた勝利率を持つトレンドを捉えるのにより高い精度を持っています.全体的には,戦略に従う実践的なトレンドです.
/*backtest start: 2024-01-25 00:00:00 end: 2024-02-01 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="EMA RSI ATR Hidden Div Strat", shorttitle="Hidden Div Strat", overlay = true, pyramiding = 0, max_bars_back=3000, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=5000, currency=currency.USD) // Time Range FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12) FromDay=input(defval=1,title="FromDay",minval=1,maxval=31) FromYear=input(defval=2020,title="FromYear",minval=2016) ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12) ToDay=input(defval=1,title="ToDay",minval=1,maxval=31) ToYear=input(defval=9999,title="ToYear",minval=2017) start=timestamp(FromYear,FromMonth,FromDay,00,00) finish=timestamp(ToYear,ToMonth,ToDay,23,59) window()=>true // Bar's time happened on/after start date? afterStartDate = time >= start and time<=finish?true:false //EMA'S emasrc = close len1 = input(50, minval=1, title="EMA1") ema1 = ema(emasrc, len1) col1 = color.white len2 = input(250, minval=1, title="EMA2") ema2 = ema(emasrc, len2) col2 = color.yellow //Plots plot(ema1, title="EMA1", linewidth=1, color=col1) plot(ema2, title="EMA2", linewidth=1, color=col2) //Stoch periodK = input(4, title="K", minval=1) periodD = input(4, title="D", minval=1) smoothK = input(3, title="Smooth", minval=1) k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) //Hidden Divergence Indikator len = input(title="RSI Period", minval=1, defval=14) src = input(title="RSI Source", defval=close) lbR = input(title="Pivot Lookback Right", defval=1) lbL = input(title="Pivot Lookback Left", defval=19) rangeUpper = input(title="Max of Lookback Range", defval=20) rangeLower = input(title="Min of Lookback Range", defval=4) hiddenBullColor = color.new(color.green, 80) textColor = color.white noneColor = color.new(color.white, 100) osc = rsi(src, len) plFound = na(pivotlow(osc, lbL, lbR)) ? false : true phFound = na(pivothigh(osc, lbL, lbR)) ? false : true _inRange(cond) => bars = barssince(cond == true) rangeLower <= bars and bars <= rangeUpper //------------------------------------------------------------------------------ // Hidden Bullish // Osc: Lower Low oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1]) // Price: Higher Low priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1) hiddenBullCond = priceHL and oscLL and plFound //buy Conditions buyhiddenbull = hiddenBullCond[1] or hiddenBullCond[2] or hiddenBullCond[3] or hiddenBullCond[4] or hiddenBullCond[5] or hiddenBullCond[6] or hiddenBullCond[7] or hiddenBullCond[8] or hiddenBullCond[9] or hiddenBullCond[10] emacondition = ema1 > ema2 upcondition = close[1] > ema1[1] and ema2[1] and close[2] > ema1[2] and ema2[2] and close[3] > ema1[3] and ema2[3] crossup = k[0] >= d[0] and k[1] <= d[1] longcondition = emacondition and upcondition and crossup and buyhiddenbull if (afterStartDate) strategy.entry("Long", strategy.long, when = longcondition) //TakeProfit, StopLoss lowest low profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=1.6) loLen = input(title="Lowest Low Lookback", type=input.integer, defval=38, minval=2) stop_level = lowest(low, loLen)[1] bought = strategy.position_size[1] < strategy.position_size barsbought = barssince(bought) if strategy.position_size>0 profit_level = strategy.position_avg_price + ((strategy.position_avg_price - stop_level[barsbought])*profitfactor) strategy.exit(id="TP/ SL", stop=stop_level[barsbought], limit=profit_level)