Strategi Trading Forex Volume Price Trend Reversal Berdasarkan EMA Tangga

Penulis:ChaoZhang, Tanggal: 2023-11-07 17:03:57
Tag:

img

Gambaran umum

Ini adalah strategi perdagangan forex jangka pendek (1-5 menit) yang terutama memanfaatkan hubungan harga volume dalam teori pasang surut dan beberapa EMA Langkah Tangga untuk memprediksi titik pembalikan tren untuk perdagangan pelacakan tren jangka pendek. Strategi ini cocok untuk perdagangan frekuensi tinggi.

Prinsip

Sinyal perdagangan dari strategi ini berasal dari dua bagian:

  1. Judgment Volume Price Relationship berdasarkan volume average price. Secara khusus, strategi menghitung EMA dari volume average price dari periode yang berbeda (bisa dikonfigurasi) untuk menilai perubahan tren bullish dan bearish. Jika EMA periode pendek melintasi di atas EMA periode yang lebih lama, itu dianggap sinyal bullish. Jika EMA periode pendek melintasi di bawah EMA periode yang lebih lama, itu dianggap sinyal bearish.

  2. Sinyal pembalikan tren yang dinilai oleh EMA langkah tangga. EMA langkah tangga mengacu pada pengaturan beberapa EMA dengan parameter yang berbeda, seperti 10 hari, 20 hari, 50 hari, dll.

Strategi ini akan menggabungkan kedua sinyal ini untuk menentukan masuk. Secara khusus, jika hubungan harga volume dinilai bullish, dan Stairstep EMA menunjukkan bahwa beberapa EMA telah berubah menjadi bullish, posisi panjang akan diambil. Sebaliknya, jika hubungan harga volume dinilai bearish, dan Stairstep EMA menunjukkan beberapa EMA telah berubah menjadi bearish, posisi pendek akan diambil.

Keuntungan

Strategi ini menggabungkan keuntungan dari harga rata-rata volume dan beberapa EMA yang dapat meningkatkan akurasi dan stabilitas sinyal:

  1. Menghakimi hubungan harga volume berdasarkan harga rata-rata volume dapat lebih akurat daripada hanya menilai harga EMA, menghindari tertipu oleh fluktuasi harga yang meningkat.

  2. Stairstep EMA dapat meningkatkan dimensi penilaian dengan urutan EMA parameter yang berbeda, menghindari kebisingan dari satu EMA.

  3. Kombinasi kedua sinyal memungkinkan verifikasi timbal balik dan mengurangi sinyal palsu.

  4. Ini cocok untuk perdagangan jangka pendek frekuensi tinggi dan dapat dengan cepat menangkap peluang pembalikan kecil dalam kisaran.

  5. Parameter strategi dapat dikonfigurasi secara fleksibel untuk dioptimalkan untuk berbagai varietas dan frekuensi.

Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Terlalu bergantung pada indikator teknis, ada kemungkinan tertipu oleh kondisi pasar yang tidak menentu.

  2. Operasi jangka pendek relatif sensitif terhadap biaya perdagangan, slippage dan komisi perlu dikendalikan dengan baik.

  3. Parameter EMA jangka pendek perlu sering dioptimalkan, jika tidak, mereka mungkin menjadi tidak valid.

  4. Perbedaan harga volume tidak selalu menghasilkan pembalikan, ada risiko penilaian yang salah.

  5. Urutan beberapa EMA tidak sepenuhnya dapat diandalkan dan juga dapat menyebabkan kesalahan penilaian.

Pengendalian:

  1. Gabungkan faktor-faktor yang lebih mendasar untuk penilaian.

  2. Sesuaikan posisi untuk memastikan kerugian pada perdagangan tunggal tidak terlalu besar.

  3. Uji ulang dan optimalkan parameter secara teratur.

  4. Perdagangan di dekat level support/resistance kunci untuk meningkatkan tingkat keberhasilan.

  5. Penggunaan dengan indikator lain untuk verifikasi multi-dimensi.

Arahan Optimasi

Strategi ini juga dapat dioptimalkan dalam aspek berikut:

  1. Uji metode yang berbeda untuk menghitung hubungan harga volume untuk menemukan parameter yang lebih stabil.

  2. Meningkatkan lebih banyak tingkat indikator Stairstep EMA.

  3. Menggabungkan sinyal indikator lain untuk penyaringan, seperti RSI, MACD, dll.

  4. Mengoptimalkan mekanisme stop loss seperti memindahkan stop loss, pending orders, dll.

  5. Mengoptimalkan parameter berdasarkan karakteristik instrumen perdagangan yang berbeda untuk mengembangkan set parameter yang sesuai.

  6. Memperkenalkan algoritma pembelajaran mesin untuk melatih model penilaian menggunakan data besar.

  7. Jelajahi strategi keluar yang berbeda seperti keluar tetap, trend tracking exit, dll.

  8. Memperkenalkan mekanisme parameter adaptif untuk menyesuaikan parameter secara otomatis berdasarkan perubahan pasar.

Ringkasan

Strategi ini menggabungkan keuntungan dari harga rata-rata volume dan Stairstep EMA untuk perdagangan pelacakan tren jangka pendek. Strategi ini memiliki stabilitas dan akurasi yang tinggi, tetapi perlu dicatat kontrol risiko dan optimasi parameter. Dengan optimasi dan pengujian terus menerus, dikombinasikan dengan indikator teknis lainnya, ini dapat menjadi strategi perdagangan jangka pendek yang efisien.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
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/
// © exlux99

//@version=5

strategy("Forex Fractal EMA Scalper", overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Period Fractals", defval=2, minval=2, group="Optimization Parameters")

src = input(hl2, title="Source for EMA's", group="Optimization Parameters")
len1 = input.int(10, minval=1, title="Length EMA 1", group="Optimization Parameters")
out1 = ta.ema(src, len1)
len2 = input.int(20, minval=1, title="Length EMA 2", group="Optimization Parameters")
out2 = ta.ema(src, len2)
len3 = input.int(100, minval=1, title="Length EMA 3", group="Optimization Parameters")
out3 = ta.ema(src, len3)



// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true

for i = 1 to n
    upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4

upFractal = (upflagDownFrontier and flagUpFrontier)


// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true

for i = 1 to n
    downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4

downFractal = (downflagDownFrontier and flagDownFrontier)

// plotshape(downFractal, style=shape.triangledown, location=location.belowbar, offset=-n, color=#F44336, size = size.small)
// plotshape(upFractal, style=shape.triangleup,   location=location.abovebar, offset=-n, color=#009688, size = size.small)


long= out1 > out2 and out2>out3 and upFractal
short= out1 < out2 and out2<out3 and downFractal


strategy.entry("long",strategy.long,when= short)
strategy.entry("short",strategy.short,when=long)

tp=input(25, title="TP in PIPS", group="Risk Management")*10
sl=input(25, title="SL in PIPS", group="Risk Management")*10


strategy.exit("X_long", "long", profit=tp,  loss=sl  )
strategy.exit("x_short", "short",profit=tp, loss=sl  )


Lebih banyak