この戦略は,指数的な移動平均値 (EMA) の方向を判断することによって,長/短方向を決定する.上昇傾向のエンゲルフィングパターンと拡大された取引量がある場合,長に移動する. EMAの方向が逆転するか,下落傾向のエンゲルフィングパターンが発生した場合,ポジションを閉じる.
異なるパラメータを持つ2つの EMA を使用して市場の傾向を決定します.もしショート EMAがロング EMAよりも高くなった場合,それは牛市場であり,そうでなければそれは熊市場です.
市場が上昇傾向にあるとき,もし上昇傾向の格子が現れ,取引量が前回より1.2倍になると,ロングシグナルが起動します.このパターンは,続く強勢の牛を示します.
市場トレンドが逆転すると,つまりショート EMA がロング EMA を下回ると,牛の勢いが弱まり,既存のポジションが閉鎖されるべきである.また,下落傾向の格好が出現すると,強い勢いで下落が進んでいることを示し,ストップ損失でポジションを積極的に閉鎖すべきである.
市場構造を決定するために二重EMAを使用することで,高雄/熊の状態を正確に判断できます.
膨張した音量フィルターと組み合わせると,偽のブレイクによって誤導されるのを避ける.
ストップ・ロスのメカニズムがあります.ストップ・ロスの価格を設定せず,市場構造の逆転を使用してストップ・ロスを行うことで,不必要なスライドを減らすことができます.
双 EMA は,市場構造を誤って判断し,傾向を見逃したり,誤ってロングに行くこともあります. EMA 期間を調整することができます.
流通パターンは 市場が変化することで 誤りになり 偽の取引を避けるために より多くのフィルターを追加できます
ストップ・ロスの価格がないことは,より大きな損失につながる可能性があります.ブレイク・イヴのような他のストップ・ロスの方法もテストできます.
MACD,A/Dなどの指標は ロング/ショートを決めるのに使えます
需要に応じて適正な固定ストップ損失価格を追加します.
シンボルの取引の特徴に基づいて EMA 期間を最適化する.
この戦略の論理は明確で理解が容易で,EMAを使用して構造を決定し,ブレイクアウトを捕捉するパターンを吸収する.その利点はシンプルな判断論理と明確な取引信号である.しかし,罠にかかったリスクは存在する.さらなる最適化はより良い収益を得ることができます.
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=5 // # ========================================================================= # // # | STRATEGY | // # ========================================================================= # strategy( title = "fpemehd Strategy001", shorttitle = "f_001", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000000, currency = currency.USD, slippage = 0, commission_type = strategy.commission.cash_per_order, commission_value = 0.01, process_orders_on_close = true) // # ========================================================================= # // # | STRATEGY | // # ========================================================================= # // Inputs I_start_date = input (defval = timestamp("20 Jan 1990 00:00 +0900")) I_finish_date = input(defval = timestamp("20 Dec 2030 00:00 +0900")) I_short_ema = input.int(defval = 15 , title = "Short EMA", minval = 1 , maxval = 300 , step = 1) I_long_ema = input.int(defval = 30 , title = "Long EMA", minval = 1 , maxval = 300 , step = 1) I_body = input.float(defval = 1 , title = "Size of Body", minval = 1 , maxval = 5 , step = 0.1) time_cond = true // Calculate Engulfing Candles C_uptrend = false C_downtrend = false C_ema_short = ta.ema(source = close, length = I_short_ema) C_ema_long = ta.ema(source = close, length = I_long_ema) C_uptrend := close > C_ema_short and C_ema_short > C_ema_long C_downtrend := close < C_ema_short and C_ema_short < C_ema_long C_pre_body = math.abs(open[1]-close[1]) C_pre_body_ratio = (math.abs(open[1]-close[1])) / (math.abs(high[1]-low[1])) * 100 C_now_body = math.abs(open-close) C_now_body_ratio = (math.abs(open-close)) / (math.abs(high-low)) * 100 C_bullish_engulfing = (open[1] > close[1] and open <= close) and (low < low[1] and high > high[1]) C_bearish_engulfing = (open[1] < close[1] and open >= close) and (low < low[1] and high > high[1]) C_avoid_doge = (C_pre_body_ratio > I_body and C_now_body_ratio > I_body) ? true : false C_volume_filter = volume > volume[1] * 1.2 // Signals long_signal = C_uptrend and C_bullish_engulfing and C_avoid_doge and C_volume_filter close_signal = C_downtrend or C_bearish_engulfing if long_signal and time_cond strategy.entry(id = "Long", direction = strategy.long) if close_signal and time_cond strategy.close(id = "Long")