Strategi Dagangan Forex Berasaskan EMA Langkah Tingkat

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

img

Ringkasan

Ini adalah strategi perdagangan forex jangka pendek (1-5 minit) yang terutamanya menggunakan hubungan harga jumlah dalam teori pasang surut dan pelbagai EMA Langkah Tangga untuk meramalkan titik pembalikan trend untuk perdagangan penjejakan trend jangka pendek. Strategi ini sesuai untuk perdagangan frekuensi tinggi.

Prinsip

Isyarat perdagangan strategi ini datang dari dua bahagian:

  1. Penghakiman hubungan harga volum berdasarkan harga purata volum. Khususnya, strategi ini mengira EMA harga purata volum dari tempoh yang berbeza (boleh dikonfigurasi) untuk menilai perubahan trend menaik dan menurun. Jika EMA tempoh pendek melintasi di atas EMA tempoh yang lebih lama, ia dianggap sebagai isyarat menaik. Jika EMA tempoh pendek melintasi di bawah EMA tempoh yang lebih lama, ia dianggap isyarat menurun.

  2. Sinyal pembalikan trend yang dinilai oleh Stairstep EMA. Stairstep EMA merujuk kepada penetapan beberapa EMA dengan parameter yang berbeza, seperti 10 hari, 20 hari, 50 hari, dan lain-lain.

Strategi ini akan menggabungkan kedua-dua isyarat ini untuk menentukan kemasukan. Khususnya, jika hubungan harga jumlah dinilai sebagai bullish, dan Stairstep EMA menunjukkan bahawa beberapa EMA telah berubah menjadi bullish, kedudukan panjang akan diambil. Sebaliknya, jika hubungan harga jumlah dinilai sebagai bearish, dan Stairstep EMA menunjukkan beberapa EMA telah berubah menjadi bearish, kedudukan pendek akan diambil.

Kelebihan

Strategi ini menggabungkan kelebihan harga purata jumlah dan pelbagai EMA yang boleh meningkatkan ketepatan dan kestabilan isyarat:

  1. Menghakimi hubungan harga jumlah berdasarkan harga purata jumlah boleh lebih tepat daripada hanya penilaian harga EMA, mengelakkan ditipu oleh turun naik harga yang dipertingkatkan.

  2. Stairstep EMA boleh meningkatkan dimensi penghakiman dengan urutan EMA parameter yang berbeza, mengelakkan bunyi EMA tunggal.

  3. Gabungan kedua-dua isyarat membolehkan pengesahan bersama dan mengurangkan isyarat palsu.

  4. Ia sesuai untuk perdagangan jangka pendek frekuensi tinggi dan dapat dengan cepat menangkap peluang pembalikan kecil dalam julat.

  5. Parameter strategi boleh dikonfigurasi secara fleksibel untuk mengoptimumkan untuk pelbagai jenis dan kekerapan.

Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Terlalu bergantung kepada penunjuk teknikal, terdapat kemungkinan untuk disesatkan oleh keadaan pasaran yang tidak menentu.

  2. Operasi jangka pendek agak sensitif terhadap kos dagangan, slippage dan komisen perlu dikawal dengan baik.

  3. Parameter EMA jangka pendek memerlukan pengoptimuman yang kerap, jika tidak, ia mungkin tidak sah.

  4. Perbezaan harga jumlah tidak semestinya menghasilkan pembalikan, terdapat risiko pertimbangan yang salah.

  5. Urutan pelbagai EMA tidak sepenuhnya boleh dipercayai dan juga boleh menyebabkan salah penilaian.

Tindakan balas:

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

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

  3. Uji semula dan optimumkan parameter secara berkala.

  4. Perdagangan berhampiran tahap sokongan / rintangan utama untuk meningkatkan kadar kejayaan.

  5. Penggunaan dengan penunjuk lain untuk pengesahan berbilang dimensi.

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan dalam aspek berikut:

  1. Uji kaedah yang berbeza untuk mengira hubungan harga jumlah untuk mencari parameter yang lebih stabil.

  2. Meningkatkan lebih banyak tahap penunjuk EMA Stairstep.

  3. Menggabungkan isyarat penunjuk lain untuk penapisan, seperti RSI, MACD, dll.

  4. Mengoptimumkan mekanisme stop loss seperti memindahkan stop loss, pesanan menunggu, dan lain-lain.

  5. Mengoptimumkan parameter berdasarkan ciri-ciri instrumen dagangan yang berbeza untuk membangunkan set parameter yang sesuai.

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

  7. Jelajahi strategi keluar yang berbeza seperti keluar tetap, keluar trend, dll.

  8. Memperkenalkan mekanisme parameter adaptif untuk menyesuaikan parameter secara automatik berdasarkan perubahan pasaran.

Ringkasan

Strategi ini menggabungkan kelebihan harga purata jumlah dan EMA Langkah untuk perdagangan pengesanan trend jangka pendek. Strategi ini mempunyai kestabilan dan ketepatan yang tinggi, tetapi kawalan risiko dan pengoptimuman parameter perlu diperhatikan. Dengan pengoptimuman dan pengujian berterusan, digabungkan dengan penunjuk teknikal lain, ia boleh menjadi strategi perdagangan jangka pendek yang cekap.


/*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 lanjut