Strategi Trading Berdasarkan Estimator Faytterro

Penulis:ChaoZhang, Tanggal: 2023-09-22 14:12:27
Tag:

Gambaran umum

Strategi ini diperdagangkan berdasarkan sinyal perdagangan yang dihasilkan oleh Estimator Faytterro. Estimator Faytterro adalah indikator yang menilai tren dengan menghitung tingkat konvergensi dan divergensi harga. Strategi ini menggabungkan sinyal perdagangan Estimator Faytterro dan beberapa kondisi tambahan untuk menghasilkan sinyal panjang dan pendek dengan ukuran yang berbeda pada titik ideal.

Logika Strategi

Inti dari strategi ini adalah Estimator Faytterro. Perhitungannya adalah: pertama menghitung tingkat konvergensi dan divergensi (CR) harga, kemudian membangun fungsi kuadrat, yang dapat mencerminkan bentuk kurva CR dengan menetapkan koefisien yang berbeda. Dengan mengamati titik infleksi kurva kuadrat, ia menilai perubahan tren harga.

Secara khusus, strategi pertama menghitung CR harga. Kemudian membangun array dizi dengan panjang 2*len, dan mengisinya dengan nilai fungsi kuadrat secara berurutan. Koefisien fungsi kuadrat mencerminkan nilai CR. Setelah itu, dengan mengamati dua nilai pada indeks len+1+5 dan len+1+4, ia menentukan apakah fungsi kuadrat memiliki titik infleksi. Jika ada titik infleksi, ia menghasilkan sinyal beli atau jual.

Atas dasar ini, strategi juga menetapkan beberapa kondisi tambahan, seperti menetapkan jarak minimum antara terobosan harga untuk menghindari perdagangan yang sering, menghasilkan sinyal dengan ukuran yang berbeda, dll. Kondisi ini digunakan untuk menyaring beberapa titik perdagangan yang tidak diinginkan.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan Faytterro Estimator untuk menilai tren, yang sensitif terhadap fluktuasi harga dan dapat menangkap perubahan tren lebih awal.

  2. Membangun fungsi kuadrat untuk mencerminkan bentuk kurva CR dan menemukan titik lentur secara langsung dan efektif.

  3. Menghasilkan sinyal dengan ukuran yang berbeda memungkinkan perdagangan piramida pada titik ideal, meningkatkan potensi keuntungan.

  4. Meningkatkan pengaturan jarak minimum secara efektif menyaring sinyal dan menghindari perdagangan sering yang tidak efektif.

  5. Banyak parameter yang dapat disesuaikan dapat dioptimalkan untuk produk perdagangan yang berbeda, meningkatkan fleksibilitas.

  6. Logika strategi jelas dan mudah dimengerti, dan kode sangat mudah dibaca, sehingga mudah dipelajari.

Analisis Risiko

Ada juga beberapa risiko yang harus diperhatikan untuk strategi ini:

  1. Faytterro Estimator memiliki risiko kurva yang cocok, dan mungkin berkinerja buruk dalam beberapa produk perdagangan.

  2. Menghakimi hanya berdasarkan titik infleksi kurva kuadrat mungkin terlalu kasar, yang mengarah pada penilaian yang salah.

  3. Perdagangan piramida yang sering meningkatkan biaya komisi.

  4. Sejumlah besar parameter yang dapat disesuaikan meningkatkan kesulitan pengoptimalan.

  5. Hal ini tidak dapat secara efektif menangani kesalahan penilaian dalam periode osilasi harga.

  6. Kurangnya mekanisme stop loss dapat menyebabkan kerugian yang lebih besar.

Solusi yang sesuai adalah:

  1. Mengoptimalkan parameter untuk produk yang berbeda untuk meningkatkan ketahanan.

  2. Tambahkan indikator lain untuk penyaringan untuk menghindari penilaian yang salah yang hanya didasarkan pada titik infleksi.

  3. Atur stop loss yang tepat untuk mengontrol single loss.

  4. Gunakan metode data besar untuk mengoptimalkan parameter secara otomatis.

  5. Tambahkan identifikasi osilasi untuk menghindari perdagangan dalam periode osilasi.

  6. Tetapkan logika stop loss yang masuk akal.

Arahan Optimasi

Arah optimasi meliputi:

  1. Tambahkan logika stop loss untuk mengontrol loss tunggal, seperti trailing stop loss atau time stop loss.

  2. Tambahkan indikator lain untuk menghindari penilaian yang salah yang hanya bergantung pada Estimator Faytterro.

  3. Tambahkan mekanisme konfirmasi untuk menghindari dihentikan oleh penarikan jangka pendek.

  4. Mengoptimalkan parameter yang dapat disesuaikan untuk produk yang berbeda menggunakan algoritma genetik, optimasi Bayesian dll.

  5. Mengidentifikasi pasar osilasi menggunakan ATR, DMI dll dan menghindari perdagangan selama osilasi.

  6. Mengoptimalkan logika piramida untuk mencegah mengejar tren. Misalnya, menyesuaikan posisi piramida secara dinamis berdasarkan kekuatan tren.

  7. Uji parameter pada jangka waktu yang berbeda untuk menemukan jangka waktu yang optimal.

Kesimpulan

Strategi ini membuat keputusan berdasarkan sinyal perdagangan dari Faytterro Estimator, dan menambahkan penilaian logika dan sinyal masuk berukuran berbeda di atasnya untuk membentuk strategi trend-mengikuti dengan karakteristik piramida. Strategi ini intuitif dan mudah dipahami, dengan kemampuan menangkap tren yang kuat. Tapi juga memiliki masalah seperti penilaian indikator yang salah, tidak ada stop loss, kesulitan dalam optimasi parameter. Optimasi masa depan termasuk menambahkan mekanisme filtrasi, logika stop loss, optimasi parameter dll untuk meningkatkan ketahanan dan kemampuan beradaptasi. Secara keseluruhan, strategi ini menyediakan cara menggunakan indikator untuk menilai perubahan tren yang layak dipelajari.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © faytterro

//@version=5
// strategy("Faytterro Estimator Strategy", overlay=true, pyramiding=100)

src=input(hlc3,title="source")
len=input.int(10,title="faytterro estimator lenght", maxval=500)
len2=100
len3=input.float(500,title="minumum enrty-close gap (different direction)")
len4=input.float(500,title="minumum entry-entry gap (same direction)")
cr(x, y) =>
    z = 0.0
    weight = 0.0
    for i = 0 to y-1
        z:=z + x[i]*((y-1)/2+1-math.abs(i-(y-1)/2))
    z/(((y+1)/2)*(y+1)/2)
cr= cr(src,2*len-1) 
width=input.int(10, title="strong entry size", minval=1)

dizi = array.new_float(500)
// var line=array.new_line()
//if barstate.islast
for i=0 to len*2
    array.set(dizi,i,(i*(i-1)*(cr-2*cr[1]+cr[2])/2+i*(cr[1]-cr[2])+cr[2]))

buy = array.get(dizi,len+1+5)>array.get(dizi,len+1+4) and array.get(dizi,len+1+5)<cr[len] 
sell = array.get(dizi,len+1+5)<array.get(dizi,len+1+4) and array.get(dizi,len+1+5)>cr[len]
bb=buy? hlc3 : na
ss=sell? hlc3 : na 
sbuy= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3*3
ssell= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3*3

buy:= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3 //and close>ta.highest(fixnan(ss),len2)-len3*3
sell:=  sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3 //and close<ta.lowest(fixnan(bb),len2)+len3*3
alertcondition(buy or sell)


if (sbuy)
    strategy.entry("strong buy", strategy.long,width)
if (ssell)
    strategy.entry("strong sell", strategy.short,width)
if (buy)
    strategy.entry("buy", strategy.long)
if (sell)
    strategy.entry("sell", strategy.short)

Lebih banyak