Strategi lindung nilai frekuensi tinggi berdasarkan warna bar MACD dan kemunduran linear

Penulis:ChaoZhang, Tarikh: 2023-10-27 10:42:54
Tag:

img

Ringkasan

Strategi ini menggabungkan warna bar MACD dan penunjuk regresi linear untuk mencapai perdagangan pembalikan frekuensi tinggi, yang sangat sesuai untuk arbitraj dan lindung nilai jangka pendek.

Logika Strategi

Strategi ini terdiri daripada komponen utama berikut:

  1. Warna bar MACD sebagai penunjuk penghakiman trend. Apabila warna bar MACD hijau, ia menunjukkan trend menaik, jadi tidak ada pesanan pendek yang harus diletakkan. Apabila bar MACD merah, ia menunjukkan trend menurun, jadi tidak ada pesanan panjang yang harus diletakkan.

  2. Regresi linear sebagai penunjuk isyarat perdagangan utama. pergi panjang apabila harga melintasi di atas garis regresi linear, dan pergi pendek apabila harga melintasi di bawah garis.

  3. Saluran PAC dibentuk oleh EMA harga tinggi, rendah dan dekat untuk menentukan arah garis regresi linear. Isyarat perdagangan hanya dihasilkan apabila arah regresi linear sejajar dengan trend saluran.

  4. EMA 89 sebagai garis stop loss. tutup kedudukan apabila harga melintasi semula di atas garis ini.

Logik untuk isyarat perdagangan adalah:

Isyarat panjang: Regresi linear melintasi di atas jalur bawah PAC DAN regresi linear miring ke atas DAN bar MACD tidak merah.

Isyarat pendek: Regresi linear melintasi di bawah jalur atas PAC DAN regresi linear miring ke bawah DAN bar MACD tidak hijau.

Isyarat keluar: Harga melintasi bawah EMA 89.

Strategi ini menggabungkan penilaian trend dan tahap harga utama untuk mencapai perdagangan lindung nilai frekuensi tinggi.

Analisis Kelebihan

  1. Warna bar MACD membantu menentukan trend utama dan mengelakkan perdagangan terhadap trend.

  2. Regresi linear adalah lancar dan menapis keluar beberapa bunyi bising.

  3. Saluran EMA jelas menentukan bias bullish/bearish.

  4. Stop loss ditetapkan secara munasabah untuk memaksimumkan keuntungan.

  5. Frekuensi perdagangan yang tinggi menjadikannya sesuai untuk perdagangan algoritma.

  6. Mencapai perdagangan lindung nilai dan boleh mendapat keuntungan dari pasaran yang terhad.

Analisis Risiko

  1. Parameter regresi linear dan saluran memerlukan pengoptimuman, jika tidak, mereka mungkin gagal.

  2. Stop loss boleh diaktifkan dengan kerap semasa turun naik harga yang besar.

  3. Frekuensi perdagangan yang tinggi bermakna kos transaksi boleh menjadi besar.

  4. MACD mempunyai sedikit kelewatan dan mungkin terlepas pembalikan trend jangka pendek.

  5. Saluran EMA juga memerlukan pengoptimuman berterusan untuk menyesuaikan diri dengan keadaan pasaran yang berubah.

Arahan pengoptimuman

  1. Sesuaikan regresi linear dan parameter saluran untuk lebih sesuai dengan instrumen yang berbeza.

  2. Memperluas julat stop loss sambil mengekalkan nisbah ganjaran / risiko di atas 1.

  3. Mengoptimumkan parameter MACD untuk menangkap lebih banyak isyarat jangka pendek.

  4. Cuba penunjuk lain untuk menggantikan regresi linear, seperti Bollinger Bands.

  5. Tambah saiz kedudukan untuk mengelakkan kerugian satu hala yang berlebihan.

  6. Masukkan penunjuk lain seperti RSI untuk menapis beberapa isyarat perdagangan.

Kesimpulan

Strategi ini menggabungkan beberapa penunjuk teknikal untuk mencapai perdagangan lindung nilai frekuensi tinggi. Kekuatannya terletak pada menangkap pembalikan jangka pendek dengan kawalan risiko yang munasabah, menjadikannya sangat sesuai untuk keadaan pasaran terhad. Pada masa yang sama, pengoptimuman parameter dan penambahbaikan tertentu diperlukan untuk mengelakkan overfit. Dengan pengurusan yang betul, ia boleh menjadi strategi perdagangan frekuensi tinggi yang sangat praktikal.


/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Sonic R + Linear Reg + Kumo Cloud + Barcolor MACD", overlay=true,default_qty_value=10000,initial_capital=200,currency=currency.USD, pyramiding=1)
EMA = input(defval=89, title="EMA Signal")
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacC        = ema(close,HiLoLen)
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
DODGERBLUE = #1E90FFFF
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90)
H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90)
C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80)
//Moving Average//
signalMA =ema(close,EMA)
plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line)
linereg = linreg(close, EMA, 0)
plot(linereg, color = orange, title = "Linear Regression Curve", style = line, linewidth = 1)
//////ICHIMOKU/////////
conversionPeriods = input(9),
basePeriods = input(26, minval=1, title="Base Line")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span"),
displacement = input(26, minval=1)
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine) 
leadLine2 = donchian(laggingSpan2Periods-1)
p1 = plot(leadLine1, offset = displacement-1, color=gray,title="Senkou span A", transp=90)
p2 = plot(leadLine2, offset = displacement-1, color=gray, title="Senkou span B", transp=90)
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red, title="Kumo Cloud")
///////////////// MACD BARCOLOR /////////////////////
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
///////////// SIGNAL ///////////////
conbuy = iff(crossover(linereg,pacL) and rising(linereg,5), 1,
	     iff(crossover(linereg,pacH) or (crossunder(linereg,pacL) and pacL<signalMA), -1, nz(conbuy[1], 0)))
consell = iff(crossunder(linereg,pacH) and falling(linereg,5), 1,
	     iff(crossunder(linereg,pacL) or (crossover(linereg,pacH) and pacH>signalMA), -1, nz(consell[1], 0)))
golong= conbuy==1 and close>open and open<pacH and close>linereg and hisdown!=1
goshort= consell==1 and close<open and open>pacL and close<linereg and hisup!=1
if(golong)
    strategy.entry("Buy",strategy.long)
if(goshort)
    strategy.entry("Sell",strategy.short)
closelong= conbuy==-1
closeshort=consell==-1
if(closelong)
    strategy.close("Buy")
if(closeshort)
    strategy.close("Sell")
 ////////////// TP and SL//.
//SL = input(defval=200.00, title="Stop Loss Point", type=float, step=1)
//rr= input(defval=0.1,title="Reward/Risk",type=float)
//useTPandSL = input(defval = false, title = "Use exit order strategy?")
//Stop = SL
//Take=SL*rr
//Q = 100
//if(useTPandSL)
//    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
//    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop) 

Lebih lanjut