Lilin Purata Fibonacci dengan Strategi Purata Bergerak untuk Perdagangan Kuantitatif

Penulis:ChaoZhang, Tarikh: 2024-01-19 14:36:45
Tag:

img

Ringkasan

Strategi ini membina lilin purata dan purata bergerak berdasarkan urutan Fibonacci untuk melaksanakan perdagangan kuantitatif dengan hanya kedudukan panjang dan tidak ada kedudukan pendek.

Prinsip Strategi

Langkah utama strategi ini ialah:

  1. Mengira purata harga tutup, tinggi, rendah dan terbuka 10 kitaran Fibonacci yang paling baru untuk membina lilin purata.

  2. Mengira purata bergerak eksponen (EMA) 1-, 2-, 3-, 5-, 8-, 13-, 21-, 34- dan 55-period dari harga penutupan purata, dan mengambil purata mereka untuk mendapatkan purata EMA.

  3. Tetapkan syarat panjang dan dekat: buka kedudukan panjang apabila lilin purata menunjukkan corak menaik (seperti penutupan di atas terbuka, penutupan menaik) dan tutup di atas EMA purata; tutup kedudukan panjang apabila lilin purata menunjukkan corak menurun (seperti penutupan di bawah terbuka, penutupan menurun) dan menutup di bawah EMA purata.

Dengan mengira lilin purata untuk menapis turun naik harga dan digabungkan dengan penunjuk purata bergerak untuk menjana isyarat perdagangan, strategi ini dapat dengan berkesan mengenal pasti trend dan mengawal risiko perdagangan.

Kelebihan

  1. Lilin purata berdasarkan urutan Fibonacci boleh menapis bunyi harga rawak dengan berkesan dan mengenal pasti isyarat trend.

  2. Purata pelbagai EMA meningkatkan kestabilan tahap sokongan/perlawanan dan meningkatkan kualiti isyarat.

  3. Hanya kedudukan panjang mengurangkan bilangan dagangan, mengurangkan kos dagangan dan kesan slippage.

  4. Berprestasi baik pada jangka masa yang lebih besar, sesuai untuk perdagangan jangka sederhana hingga panjang.

Risiko

  1. Strategi hanya panjang boleh menimbulkan kerugian yang ketara di pasaran menurun.

  2. Garis EMA cenderung untuk ketinggalan, berpotensi kehilangan titik masuk terbaik.

  3. Mencari jangka masa yang terlalu panjang boleh kehilangan peluang dalam jangka masa yang lebih pendek.

  4. Ruang pengoptimuman parameter yang terhad bermakna prestasi dagangan sebenar mungkin kurang daripada hasil backtest.

Kawasan Peningkatan

  1. Boleh menguji menambah stop loss yang sesuai kepada kedudukan keluar apabila kerugian meningkat.

  2. Boleh menggabungkan langkah-langkah turun naik seperti ATR untuk menyesuaikan saiz kedudukan secara dinamik.

  3. Boleh menguji mengambil kedudukan pendek yang sesuai semasa penurunan untuk meningkatkan keuntungan.

  4. Boleh mengoptimumkan parameter tempoh EMA untuk mencari kombinasi terbaik.

Kesimpulan

Strategi ini mengenal pasti isyarat trend untuk perdagangan kuantitatif dengan membina lilin purata Fibonacci dan penunjuk purata bergerak. Ia mengambil kesempatan untuk menapis bunyi harga dengan lilin purata dan mengurangkan kos dagangan dengan hanya pergi panjang. Ia juga mempunyai risiko pasaran menurun untuk kedudukan panjang sahaja dan isu-isu EMA yang tertinggal. Secara keseluruhan, strategi ini mengawal risiko dagangan dari pelbagai aspek dan berfungsi dengan baik pada jangka masa yang lebih besar, sesuai untuk dagangan jangka menengah hingga panjang. Pengoptimuman lanjut dapat meningkatkan ketahanan dan keuntungan.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-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/
// © SoftKill21

//@version=4
strategy("Fibonacci candle", overlay=false  )


//plot of our fibonacci candle
// Fibonacci 
// Fn = Fn-1 + Fn-2
// F10 = 55
// 0 1 2 3 5 8 13 21 34 55

avg_close = (close[0] + close[1] + close[2] + close[3] +close[5] + close[8] + close[13]+ close[21] + close[34] + close[55]) / 10
avg_high = (high[0] + high[1] + high[2] + high[3] +high[5] + high[8] + high[13]+ high[21] + high[34] + high[55]) / 10
avg_low = (low[0] + low[1] + low[2] + low[3] +low[5] + low[8] + low[13]+ low[21] + low[34] + low[55]) / 10
avg_open = (open[0] + open[1] + open[2] + open[3] +open[5] + open[8] + open[13]+ open[21] + open[34] + open[55]) / 10


src = avg_close//input(avg_close, title="Source")


out55 = ema(src, 55)
out1 = ema(src, 1)
out2 = ema(src, 2)
out3 = ema(src, 3)
out5 = ema(src, 5)
out8 = ema(src, 8)
out13 = ema(src, 13)
out21 = ema(src, 21)
out34 = ema(src, 34)

avg_ema = (out55 + out1 + out2 + out3+ out5 + out8 + out13 + out21 + out34)/9

plot(avg_ema)

plotcandle(avg_open, avg_high, avg_low, avg_close, title='Title', color = avg_open < avg_close ? color.green : color.red, wickcolor=color.white)

long = avg_open < avg_close and avg_close > avg_close[1] and avg_high > avg_high[1] and  avg_close[1] > avg_close[2] and avg_high[1] > avg_high[2]
short = avg_open > avg_close and avg_close < avg_close[1] and avg_low < avg_low[1] and avg_close[1] < avg_close[2] and avg_low[1] < avg_low[2]

strategy.entry("long",1,when=long and avg_close > avg_ema)
strategy.close('long',when=short and avg_close < avg_ema)


Lebih lanjut