
Strategi ini didasarkan pada Axis K-Line di level garis matahari, yang digabungkan dengan analisis dinamika pada tingkat siklus yang berbeda, untuk secara dinamis menentukan kekuatan pendukung di balik harga saham saat ini, sehingga menilai waktu untuk membangun posisi dan posisi.
Perhitungan harga penutupan garis K di berbagai tingkat siklus. Ini adalah dasar untuk menghitung energi kinetik selanjutnya.
Perhitungan harga buka bulan dan hari dengan harga tutup periode sejarah berbeda. Ini mencerminkan kekuatan dinamis harga saham saat ini terhadap harga sejarah.
Perkiraan penurunan energi kinetik pada garis bulan dan garis matahari, masing-masing, disaring dari sebagian kebisingan, untuk mendapatkan indikator energi kinetik garis bulan dan garis matahari yang stabil.
Berdasarkan kenaikan dan penurunan energi rata-rata, dapat dihitung kekuatan dukungan pasar yang dapat direfleksikan oleh harga saham saat ini, yaitu harga yang menghilangkan dampak dari fluktuasi pasar. Harga ini dapat dianggap sebagai ambang batas energi dari harga saham saat ini.
Ketika harga penutupan lebih tinggi dari ambang batas dinamis, dilakukan setiap bulan untuk membuat lebih banyak posisi. Ketika harga penutupan lebih rendah dari ambang batas dinamis, stop loss.
Keuntungan terbesar dari strategi ini adalah bahwa ia tidak hanya mengikuti harga saham, tetapi berdasarkan dinamika di balik harga saham untuk menghitung kekuatan dukungan nyata, sehingga melakukan posisi dan stop loss. Hal ini dapat secara efektif menyaring kebisingan dari situasi yang bergoyang dan mengunci peluang untuk naik secara stabil.
Selain itu, semua data yang digunakan dalam strategi ini berasal dari garis K Axial. Garis K khusus ini dapat mengurangi masalah siklus ketergantungan yang berlebihan. Oleh karena itu, stabilitas strategi akan lebih baik daripada strategi garis K lainnya.
Risiko terbesar dari strategi ini adalah bahwa perhitungan kinerjanya didasarkan pada harga historis. Jika fundamental perusahaan dan kondisi pasar berubah secara signifikan, harga historis akan menjadi kurang representatif, yang menyebabkan bias dalam penilaian posisi dan stop loss.
Selain itu, strategi menggunakan siklus bulanan dan harian. Ini berarti bahwa strategi tidak bersifat real-time dan tidak dapat bereaksi cepat terhadap perubahan tajam dalam pasar. Ini membawa risiko stop loss ketika pasar berubah.
Untuk mengurangi risiko ini, pertimbangkan untuk memperkenalkan data frekuensi yang lebih tinggi, dan umpan balik real-time tentang dasar-dasar perusahaan. Atau untuk penerimaan dan pengoptimalan dalam kombinasi dengan sinyal perdagangan lain yang lebih subjektif.
Strategi ini dapat terus dioptimalkan dalam beberapa hal:
Jalur K-A-Haya itu sendiri juga dapat dioptimalkan lebih lanjut, seperti penyesuaian berat badan.
Menambahkan lebih banyak data dari berbagai siklus, membangun mekanisme penilaian energi kinetik rata-rata indeks, meningkatkan stabilitas.
Untuk meningkatkan real-time strategi, data yang lebih frekuensi tinggi seperti data dalam garis menit per hari diperkenalkan.
Bergabung dengan laporan keuangan, rumor penggabungan, dan lain-lain, CoA dapat menghitung umpan balik dari para pemangku kepentingan perusahaan.
Anda dapat mempertimbangkan untuk menambah jumlah hari atau mingguan dari penangguhan dan penambahan.
Strategi ini secara keseluruhan sangat stabil dan secara efektif mengendalikan risiko dengan cara melacak dinamika. Kelebihannya terbesar adalah memanfaatkan dinamika di balik harga saham untuk menentukan apa yang sebenarnya terjadi, bukan hanya mengikuti harga saham itu sendiri. Langkah selanjutnya adalah dengan memperkenalkan lebih banyak data yang lebih frekuensi dan lebih informatif, diharapkan untuk mengoptimalkan strategi ini lebih lanjut, sehingga dapat lebih baik menangkap peluang pasar.
/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FrancoPassuello
//@version=5
strategy("Heiken Ashi ADM", overlay=true)
haClose = (open + high + low + close) / 4
// prevHaOpen = line.new(na, na, na, na, width = 1)
haOpen = (open[1] + close[1]) / 2
// line.set_xy1(prevHaOpen, bar_index[1], nz(haOpen[1]))
// line.set_xy2(prevHaOpen, bar_index, haClose[1])
[monopen, _1monopen, _2monopen, _3monopen, _4monopen, _5monopen, _6monopen] = request.security(syminfo.tickerid, "M", [haOpen, haOpen[1], haOpen[2], haOpen[3], haOpen[4], haOpen[5], haOpen[6]] , barmerge.gaps_off, barmerge.lookahead_on)
[monclose, _1monclose, _3monclose, _6monclose] = request.security(syminfo.tickerid, "M", [haClose, haClose[1], haClose[3], haClose[6]] , barmerge.gaps_off, barmerge.lookahead_on)
[dayclose1, _21dayclose, _63dayclose, _126dayclose, dayclose] = request.security(syminfo.tickerid, "1D", [haClose[1], haClose[21], haClose[63], haClose[126], haClose], barmerge.gaps_off, barmerge.lookahead_on)
[dayopen1, _21dayopen, _63dayopen, _126dayopen] = request.security(syminfo.tickerid, "1D", [haOpen[1], haOpen[21], haOpen[63], haOpen[126]], barmerge.gaps_off, barmerge.lookahead_on)
get_rate_of_return(price1, price2) =>
return_ = (price1/price2 -1)*100
return_
m0 = get_rate_of_return(monclose, monopen)
m1 = get_rate_of_return(_1monclose, _1monopen)
m2 = get_rate_of_return(monclose, _2monopen)
m3 = get_rate_of_return(_1monclose, _3monopen)
m4 = get_rate_of_return(monclose, _4monopen)
m5 = get_rate_of_return(monclose, _5monopen)
m6 = get_rate_of_return(_1monclose, _6monopen)
MS = (m1 + m3 + m6)/100
CS = (m0 + m2 + m5)/100
d1 = get_rate_of_return(dayclose1, _21dayopen)
d2 = get_rate_of_return(dayclose1, _63dayopen)
d3 = get_rate_of_return(dayclose1, _126dayopen)
DS = (d1 + d2 + d3)/100
//Last (DAILY)
lastd_s_avg1 = DS/3
lastd_Approximate1 = dayclose1*(1-lastd_s_avg1)
last_approx1_d21 = lastd_Approximate1 / _21dayopen-1
last_approx1_d63 = lastd_Approximate1 / _63dayopen-1
last_approx1_d126 = lastd_Approximate1 / _126dayopen-1
lastd_s_avg2 = (last_approx1_d21 + last_approx1_d63 + last_approx1_d126) / 3
lastd_approximate2 = (dayclose1)*(1-(lastd_s_avg1 + lastd_s_avg2))
lastd_price = lastd_approximate2
//plot(lastd_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold")
//Last
last_s_avg1 = MS/3
last_Approximate1 = _1monclose*(1-last_s_avg1)
last_approx1_m1 = last_Approximate1 / _1monopen-1
last_approx1_m3 = last_Approximate1 / _3monopen-1
last_approx1_m6 = last_Approximate1 / _6monopen-1
last_s_avg2 = (last_approx1_m1 + last_approx1_m3 + last_approx1_m6) / 3
last_approximate2 = (_1monclose)*(1-(last_s_avg1 + last_s_avg2))
last_price = last_approximate2
Scoring_price = _1monclose*(1-CS)
plot(last_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold")
//plot(Scoring_price,color = color.rgb(234, 0, 255, 14), title = "Last momentum threshold")
//Long based on month close and being the first trade of the month.
var int lastClosedMonth = -1
limit_longCondition = _1monclose > last_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth)
// Long based on day close and being the first trade of the month.
limit_Dlongcondition = dayclose1 > lastd_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth)
// Close trade based on day close
DCloseLongCondition = dayclose1<lastd_approximate2
//Old standard Trading rules
longCondition = _1monclose > Scoring_price
MCloseLongCondition = _1monclose<Scoring_price
shortCondition = CS < 0
if (longCondition)
strategy.entry("Long", strategy.long)
if (strategy.position_size > 0 and MCloseLongCondition)
strategy.close("Long")
lastClosedMonth := month(time)