Strategi Pelacakan Nomor Bulat

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

Gambaran umum

Strategi ini didasarkan pada gagasan bahwa stop loss dan take profit level sering ditempatkan pada angka bulat atau level harga kunci, yang bertindak sebagai support dan resistance.

Logika Strategi

Aturan utama dari strategi ini adalah:

  1. Ketika harga penutupan berada di atas tingkat harga kunci, dan belum menyentuh tingkat tersebut dalam 10 bar terakhir, pergi panjang.

  2. Gunakan trailing stop dengan langkah 20 poin untuk mengikuti pergerakan setelah harga melanggar level kunci.

  3. Sinyal jual adalah sebaliknya - ketika close berada di bawah level kunci dan belum menyentuhnya dalam 10 bar terakhir, pergi pendek.

  4. Tingkat kunci diidentifikasi sebagai:

    • Mengkonversi harga dekat ke bilangan bulat
    • Hitung sisa dari pembagian dengan 50 (dikonfigurasi)
    • Jika sisa > 25, gunakan bilangan bulat 50 berikutnya sebagai tingkat kunci
    • Jika tidak, tetap tingkat kunci tidak berubah

Strategi ini didasarkan pada psikologi bahwa angka bulat dan tingkat kunci sering menjadi medan perang untuk banteng dan beruang, dan dengan demikian memberikan sinyal perdagangan yang efektif.

Keuntungan

Keuntungan dari strategi ini adalah:

  1. Sinyal perdagangan dan aturan masuk yang sederhana dan intuitif.
  2. Menggunakan pola universal dari harga kunci daripada aturan khusus instrumen.
  3. Mengikuti berhenti mengunci dalam keuntungan saat mengendarai tren.

Risiko

Risiko yang harus dipertimbangkan adalah:

  1. Tingkat kunci mungkin tidak selalu bertindak sebagai dukungan / resistensi yang kuat.
  2. 10 bar lookback tetap mungkin tidak cocok untuk instrumen yang berbeda.
  3. Jarak penghentian belakang tidak boleh terlalu luas, jika tidak, hal itu dapat berhenti prematur.

Solusi yang mungkin:

  1. Tambahkan lebih banyak filter untuk menilai kekuatan tingkat kunci, misalnya volume.
  2. Mengoptimalkan parameter seperti periode lookback untuk instrumen yang berbeda.
  3. Mengoptimalkan mekanisme penghentian untuk lebih mudah beradaptasi.

Peluang Peningkatan

Strategi dapat ditingkatkan dengan:

  1. Menambahkan lebih banyak kondisi untuk mengkonfirmasi pentingnya tingkat kunci dan menghindari pemalsuan.

  2. Mengoptimalkan parameter seperti rentang tingkat kunci dan periode lookback berdasarkan karakteristik instrumen.

  3. Meningkatkan mekanisme penghentian trailing, misalnya menggunakan trail dinamis alih-alih trail titik tetap.

  4. Mengintegrasikan pembelajaran mesin untuk menilai kekuatan tingkat kunci menggunakan data historis.

  5. Mengembang ke sistem multi-frame waktu dengan tren TF yang lebih tinggi dan pelacakan TF yang lebih rendah.

Kesimpulan

Strategi ini menawarkan sinyal sederhana dan intuitif berdasarkan tingkat harga kunci dan konvensi perdagangan. Ini memiliki banyak peluang tetapi membutuhkan optimasi lebih lanjut untuk menangani penipuan. Penyesuaian parameter dan pembelajaran mesin dapat meningkatkan ketahanan. Ini memberikan ide perdagangan hari yang baik dan juga dapat diperluas ke sistem pelacakan tren multi-frame.


/*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 banyak