Strategi penjejakan berdasarkan mata harga utama


Tarikh penciptaan: 2023-09-21 15:24:53 Akhirnya diubah suai: 2023-09-21 15:24:53
Salin: 0 Bilangan klik: 684
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini berdasarkan kepada idea bahawa titik-titik harga berhenti dan berhenti sering ditetapkan pada harga integer atau tahap harga kritikal, yang sering berfungsi sebagai titik sokongan dan rintangan. Dengan mengenal pasti tahap harga kritikal ini, strategi ini melakukan pembelian atau penjualan apabila harga mendekati.

Prinsip Strategi

Strategi ini terdiri daripada peraturan-peraturan berikut:

  1. Apabila harga penutupan lebih tinggi daripada tahap harga kritikal, dan tidak menyentuh harga itu dalam 10 garis K terakhir, lakukan pembelian.

  2. Kemudian, pelacakan pendakian digunakan untuk mengesan pergerakan harga untuk menembusi harga kritikal.

  3. Operasi jual bertentangan dengan pembelian, apabila harga penutupan berada di bawah paras harga kritikal dan tidak menyentuh harga itu dalam 10 baris K terakhir, operasi jual dilakukan.

  4. Cara untuk mengenal pasti tahap harga kritikal ialah:

    • Ubah harga penutupan ke nombor bulat
    • Hitung sisa dengan 50 titik bulat ((boleh dikonfigurasi)
    • Jika jumlah yang tersisa lebih besar daripada 25, ambil 50 titik penuh yang terdekat sebagai harga utama.
    • Jika tidak, harga utama kekal sama.

Strategi ini berdasarkan kepada falsafah psikologi harga, yang menganggap harga integer atau tahap penting sering menjadi kedudukan penting yang diperjuangkan oleh pihak yang lebih banyak ruang, sehingga memberi kesan sebagai isyarat perdagangan. Pada masa yang sama, penjejakan ramping dapat mengesan trend selepas harga pecah.

Kelebihan Strategik

Strategi ini mempunyai kelebihan berikut:

  1. Isyarat perdagangan dan peraturan kemasukan yang mudah dan intuitif.
  2. Menggunakan peraturan umum mengenai titik harga kritikal, tidak bergantung pada jenis tertentu.
  3. Tracking Stop Loss boleh mengunci keuntungan, mengikut trend.

Risiko Strategik

Strategi ini juga mempunyai risiko:

  1. Titik harga yang penting tidak semestinya sokongan atau rintangan yang kuat. Jika penembusan palsu, ia boleh menyebabkan kegagalan perdagangan.
  2. Peraturan penghakiman 10 garis K yang tetap mungkin tidak sesuai untuk pelbagai jenis.
  3. Jarak pengesanan tidak boleh terlalu jauh, jika tidak, ia mungkin terlambat.

Penyelesaian:

  1. Ini adalah satu-satunya cara untuk menilai harga yang lebih rendah daripada harga yang lebih rendah.
  2. Untuk mengoptimumkan parameter untuk pelbagai jenis, cari kombinasi parameter terbaik.
  3. Optimumkan parameter untuk mengesan kerugian sehingga lebih dekat dengan pasaran.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dengan:

  1. Menambah lebih banyak syarat untuk menilai kepentingan titik harga utama, untuk mengelakkan risiko penembusan palsu.

  2. Parameter pengoptimuman, terutamanya untuk menentukan jarak langkah di kawasan harga utama, kitaran K. Untuk menjadikannya lebih sesuai dengan ciri-ciri varieti yang berbeza.

  3. Mengoptimumkan mekanisme penghentian pengesanan, seperti menggunakan penghentian pengesanan dinamik dan bukannya penghentian pendakian tetap.

  4. Menambah algoritma pembelajaran mesin yang menggunakan data sejarah untuk menilai kekuatan dan kelemahan kawasan harga utama untuk meningkatkan kualiti isyarat.

  5. Strategi yang diperluaskan untuk jangka masa yang lebih tinggi, dan trend yang lebih tinggi untuk jangka masa yang lebih rendah

ringkaskan

Strategi ini berdasarkan pada titik-titik harga yang mudah dan intuitif, menggunakan kebiasaan perdagangan yang umum untuk membentuk isyarat perdagangan. Peluang strategi cukup, tetapi perlu dioptimumkan lebih lanjut untuk menangani keadaan pecah palsu. Cara seperti pengoptimuman parameter dan pembelajaran mesin dapat meningkatkan kestabilan strategi.

Kod sumber strategi
/*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)