
Strategi ini menggunakan berbagai sinyal yang disediakan oleh indikator Equilibrium Scale Cloud Graph dan dirancang sebagai strategi pelacakan tren murni yang bertujuan untuk menangkap tren jangka menengah dan panjang, menyaring konsolidasi yang bergoyang, dan melacak arah tren yang kuat.
Strategi ini menggunakan garis transisi, garis acuan, dan garis keterlambatan dalam indikator grafik awan skala ekuilibrium sebagai sinyal utama. Dalam penilaian tren jangka panjang, fokus pada hubungan perubahan atas dan bawah awan pra-kelas dan awan belakang untuk menilai tren; Dalam pilihan waktu masuk dan keluar tertentu, persilangan garis transisi dan garis acuan dan perubahan hubungan harga dengan grafik awan adalah dasar utama.
Secara keseluruhan, logika inti dari strategi ini adalah: mengkonfirmasi arah tren jangka menengah dan panjang-> menunggu kesempatan untuk memulai kembali tren yang kuat-> masuk untuk melacak tren-> melacak stop loss untuk keluar.
Secara khusus, ketika menilai tren jangka menengah dan panjang, dengan hubungan perubahan awan di depan dan awan di belakang untuk menentukan (jika awan di depan berada di atas dan hijau, mewakili tren naik, sebaliknya mewakili tren turun). Setelah mengkonfirmasi tren jangka menengah dan panjang, dengan sinyal transisi garis dan garis acuan dan harga melintasi grafik awan untuk menilai tren dimulai kembali, mengirim sinyal masuk; Setelah masuk, gunakan garis acuan sebagai stop loss untuk melacak stop loss exit.
Dengan cara ini, Anda dapat menyaring guncangan jangka pendek dan menengah, dan memanfaatkan peluang tren yang kuat untuk mendapatkan keuntungan ekstra yang stabil dalam jangka panjang di pasar saham.
(a) Menggunakan grafik awan skala keseimbangan untuk menentukan arah tren jangka menengah dan panjang, yang membantu menentukan arah utama
(ii) Peralihan garis dan garis acuan dan perubahan harga dengan grafik awan untuk menentukan waktu masuk, dapat secara efektif menyaring getaran dan menangkap tren yang kuat
(iii) Melacak mekanisme stop loss dan exit, yang memungkinkan untuk mendapatkan keuntungan dari tren besar, tetapi juga untuk mengontrol kerugian individu secara efektif
(D) mengintegrasikan berbagai sinyal skala awan keseimbangan, membentuk strategi pelacakan tren yang sistematis, kinerja stabil yang baik
(i) risiko sistematis dari kesalahan penilaian jangka menengah dan jangka panjang. Jika salah penilaian tren jangka menengah dan jangka panjang, maka operasi selanjutnya akan menghadapi risiko ke arah yang salah.
(ii) Risiko yang ditimbulkan oleh pilihan waktu masuk yang tidak tepat. Jika pilihan waktu masuk yang tidak tepat, mudah dibungkus.
(III) Mengikuti risiko yang ditimbulkan oleh stop loss terlalu dekat. Jika stop loss terlalu dekat, situasi ekstrem dapat menerobos stop loss dan menyebabkan kerugian.
(D) beban biaya transaksi yang disebabkan oleh frekuensi transaksi yang terlalu tinggi. Biaya transaksi juga akan meningkat jika frekuensi transaksi terlalu tinggi karena pengaturan parameter yang tidak tepat.
(a) menguji kombinasi dari berbagai parameter siklus skala ekuilibrium untuk menemukan parameter optimal
(ii) Mengoptimalkan kondisi masuk, merancang filter yang lebih ketat, dan memastikan masuk yang efektif
(iii) Menyesuaikan Stop Loss Distance untuk menemukan keseimbangan optimal antara risiko dan keuntungan
(iv) Menambahkan target harga laba-laba, yang dikombinasikan dengan jarak harga dari indikator kunci ekuilibrium, untuk membentuk mekanisme laba-laba dinamis
Strategi pelacakan tren skala ekuilibrium ini, mengintegrasikan beberapa sinyal untuk menentukan arah tren, waktu masuk, dan stop loss exit. Praktik menunjukkan bahwa strategi ini dapat secara efektif menangkap tren jangka menengah dan panjang, menyaring getaran, dan secara stabil mendapatkan keuntungan tambahan. Di masa depan, melalui pengujian optimasi berkelanjutan, diharapkan untuk meningkatkan kinerja strategi, dan mendapatkan hasil yang lebih baik.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Ichimoku trendfollowing", overlay=true, initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.04, slippage=2)
//***************************
// INPUT BACKTEST RANGE *
//***************************
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2010, title = "From Year", minval = 2000)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2000)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true
//***************
//* ICHIMOKU *
//***************
//inizializzazione parametri,,
tenkanPeriods = input(9, minval=1, title="Tenkan-Sen")
kinjunPeriods = input(26, minval=1, title="Kinjun-Sen")
senkouSpanBPeriods = input(52, minval=1, title="Senkou Span B")
displacement = input(26, minval=1, title="-ChinkouSpan/+SenkouSpan A")
//definizione Tenkan-Sen (9 Period), Kinjun-Sen (26 Period), Chinkou Span (Lagging Line)
averageHighLow(period) => avg(lowest(period), highest(period))
tenkan= averageHighLow(tenkanPeriods)
kinjun = averageHighLow(kinjunPeriods)
senkouSpanA = avg(tenkan, kinjun)
senkouSpanB = averageHighLow(senkouSpanBPeriods)
//definisco il colore della kumo in base al trend.
senkouSpan1Above = senkouSpanA >= senkouSpanB ? 1 : na
senkouSpan2Below = senkouSpanA <= senkouSpanB ? 1 : na
span1plotU = senkouSpan1Above ? senkouSpanA : na
span2plotU = senkouSpan1Above ? senkouSpanB : na
span1plotD = senkouSpan2Below ? senkouSpanA : na
span2plotD = senkouSpan2Below ? senkouSpanB : na
col = senkouSpanA >= senkouSpanB ? lime : red
//plots Ichimoku
plot(tenkan, title = 'Tenkan-Sen', linewidth=1, color=blue)
plot(kinjun, title = 'Kinjun-Sen', linewidth=1, color=red)
plot(close, title = 'Chinkou Span', linewidth=1, offset = -displacement, color=aqua)
plot( senkouSpanA, title = 'Senkou Span A', style=line, linewidth=1, offset = displacement, color=lime)
plot(senkouSpanB, title = 'Senkou Span B', style=line, linewidth=1, offset = displacement, color=red)
//Cloud Lines Plot
p1 = plot(span1plotU ? span1plotU : na, title = 'Senkou Span A Above Senkou Span B', style=linebr, linewidth=1, offset = displacement, color=col)
p2 = plot(span2plotU ? span2plotU : na, title = 'Senkou Span B (52 Period) Below Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
p3 = plot(span1plotD ? span1plotD : na, title = 'Senkou Span A (26 Period) Below Span B Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
p4 = plot(span2plotD ? span2plotD : na, title = 'Senkou Span B (52 Period) Above Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
//Fills that color cloud based on Trend.
fill(p1, p2, color=lime, transp=70, title='Kumo (Cloud)')
fill(p3, p4, color=red, transp=70, title='Kumo (Cloud)')
//***********************************************
//* condizioni ingresso ed uscita mercato *
//***********************************************
isKumoRialzista = senkouSpanA >= senkouSpanB ? true : false
isSopraKumo = (close > max(senkouSpanA[displacement], senkouSpanB[displacement]))
isSottoKumo = (close < min(senkouSpanA[displacement], senkouSpanB[displacement]))
isChinkouSpanSopra = high[displacement]<close
isChinkouSpanSotto = low[displacement]>close
filtroLong=isSopraKumo and isChinkouSpanSopra
filtroShort=isSottoKumo and isChinkouSpanSotto
//rimbalzato su kijun quando i prezzi stavano ritracciando e il trend era già in atto(tenkan >kijun x entrare long
isPullBackLijunEntryLong = kinjun<tenkan and low<kinjun and (close>kinjun)
isPullBackLijunEntryShort =kinjun>tenkan and high>kinjun and (close<kinjun)
//Breackout Kumo
isBreackoutKumoEntryLong = crossover(close, max(senkouSpanA[displacement], senkouSpanB[displacement])) and (close>tenkan) and (close>kinjun)
isBreackoutKumoEntryShort = crossunder(close, min(senkouSpanA[displacement], senkouSpanB[displacement])) and (close<tenkan) and (close<kinjun)
ConditionEntryLong = (isPullBackLijunEntryLong or isBreackoutKumoEntryLong ) and filtroLong
ConditionEntryShort = (isPullBackLijunEntryShort or isBreackoutKumoEntryLong ) and filtroShort
isExitLong = close<kinjun
isExitShort = close>kinjun
//ingressi ed uscite Mercato
strategy.entry ("Long",long=true, when = window() and ConditionEntryLong)
strategy.entry ("Short",long=false, when = window() and ConditionEntryShort)
strategy.close(id="Long", when=isExitLong)
strategy.close(id="Short", when=isExitShort)
strategy.close_all(when=not window())