Strategi Double K Crossbow

Penulis:ChaoZhang, Tarikh: 2023-10-18 11:19:07
Tag:

img

Ringkasan: Strategi Crossbow Double K menggabungkan strategi 123 Reversal dan strategi K Khas Martin Pring untuk memanfaatkan isyarat pembalikan dan penunjuk kitaran.

Logik Strategi:

Double K Crossbow terdiri daripada dua bahagian:

  1. 123 Strategi pembalikan: Ia mengenal pasti isyarat beli dan jual berdasarkan 2 hari berturut-turut pembalikan harga penutupan, digabungkan dengan bacaan osilator stokastik. Ia menghasilkan isyarat beli apabila penutupan lebih tinggi daripada penutupan sebelumnya selama 2 hari dan stokastik adalah di bawah 50, menunjukkan penyatuan. Ia menghasilkan isyarat jual apabila penutupan lebih rendah daripada penutupan sebelumnya selama 2 hari dan stokastik adalah di atas 50, menunjukkan pengedaran.

  2. Strategi K Khas Martin Pring: Ia menggunakan penunjuk kitaran komposit yang dibentuk dengan menumpuk nilai kadar perubahan dari bingkai masa yang berbeza. Ia menghasilkan isyarat beli apabila penunjuk melintasi di atas purata bergerak dan isyarat jual apabila melintasi di bawah.

Double K Crossbow menggabungkan isyarat dari kedua-dua strategi, memerlukan persetujuan untuk mencetuskan perdagangan sebenar.

Analisis Kelebihan:

  • Menggabungkan isyarat dari dua strategi untuk kemasukan perdagangan yang lebih boleh dipercayai dan keluar.

  • 123 Pembalikan menangkap pembalikan jangka pendek manakala Khusus K menilai trend jangka panjang.

  • Kadar perubahan pelbagai jangka masa memberikan wawasan mengenai kitaran pasaran.

  • Parameter stokastik yang boleh dioptimumkan menyesuaikan diri dengan keadaan pasaran yang berbeza.

Analisis Risiko:

  • Isyarat penyatuan mungkin terlepas beberapa titik beli / jual dan pergerakan jangka pendek.

  • Strategi boleh tidak bersetuju semasa peristiwa luar biasa, memerlukan penilaian arah.

  • Memerlukan pemantauan dan pengoptimuman parameter untuk kedua-dua strategi, meningkatkan kerumitan.

  • Pengoptimuman parameter jangka pendek dan jangka panjang yang tidak betul boleh terlepas titik perubahan kitaran.

Peluang peningkatan:

  • Uji kombinasi parameter yang berbeza untuk mencari tetapan optimum.

  • Tambah modul stop loss untuk mengehadkan kerugian.

  • Tambah modul saiz kedudukan untuk menyesuaikan dengan keadaan pasaran.

  • Menggabungkan pembelajaran mesin untuk pemodelan isyarat yang lebih kukuh.

  • Tambah pengoptimuman adaptif untuk menjejaki irama pasaran secara dinamik.

Kesimpulan:

Double K Crossbow berjaya menggabungkan kekuatan strategi pembalikan dan kitaran untuk isyarat kualiti dan peluang keuntungan pelbagai jangka masa. Pendekatan baru ini bernilai ujian dan pengoptimuman lanjut sebagai strategi yang stabil. Tetapi pengurusan risiko dan penyesuaian parameter tetap penting untuk keuntungan yang konsisten di pasaran yang sentiasa berubah.


/*backtest
start: 2023-09-17 00:00:00
end: 2023-10-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/02/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Pring's Special K is a cyclical indicator created by Martin Pring. 
// His method combines short-term, intermediate and long-term velocity 
// into one complete series. Useful tool for Long Term Investors
// Modified for any source.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


MPSK(a, sources) =>
    pos = 0.0
    roc1 = (sma(roc(sources,10),10)*1)
    roc2 = (sma(roc(sources,15),10)*2)
    roc3 = (sma(roc(sources,20),10)*3)
    roc4 = (sma(roc(sources,30),15)*4)
    roc5 = (sma(roc(sources,40),50)*1)
    roc6 = (sma(roc(sources,65),65)*2)
    roc7 = (sma(roc(sources,75),75)*3)
    roc8 = (sma(roc(sources,100),100)*4)
    roc9 = (sma(roc(sources,195),130)*1)
    roc10 = (sma(roc(sources,265),130)*2)
    roc11 = (sma(roc(sources,390),130)*3)
    roc12 = (sma(roc(sources,530),195)*4)
    osc = roc1+roc2+roc3+roc4+roc5+roc6+roc7+roc8+roc9+roc10+roc11+roc12
    oscsmt = sma(osc,a)
    pos := iff(osc > oscsmt, 1,
    	     iff(osc < oscsmt, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Martin Pring's Special K", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Martin Pring`s ----")
a = input(10, title = "Smooth" )
sources = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMPSK = MPSK(a,sources)
pos = iff(posReversal123 == 1 and posMPSK == 1 , 1,
	   iff(posReversal123 == -1 and posMPSK == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Lebih lanjut