この戦略は,主にEMAクロスオーバー,RSIオーバーセール条件,MACDゴールデンクロスを取引確認に使用するマルチテクニカルインジケーター取引システムである. リスク管理のためのダイナミックなリミットオーダーと複数の出口メカニズムを使用する. この戦略は,トレード信号をフィルタリングするために,相対強度指数 (RSI) と移動平均収束差異 (MACD) と組み合わせて,主要トレンドインジケーターとして9期および21期指数的な移動平均値 (EMA) を使用する.
取引の基本論理には次の主要な要素が含まれます.
この戦略は,より良いエントリー価格を達成するためにエントリー制限オーダーを使用し,複数の技術指標を組み合わせて取引の精度を向上させます.
この戦略は,移動平均値を使用してトレンドを特定し,RSIとMACDでシグナルをフィルタリングし,リミットオーダーと複数のストップメカニズムを通じてリスクを制御する,よく構造化されたマルチインジケータ取引戦略である.この戦略の強みは,信号信頼性と包括的なリスク制御にあるが,信号遅延とパラメータ最適化という課題に直面している.動的パラメータ調整と追加の補助指標を通じて改善の余地が大きい.トレンド市場状況における保守的な投資家には適している.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA 9 & 21 with RSI and MACD Buy Strategy", overlay=true) // Inputs for Simple Moving Averages sma_short = ta.ema(close, 9) sma_long = ta.ema(close, 21) // Plotting SMA plot(sma_short, color=color.green, title="SMA 9") plot(sma_long, color=color.red, title="SMA 21") // RSI Calculation rsi_length = input.int(14, title="RSI Length") rsi_threshold = input.int(70, title="RSI Threshold") rsi = ta.rsi(close, rsi_length) // MACD Calculation macd_fast = input.int(8, title="MACD Fast Length") macd_slow = input.int(18, title="MACD Slow Length") macd_signal = input.int(6, title="MACD Signal Length") [macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal) // Inputs for Limit Order Offset limit_offset = input.int(50, title="Limit Order Offset", minval=1) // 50 points below 9 EMA // User input for specific date simulationStartDate = input(timestamp("2024-12-01 00:00"), title="Simulation Start Date", group = "Simulation Dates") simulationEndDate = input(timestamp("2024-12-30 00:00"), title="Simulation End Date", group = "Simulation Dates") // Declare limit_price as float var float limit_price = na // Calculate Limit Order Price if (sma_short[1] < sma_long[1] and sma_short > sma_long) // 9 EMA crosses above 21 EMA limit_price := sma_short - limit_offset // Buy Signal Condition (only on the specified date) buy_condition = not na(limit_price) and rsi < rsi_threshold and ta.crossover(macd_line, signal_line) // Sell Signal Condition (MACD crossover down) sell_condition = ta.crossunder(macd_line, signal_line) // Track Entry Price for Point-Based Exit var float entry_price = na if (buy_condition ) strategy.order("Buy", strategy.long, comment="Limit Order at 9 EMA - Offset", limit=limit_price) label.new(bar_index, limit_price, "Limit Buy", style=label.style_label_up, color=color.green, textcolor=color.white) entry_price := limit_price // Set entry price // Exit Conditions exit_by_macd = sell_condition exit_by_points = not na(entry_price) and ((close >= entry_price + 12) or (close <= entry_price - 12)) // Adjust as per exit points // Exit all positions at the end of the day if hour == 15 and minute > 10 and strategy.position_size > 0 strategy.close_all() // Close all positions at the end of the day strategy.cancel_all() // Exit based on sell signal or point movement if (exit_by_macd or exit_by_points and strategy.position_size > 0 ) strategy.close("Buy") label.new(bar_index, close, "Close", style=label.style_label_down, color=color.red, textcolor=color.white)