この戦略は複数の技術分析ツールを組み合わせた包括的な取引システムであり,主に二重EMAを使用しています (20⁄50この戦略は,トレンドフォローと価格リトラセーションの組み合わせを採用し,複数の確認を通じて取引の精度を向上させる.
戦略の基本論理は次の主要な要素に基づいています 1. 全体のトレンド方向を決定するために20期と50期 EMAのクロスオーバーを使用する 2. フィボナッチリトレースメントレベル (23.6%, 38.2%, 50%, 61.8%) を利用して潜在的なサポート/レジスタンスのレベルを特定する 3.ピボットポイント (PP) とそのサポート/レジスタンスレベル (S1/S2,R1/R2) を統合し,主要価格レベルを確認する 4. 入国条件は,同時に以下の条件を満たす必要があります. - 短期EMAは長期EMA (ロング) の上または下 (ショート) を横切る - 価格が適切なフィボナッチレベル以上/下にある - 価格がピオートポイントサポート/レジスタンスレベルを確認 5. リスク管理のために固定ストップ・ロスト (30ピップ) とテイク・プロフィート (60ピップ) を実装する
この戦略は,比較的完全な取引システムを構築するために,複数のクラシック技術分析ツールを統合している.いくつかの固有の遅れがある一方で,複数の確認メカニズムは取引の信頼性を向上させる.最適化提案の実施を通じて,戦略はライブトレーディングでのパフォーマンスを向上させる可能性がある.ライブ展開前に徹底的なバックテストを行い,特定の市場の特徴に応じてパラメータを調整することが推奨される.
/*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("Forex Strategy with EMA, Pivot, Fibonacci and Signals", overlay=true) // Input for EMAs and Pivot Points emaShortPeriod = input.int(20, title="Short EMA Period", minval=1) emaLongPeriod = input.int(50, title="Long EMA Period", minval=1) fibRetraceLevel1 = input.float(0.236, title="Fibonacci 23.6% Level") fibRetraceLevel2 = input.float(0.382, title="Fibonacci 38.2% Level") fibRetraceLevel3 = input.float(0.5, title="Fibonacci 50% Level") fibRetraceLevel4 = input.float(0.618, title="Fibonacci 61.8% Level") // Function to calculate Pivot Points and Levels pivot(high, low, close) => pp = (high + low + close) / 3 r1 = 2 * pp - low s1 = 2 * pp - high r2 = pp + (high - low) s2 = pp - (high - low) [pp, r1, s1, r2, s2] // Calculate Pivot Points [pp, r1, s1, r2, s2] = pivot(high, low, close) // Calculate 20 EMA and 50 EMA emaShort = ta.ema(close, emaShortPeriod) emaLong = ta.ema(close, emaLongPeriod) // Plot the EMAs plot(emaShort, color=color.blue, title="20 EMA", linewidth=2) plot(emaLong, color=color.red, title="50 EMA", linewidth=2) // Fibonacci Levels (manually drawn between the most recent high and low) var float fibHigh = na var float fibLow = na if (not na(high[1]) and high > high[1]) // Check if new high is formed fibHigh := high if (not na(low[1]) and low < low[1]) // Check if new low is formed fibLow := low fib23_6 = fibLow + (fibHigh - fibLow) * fibRetraceLevel1 fib38_2 = fibLow + (fibHigh - fibLow) * fibRetraceLevel2 fib50 = fibLow + (fibHigh - fibLow) * fibRetraceLevel3 fib61_8 = fibLow + (fibHigh - fibLow) * fibRetraceLevel4 plot(fib23_6, color=color.green, linewidth=1, title="Fibonacci 23.6%") plot(fib38_2, color=color.green, linewidth=1, title="Fibonacci 38.2%") plot(fib50, color=color.green, linewidth=1, title="Fibonacci 50%") plot(fib61_8, color=color.green, linewidth=1, title="Fibonacci 61.8%") // Entry conditions (Crossovers) longCondition = ta.crossover(emaShort, emaLong) and close > fib23_6 and close > s1 shortCondition = ta.crossunder(emaShort, emaLong) and close < fib23_6 and close < r1 // Exit conditions (Stop Loss and Take Profit) stopLossPips = 30 * syminfo.mintick // 30 pips Stop Loss takeProfitPips = 60 * syminfo.mintick // 60 pips Take Profit if (longCondition) strategy.entry("Buy", strategy.long, stop=stopLossPips, limit=takeProfitPips) if (shortCondition) strategy.entry("Sell", strategy.short, stop=stopLossPips, limit=takeProfitPips) // Plot Pivot Points for visual reference plot(pp, color=color.yellow, linewidth=2, title="Pivot Point") plot(r1, color=color.purple, linewidth=1, title="Resistance 1") plot(s1, color=color.purple, linewidth=1, title="Support 1") plot(r2, color=color.purple, linewidth=1, title="Resistance 2") plot(s2, color=color.purple, linewidth=1, title="Support 2") // Adding Buy and Sell Signals plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.small) plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.small)