リバース・オープニング・エングルフィング・ストラテジー (Reverse Opening Engulfing Strategy) は,開封後の最初のキャンドルスタイクに基づいた簡単な日中取引戦略である.この戦略の核心理念は,開封後に毎日現れる最初のキャンドルスタイクの上昇傾向または下落傾向を判断し,コントラオペレーションを行うことである.最初のキャンドルスタイクが赤いヤン線である場合,ロング;最初のキャンドルスタイクが緑の陰線である場合,ショートする.この戦略は,ポジションを終了するためのストップ損失と利益メカニズムを設定する.
この戦略の原理は,開封後の最初のキャンドルスタイルの特異性である.市場が開くとき,ロングとショートの力は最も激しく対立し,逆転の可能性は比較的大きい.最初のキャンドルスタイルの上昇傾向または下落傾向を判断し,カウンターオペレーションを行うことがこの戦略の核心思想である.
具体的には,新しい日の開業後,戦略は最初のキャンドルスタイルの開業価格,閉店価格,価格変化を記録します.開業価格が閉店価格 (緑の陰線) よりも高くなった場合,それはクマが勝ち,我々はロングするべきであることを意味します.開業価格が閉店価格 (赤の陽線) よりも低い場合,それは雄牛が勝ち,我々はショートするべきであることを意味します.そのような対抗操作を行うことで,戦略は開業後に逆転の機会を捉えることを試みます.
一方,この戦略は,長期・短期ポジションのリスクと利益を制御し,過度の損失や過早な利益を取ることを避けるために,長期ストップ損失価格,長期ストップ損失価格,短期ストップ損失価格,短期利益取付価格を含むストップ損失と利益取付メカニズムも設定している.
リバース・オープニング・エングルフィング・戦略には以下の利点があります.
また,逆開封戦略にはいくつかのリスクがあります.主に以下のようなリスクがあります.
リバース・オープニング・エングルフィング・戦略は,次の側面で最適化できる:
リバース・オープニング・エングルフィング・ストラテジーは,最初のキャンドルの方向を判断し,カウンター・オペレーションを行うことで,開封後の逆転機会を把握しようとします. 戦略のアイデアは,参加コストが低く,シンプルで,実用的な価値があります. しかし,リスクについても慎重に認識し,より堅牢で信頼性の高いように戦略を実践で絶えず改善し最適化する必要があります.
/*backtest start: 2023-10-22 00:00:00 end: 2023-11-21 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © vikris //@version=4 strategy("[VJ]First Candle Strategy", overlay = true,calc_on_every_tick = true,default_qty_type=strategy.percent_of_equity,default_qty_value=100,initial_capital=750,commission_type=strategy.commission.percent, commission_value=0.02) // ********** Strategy inputs - Start ********** // Used for intraday handling // Session value should be from market start to the time you want to square-off // your intraday strategy // Important: The end time should be at least 2 minutes before the intraday // square-off time set by your broker var i_marketSession = input(title="Market session", type=input.session, defval="0915-1455", confirm=true) // Make inputs that set the take profit % (optional) longProfitPerc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01 shortProfitPerc = input(title="Short Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01 // Set stop loss level with input options (optional) longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01 shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01 // ********** Strategy inputs - End ********** // ********** Supporting functions - Start ********** // A function to check whether the bar or period is in intraday session barInSession(sess) => time(timeframe.period, sess) != 0 // Figure out take profit price longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Determine stop loss price longStopPrice = strategy.position_avg_price * (1 - longLossPerc) shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc) // ********** Supporting functions - End ********** // ********** Strategy - Start ********** // See if intraday session is active bool intradaySession = barInSession(i_marketSession) // Trade only if intraday session is active //=================Strategy logic goes in here=========================== // If start of the daily session changed, then it's first bar of the new session isNewDay = time("D") != time("D")[1] var firstBarCloseValue = close var firstBarOpenValue = open if isNewDay firstBarCloseValue := close firstBarOpenValue := open greenCandle = firstBarOpenValue < firstBarCloseValue redCandle = firstBarOpenValue > firstBarCloseValue buy = redCandle sell = greenCandle // plot(firstBarCloseValue) // plot(firstBarOpenValue) //Final Long/Short Condition longCondition = buy shortCondition =sell //Long Strategy - buy condition and exits with Take profit and SL if (longCondition and intradaySession) stop_level = longStopPrice profit_level = longExitPrice strategy.entry("My Long Entry Id", strategy.long) strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level) //Short Strategy - sell condition and exits with Take profit and SL if (shortCondition and intradaySession) stop_level = shortStopPrice profit_level = shortExitPrice strategy.entry("My Short Entry Id", strategy.short) strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level) // Square-off position (when session is over and position is open) squareOff = (not intradaySession) and (strategy.position_size != 0) strategy.close_all(when = squareOff, comment = "Square-off") // ********** Strategy - End **********