Strategi Dagangan Berdasarkan Estimator Faytterro

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

Ringkasan

Strategi ini berdagang berdasarkan isyarat perdagangan yang dihasilkan oleh Faytterro Estimator. Estimator Faytterro adalah penunjuk yang menilai trend dengan mengira kadar konvergensi dan perbezaan harga. Strategi ini menggabungkan isyarat perdagangan Estimator Faytterro dan beberapa keadaan tambahan untuk menghasilkan isyarat panjang dan pendek dengan saiz yang berbeza pada titik ideal.

Logika Strategi

Inti strategi ini adalah Estimator Faytterro. Pengiraan adalah: pertama mengira kadar konvergensi dan divergensi (CR) harga, kemudian membina fungsi kuadrat, yang boleh mencerminkan bentuk kurva CR dengan menetapkan pekali yang berbeza. Dengan memerhatikan titik belokan kurva kuadrat, ia menilai perubahan trend harga.

Secara khusus, strategi pertama mengira CR harga. Kemudian ia membina dizi array dengan panjang 2 * len, dan mengisinya dengan nilai fungsi kuadrat secara berurutan. Gabungan fungsi kuadrat mencerminkan nilai CR. Selepas itu, dengan memerhatikan dua nilai pada indeks len + 1 + 5 dan len + 1 + 4, ia menentukan sama ada fungsi kuadrat mempunyai titik belokan. Jika terdapat titik belokan, ia menghasilkan isyarat beli atau jual.

Atas dasar ini, strategi juga menetapkan beberapa syarat tambahan, seperti menetapkan jarak minimum antara terobosan harga untuk mengelakkan perdagangan yang kerap, menghasilkan isyarat dengan saiz yang berbeza, dll. Syarat ini digunakan untuk menapis beberapa titik perdagangan yang tidak diingini.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan Faytterro Estimator untuk menilai trend, yang sensitif terhadap turun naik harga dan boleh menangkap perubahan trend awal.

  2. Membina fungsi kuadrat untuk mencerminkan bentuk kurva CR dan mencari titik belokan secara langsung dan berkesan.

  3. Menghasilkan isyarat dengan saiz yang berbeza membolehkan perdagangan piramid pada titik ideal, meningkatkan potensi keuntungan.

  4. Meningkatkan tetapan jarak minimum secara berkesan menapis isyarat dan mengelakkan perdagangan kerap yang tidak berkesan.

  5. Banyak parameter yang boleh diselaraskan boleh dioptimumkan untuk produk perdagangan yang berbeza, meningkatkan kesesuaian.

  6. Logik strategi jelas dan mudah difahami, dan kodnya sangat mudah dibaca, menjadikannya mudah dipelajari.

Analisis Risiko

Terdapat juga beberapa risiko yang perlu diperhatikan untuk strategi ini:

  1. Faytterro Estimator mempunyai risiko pemasangan lengkung, dan mungkin kurang berprestasi dalam beberapa produk perdagangan.

  2. Menghakimi semata-mata berdasarkan titik belokan kurva kuadrat mungkin terlalu kasar, yang membawa kepada pertimbangan yang salah.

  3. Perdagangan piramid yang kerap meningkatkan kos komisen.

  4. Sejumlah besar parameter yang boleh diselaraskan meningkatkan kesukaran pengoptimuman.

  5. Ia tidak dapat menangani kesalahan penilaian secara berkesan dalam tempoh turun naik harga.

  6. Kekurangan mekanisme stop loss boleh membawa kepada kerugian yang lebih besar.

Penyelesaian yang sepadan adalah:

  1. Mengoptimumkan parameter untuk produk yang berbeza untuk meningkatkan ketahanan.

  2. Tambahkan penunjuk lain untuk penapisan untuk mengelakkan penilaian yang salah yang hanya bergantung pada titik perubahan.

  3. Tetapkan stop loss yang betul untuk mengawal kehilangan tunggal.

  4. Gunakan kaedah data besar untuk mengoptimumkan parameter secara automatik.

  5. Tambah pengenalan goyangan untuk mengelakkan perdagangan dalam tempoh goyangan.

  6. Tetapkan logik stop loss yang munasabah.

Arahan pengoptimuman

Arah pengoptimuman termasuk:

  1. Tambah logik stop loss untuk mengawal kerugian tunggal, seperti kehilangan berhenti yang menyusul atau kehilangan berhenti masa.

  2. Tambah penunjuk lain untuk mengelakkan salah menilai yang hanya bergantung kepada Estimator Faytterro. Sebagai contoh, menggabungkan dengan MACD, KDJ dll.

  3. Tambahkan mekanisme pengesahan untuk mengelakkan penarikan balik jangka pendek.

  4. Mengoptimumkan parameter yang boleh diselaraskan untuk produk yang berbeza menggunakan algoritma genetik, pengoptimuman Bayesian dll.

  5. Mengenal pasti pasaran berayun menggunakan ATR, DMI dan lain-lain dan mengelakkan perdagangan semasa berayun.

  6. Mengoptimumkan logik piramid untuk mengelakkan mengejar trend. Sebagai contoh, menyesuaikan kedudukan piramid secara dinamik berdasarkan kekuatan trend.

  7. Uji parameter pada jangka masa yang berbeza untuk mencari jangka masa yang optimum.

Kesimpulan

Strategi ini membuat keputusan berdasarkan isyarat perdagangan Faytterro Estimator, dan menambah penilaian logik dan isyarat kemasukan berlainan saiz di atasnya untuk membentuk strategi trend-mengikut dengan ciri piramid. Strategi ini intuitif dan mudah difahami, dengan keupayaan menangkap trend yang kuat. Tetapi ia juga mempunyai masalah seperti salah menilai penunjuk, tidak ada kerugian berhenti, kesukaran dalam pengoptimuman parameter. Pengoptimuman masa depan termasuk menambah mekanisme penapisan, logik kerugian berhenti, pengoptimuman parameter dll untuk meningkatkan ketahanan dan daya adaptasi. Secara keseluruhan, strategi ini menyediakan cara menggunakan penunjuk untuk menilai perubahan trend yang bernilai 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 lanjut