Strategi ini menggabungkan warna bar MACD dan indikator regresi linier untuk mencapai perdagangan pembalikan frekuensi tinggi, yang sangat cocok untuk arbitrage dan lindung nilai jangka pendek.
Strategi ini terdiri dari komponen utama berikut:
Warna bar MACD sebagai indikator penghakiman tren. Ketika warna bar MACD hijau, itu menunjukkan tren naik, jadi tidak ada pesanan pendek yang harus ditempatkan. Ketika bar MACD merah, itu menunjukkan tren menurun, jadi tidak ada pesanan panjang yang harus ditempatkan.
Regresi linier sebagai indikator sinyal perdagangan utama. pergi panjang ketika harga melintasi di atas garis regresi linier, dan pergi pendek ketika harga melintasi di bawah garis.
PAC Channel dibentuk oleh EMA harga tinggi, rendah dan dekat untuk menentukan arah garis regresi linier.
EMA 89 sebagai garis stop loss. tutup posisi ketika harga melintasi kembali di atas garis ini.
Logika untuk sinyal perdagangan adalah:
Sinyal panjang: Regresi linier melintasi band bawah PAC DAN regresi linier miring ke atas DAN garis MACD tidak merah.
Sinyal pendek: Regresi linier melintasi band atas PAC DAN regresi linier miring ke bawah DAN garis MACD tidak hijau.
Sinyal keluar: Harga melintasi bawah EMA 89.
Strategi ini menggabungkan penilaian tren dan tingkat harga kunci untuk mencapai perdagangan lindung nilai frekuensi tinggi.
Warna bar MACD membantu menentukan tren utama dan menghindari perdagangan melawan tren.
Regresi linier halus dan menyaring kebisingan.
Saluran EMA dengan jelas mendefinisikan bias bullish/bearish.
Stop loss diatur secara wajar untuk memaksimalkan keuntungan.
Frekuensi perdagangan yang tinggi membuatnya cocok untuk perdagangan algoritmik.
Mencapai perdagangan lindung nilai dan dapat memperoleh keuntungan dari pasar yang terikat jangkauan.
Parameter regresi linier dan saluran perlu dioptimalkan, jika tidak mereka mungkin gagal.
Stop loss dapat dipicu sering selama perubahan harga yang besar.
Frekuensi perdagangan yang tinggi berarti biaya transaksi dapat sangat besar.
MACD memiliki beberapa lag dan mungkin melewatkan pembalikan tren jangka pendek.
Saluran EMA juga perlu terus dioptimalkan untuk beradaptasi dengan perubahan kondisi pasar.
Sesuaikan regresi linier dan saluran parameter untuk lebih sesuai dengan instrumen yang berbeda.
Luaskan rentang stop loss sambil menjaga rasio reward/risiko di atas 1.
Mengoptimalkan parameter MACD untuk menangkap sinyal jangka pendek.
Cobalah indikator lain untuk menggantikan regresi linier, seperti Bollinger Bands.
Tambahkan ukuran posisi untuk mencegah kerugian satu arah yang berlebihan.
Sertakan indikator lain seperti RSI untuk menyaring beberapa sinyal perdagangan.
Strategi ini menggabungkan beberapa indikator teknis untuk mencapai perdagangan lindung nilai frekuensi tinggi. Kekuatannya terletak pada menangkap pembalikan jangka pendek dengan kontrol risiko yang wajar, menjadikannya sangat cocok untuk kondisi pasar yang terikat rentang. Pada saat yang sama, optimasi dan peningkatan parameter tertentu diperlukan untuk mencegah overfit. Dengan manajemen yang tepat, ini dapat menjadi strategi perdagangan frekuensi tinggi yang sangat praktis.
/*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)