Strategi Pengesanan Nombor Bulat

Penulis:ChaoZhang, Tarikh: 2023-09-21 15:24:53
Tag:

Ringkasan

Strategi ini adalah berdasarkan idea bahawa tahap stop loss dan mengambil keuntungan sering diletakkan pada nombor bulat atau tahap harga utama, yang bertindak sebagai sokongan dan rintangan.

Logika Strategi

Peraturan utama strategi ini ialah:

  1. Apabila harga penutupan berada di atas tahap harga utama, dan tidak menyentuh tahap itu dalam 10 bar yang lalu, pergi panjang.

  2. Menggunakan hentian dengan langkah 20 mata untuk mengikuti pergerakan selepas harga memecahkan tahap utama.

  3. Isyarat jual adalah sebaliknya - apabila tutup di bawah tahap kunci dan tidak menyentuhnya dalam 10 bar yang lalu, pergi pendek.

  4. Tahap utama dikenal pasti sebagai:

    • Tukar harga dekat kepada bilangan bulat
    • Mengira baki daripada membahagikan dengan 50 (boleh dikonfigurasi)
    • Jika baki > 25, gunakan nombor bulat 50 seterusnya sebagai tahap kunci
    • Jika tidak simpan tahap kunci tidak berubah

Strategi ini berdasarkan psikologi bahawa nombor bulat dan tahap utama sering menjadi medan pertempuran untuk lembu dan beruang, dan dengan itu memberikan isyarat perdagangan yang berkesan.

Kelebihan

Kelebihan strategi ini ialah:

  1. Isyarat perdagangan dan peraturan kemasukan yang mudah dan intuitif.
  2. Menggunakan corak universal harga utama dan bukannya peraturan khusus instrumen.
  3. Penghantaran berhenti mengunci keuntungan semasa menunggang trend.

Risiko

Risiko yang perlu dipertimbangkan ialah:

  1. Tahap kunci mungkin tidak selalu bertindak sebagai sokongan / rintangan yang kuat.
  2. Penarikan balik 10 bar tetap mungkin tidak sesuai dengan instrumen yang berbeza.
  3. Jarak hentian belakang tidak boleh terlalu luas, jika tidak, ia mungkin berhenti sebelum waktunya.

Penyelesaian yang mungkin:

  1. Tambah lebih banyak penapis untuk menilai kekuatan tahap utama, contohnya jumlah.
  2. Mengoptimumkan parameter seperti tempoh kembali untuk instrumen yang berbeza.
  3. Mengoptimumkan mekanisme penghentian untuk menjadi lebih adaptif.

Peluang Peningkatan

Strategi ini boleh ditingkatkan dengan:

  1. Menambah lebih banyak syarat untuk mengesahkan kepentingan tahap utama dan mengelakkan pemalsuan.

  2. Mengoptimumkan parameter seperti julat tahap utama dan tempoh melihat kembali berdasarkan ciri instrumen.

  3. Mempertingkatkan mekanisme hentian, contohnya menggunakan jejak dinamik dan bukannya titik tetap.

  4. Menggabungkan pembelajaran mesin untuk menilai kekuatan tahap utama menggunakan data sejarah.

  5. Memperluas kepada sistem pelbagai jangka masa dengan trend TF yang lebih tinggi dan penjejakan TF yang lebih rendah.

Kesimpulan

Strategi ini menawarkan isyarat yang mudah dan intuitif berdasarkan tahap harga utama dan konvensyen perdagangan. Ia mempunyai banyak peluang tetapi memerlukan pengoptimuman lanjut untuk mengendalikan penipuan. Penyesuaian parameter dan pembelajaran mesin dapat meningkatkan ketahanan. Ia memberikan idea perdagangan hari yang baik dan juga boleh diperluaskan ke sistem penjejakan trend pelbagai jangka masa.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Strategy based on the idea that stop loss and take profit are often placed at full price levels or round numbers, whcih acts as resistance and supports levels
//Buy Rules:
//Actual price (close) is above round number.
//Round number level was not touched in previous ten bars (arbitrary value).
//Place a buy and follow the order with a trail step because price can bounce at round number (support) or can go through it.
//Sell Rules are the same of buy rules but inverted.
//
//Need improvement on conditions' logic and round numbers definitions


strategy("dP magnet", overlay=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)

//Round Levels credit to RKchartest

roundLevel50 = input(500, 'Round Level 1, pips')
//roundLevel100 = input(1000, 'Round Level 2, pips')
deviation = input(1000, 'Max distance, pips', minval=0) 

rDelimeter = 1/syminfo.mintick

intRoundLevel = close[1] * rDelimeter

intRemainder = intRoundLevel % roundLevel50 
toRound = (intRemainder >= roundLevel50/2) ? roundLevel50 : 0
roundLevel = (intRoundLevel - intRemainder + toRound) / rDelimeter
plot(roundLevel, title='Round Level 1', color=black, style=line, transp=0, linewidth=1, trackprice=false)

//intRemainder2 = intRoundLevel % roundLevel100
//toRound2 = (intRemainder2 >= roundLevel100/2) ? roundLevel100 : 0
//roundLevel2 = (intRoundLevel - intRemainder2 + toRound2) / rDelimeter
//plot((abs(roundLevel2 - close) * rDelimeter < deviation) ? roundLevel2 : na, title='Round Level 2', color=black, style=circles, transp=0, linewidth=1, trackprice=true)

// end

//Start of strategy

distToFullNumber=(close-roundLevel) //can be positive or negative number

distPips=input(100,'Distance in pips to full level',minval=10) //user defined: this distance defines when to open an order at market price


TrailS=input(20,'Trail Step points',minval=10) //trail step that follows the order

longCondition = iff(distToFullNumber>0 and abs(distToFullNumber)<=distPips and lowest(low,10)>roundLevel,true,false)

if (longCondition)
    strategy.entry("LongMagnet", strategy.long)
    strategy.exit("ExitMagnet","LongMagnet",trail_points=TrailS)

shortCondition = iff(distToFullNumber<0 and abs(distToFullNumber)<=distPips and highest(high,10)<roundLevel,true,false)

if (shortCondition)
    strategy.entry("ShortMagnet", strategy.short)
    strategy.exit("Exit_Magnet","ShortMagnet",trail_points=TrailS)
    

Lebih lanjut