Strategi ini adalah sistem dagangan yang komprehensif yang menggabungkan pelbagai alat analisis teknikal, terutamanya menggunakan EMA ganda (20⁄50Strategi ini menggunakan gabungan trend berikut dan kaedah retracement harga untuk meningkatkan ketepatan perdagangan melalui pelbagai pengesahan.
Logik teras strategi ini adalah berdasarkan unsur-unsur utama berikut: 1. Menggunakan 20 dan 50-period EMA crossovers untuk menentukan arah trend keseluruhan 2. Menggunakan tahap retracement Fibonacci (23.6%, 38.2%, 50%, 61.8%) untuk mengenal pasti tahap sokongan / rintangan yang berpotensi 3. Mengintegrasikan Titik Pivot (PP) dan tahap sokongan / rintangan mereka (S1/S2, R1/R2) untuk mengesahkan tahap harga utama 4. Syarat kemasukan harus pada masa yang sama memenuhi: - EMA jangka pendek melintasi di atas EMA jangka panjang (untuk panjang) atau di bawah (untuk pendek) - Harga di atas/di bawah tahap Fibonacci yang sesuai - Harga mengesahkan tahap sokongan / rintangan titik pusingan 5. Melaksanakan stop-loss tetap (30 pip) dan mengambil keuntungan (60 pip) untuk pengurusan risiko
Strategi ini mengintegrasikan pelbagai alat analisis teknikal klasik untuk membina sistem perdagangan yang agak lengkap. Walaupun ia mempunyai beberapa kelewatan yang melekat, mekanisme pengesahan berganda meningkatkan kebolehpercayaan perdagangan. Melalui pelaksanaan cadangan pengoptimuman, strategi ini berpotensi untuk meningkatkan prestasi dalam perdagangan langsung.
/*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)