Strategi pelacakan berdasarkan titik harga utama


Tanggal Pembuatan: 2023-09-21 15:24:53 Akhirnya memodifikasi: 2023-09-21 15:24:53
menyalin: 0 Jumlah klik: 684
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini didasarkan pada pemikiran bahwa titik-titik harga stop loss dan stop loss sering kali ditetapkan pada tingkat harga integer atau harga kunci, yang sering kali berfungsi sebagai titik dukungan dan resistensi. Strategi ini melakukan pembelian atau penjualan dengan mengidentifikasi tingkat harga kunci ini ketika harga mendekati.

Prinsip Strategi

Strategi ini mencakup aturan-aturan berikut:

  1. Bila harga penutupan lebih tinggi dari level harga kunci, dan tidak menyentuh harga tersebut dalam 10 garis K terakhir, maka dilakukan pembelian.

  2. Kemudian, pelacakan menanjak digunakan untuk melacak pergerakan harga yang melampaui harga kunci. Panjang menanjak adalah 20 poin.

  3. Operasi jual bertentangan dengan pembelian, ketika harga penutupan berada di bawah tingkat harga kunci, dan tidak menyentuh harga tersebut dalam 10 garis K terakhir, operasi jual dilakukan.

  4. Cara untuk mengidentifikasi tingkat harga kunci adalah:

    • Konversi harga akhir menjadi bilangan bulat
    • Menghitung sisa dengan 50 titik bulat (configurable)
    • Jika jumlah yang tersisa lebih besar dari 25, maka ambil 50 poin terakhir sebagai harga kunci.
    • Jika tidak, harga kunci akan tetap sama.

Strategi ini didasarkan pada konsep psikologi harga, yang menganggap bahwa harga integer atau tingkat kunci seringkali merupakan posisi penting yang dipertaruhkan oleh kedua belah pihak, sehingga memberikan efek sebagai sinyal perdagangan. Pada saat yang sama, pelacakan crawling dapat melacak tren setelah terobosan harga.

Keunggulan Strategis

Strategi ini memiliki keuntungan sebagai berikut:

  1. Sinyal perdagangan dan aturan masuk yang sederhana dan intuitif.
  2. Ini adalah aturan umum yang berlaku di titik-titik harga, tidak tergantung pada varietas tertentu.
  3. Tracking stop loss dapat mengunci keuntungan dan mengikuti tren.

Risiko Strategis

Strategi ini juga memiliki risiko sebagai berikut:

  1. Titik harga yang penting tidak selalu merupakan support atau resistance yang kuat. Jika false breakout, mungkin menyebabkan kegagalan perdagangan.
  2. Aturan penghakiman 10 garis K yang tetap mungkin tidak cocok untuk varietas yang berbeda.
  3. Tracking stop loss tidak boleh terlalu jauh, jika tidak, mungkin stop loss terlalu dini.

Solusi yang sesuai:

  1. Ini adalah salah satu indikator yang digunakan untuk menilai titik-titik harga.
  2. Optimalkan parameter untuk varietas yang berbeda, mencari kombinasi parameter yang optimal.
  3. Optimalkan parameter untuk melacak stop loss agar lebih dekat dengan pasar.

Arah optimasi strategi

Strategi ini dapat dioptimalkan dengan:

  1. Menambahkan lebih banyak kriteria untuk menilai pentingnya titik-titik harga kunci, untuk menghindari risiko false breakout.

  2. Parameter optimasi, terutama untuk menentukan jarak langkah dari area harga kunci, siklus K-line, dan lain-lain. Untuk membuatnya lebih sesuai dengan karakteristik varietas yang berbeda.

  3. Mengoptimalkan mekanisme tracking stop loss, misalnya dengan menggunakan tracking stop loss yang dinamis sebagai pengganti stop loss yang tetap.

  4. Menambahkan algoritma pembelajaran mesin yang menggunakan data historis untuk menilai kekuatan dan kelemahan wilayah harga kunci untuk meningkatkan kualitas sinyal.

  5. Strategi yang diperluas untuk jangka waktu yang lebih panjang, dengan penilaian tren pada jangka waktu yang lebih tinggi dan pelacakan pada jangka waktu yang lebih rendah.

Meringkaskan

Strategi ini didasarkan pada pemikiran yang sederhana dan intuitif pada titik-titik penting harga, memanfaatkan kebiasaan perdagangan yang umum untuk membentuk sinyal perdagangan. Ada banyak peluang strategi, tetapi perlu dioptimalkan lebih lanjut untuk menangani kasus false breakout.

Kode 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)