Strategi penilaian angka kontinu bull dan bear garis K

EMA ATR
Tanggal Pembuatan: 2024-05-17 13:54:06 Akhirnya memodifikasi: 2024-05-17 13:54:06
menyalin: 1 Jumlah klik: 682
1
fokus pada
1617
Pengikut

Strategi penilaian angka kontinu bull dan bear garis K

Ringkasan

Strategi ini didasarkan pada jumlah kenaikan atau penurunan berturut-turut pada garis K untuk menilai pasar bullish atau bearish, dan berdasarkan itu untuk melakukan perdagangan. Ketika harga penutupan terus-menerus lebih tinggi dari harga penutupan pada garis K sebelumnya mencapai jumlah yang ditentukan, membuka posisi overhead; Ketika harga penutupan terus-menerus lebih rendah dari harga penutupan pada garis K sebelumnya mencapai jumlah yang ditentukan, membuka posisi overhead.

Prinsip Strategi

  1. Catat berapa kali kondisi multihead dan head kosong berturut-turut terjadi. Jika harga close-out lebih tinggi dari garis K sebelumnya, jumlah multihead ditambah 1, jumlah head kosong akan diatur kembali menjadi 0, jika harga close-out lebih rendah dari garis K sebelumnya, jumlah head kosong ditambah 1, jumlah multihead akan diatur kembali menjadi 0, jika tidak, kedua penghitungan akan diatur kembali menjadi 0.
  2. Ketika jumlah multihead mencapai jumlah yang ditentukan k, buka posisi multihead, atur stop loss dan stop stop.
  3. Untuk posisi multi-head, harga tertinggi yang tercatat setelah posisi dibuka, ketika harga tertinggi melebihi harga bukaan iTGT satu satuan perubahan terkecil, dan harga penutupan kembali ke iPcnt% di bawah harga tertinggi, posisi kosong.
  4. Ketika jumlah head kosong mencapai jumlah yang ditentukan k2, buka posisi head kosong, atur stop loss dan stop stop.
  5. Untuk posisi kosong, catat harga terendah setelah membuka posisi, ketika harga terendah di bawah harga bukaan posisi iTGT satu satuan perubahan terkecil, dan harga penutupan rebound ke iPcnt% di atas harga terendah, posisi kosong.

Keunggulan Strategis

  1. Sederhana, mudah dimengerti, membuat keputusan trading berdasarkan kontinuitas garis K, logika jelas.
  2. Mekanisme penghentian bergerak diperkenalkan untuk melindungi keuntungan secara aktif setelah harga berjalan dalam arah yang menguntungkan.
  3. Pengaturan stop loss dan stop loss dapat secara efektif mengontrol risiko dan mengunci keuntungan.
  4. Parameter dapat disesuaikan untuk pasar dan gaya perdagangan yang berbeda.

Risiko Strategis

  1. Dalam situasi yang bergejolak, sering membuka posisi kosong dapat menyebabkan biaya slippage yang lebih besar.
  2. Pertimbangan jumlah garis K berturut-turut dipengaruhi oleh kebisingan pasar, dan sinyal yang mungkin sering muncul.
  3. Stop loss dan stop loss tetap mungkin tidak dapat beradaptasi dengan perubahan volatilitas pasar.

Arah optimasi strategi

  1. Menggunakan lebih banyak indikator teknis, seperti garis rata-rata, tingkat fluktuasi, dan lain-lain, untuk membantu menilai kekuatan dan arah tren.
  2. Mengoptimalkan kondisi pemicu stop-motion, seperti persentase penarikan kembali yang disesuaikan dengan ATR.
  3. Mengadopsi metode stop loss dan stop yang lebih dinamis, seperti tracking stop loss, dan stop step.
  4. Optimalkan parameter untuk menemukan kombinasi optimal yang sesuai dengan pasar dan varietas yang berbeda.

Meringkaskan

Strategi ini menangkap tren bullish dan bearish melalui kontinuitas garis K, sambil mengatur stop loss untuk mengendalikan risiko. Pengenalan stop loss bergerak dapat melindungi keuntungan dengan lebih baik. Namun, sinyal mungkin sering terjadi di pasar yang bergoyang, dan keandalan sinyal perlu dioptimalkan lebih lanjut. Selain itu, pengaturan stop loss juga dapat lebih fleksibel untuk menyesuaikan diri dengan perubahan dinamika pasar.

Kode Sumber Strategi
/*backtest
start: 2024-04-16 00:00:00
end: 2024-05-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("K Consecutive Candles 數來寶V2", max_bars_back=300, overlay=true)

// 定義用戶輸入
k = input.int(3, title="Number of Consecutive Candles for Long", minval=1)
k2 = input.int(3, title="Number of Consecutive Candles for Short", minval=1)
stopLossTicks = input.int(500, title="Stop Loss (Ticks)")
takeProfitTicks = input.int(500, title="Take Profit (Ticks)")
iTGT = input.int(200,"iTGT")  // 移動停利點
iPcnt = input.int(50,"iPcnt")  // 移動停利%

var float TrailValue = 0
var float TrailExit = 0
var float  vMP = 0

BarsSinceEntry = ta.barssince(strategy.position_size == 0)

vMP := strategy.position_size

// 创建一个包含键值对的字典
addArrayData(type, value) =>
    alert_array = array.new_string()
    array.push(alert_array, '"timenow": ' + str.tostring(timenow))
    array.push(alert_array, '"seqNum": ' + str.tostring(value))
    array.push(alert_array, '"type": "' + type + '"')
    alertstring = '{' + array.join(alert_array,', ') + '}'


// 定義條件變量
var int countLong = 0  // 記錄連續多頭條件成立的次數
var int countShort = 0 // 記錄連續空頭條件成立的次數

// 計算連續大於或小於前一根的收盤價格的次數
if close > close[1]
    countLong += 1
    countShort := 0 // 重置空頭計數
else if close < close[1]
    countShort += 1
    countLong := 0 // 重置多頭計數
else
    countLong := 0
    countShort := 0

// 開設多頭倉位條件
if countLong >= k
    strategy.entry("Long Entry", strategy.long)
    strategy.exit("Exit Long", "Long Entry", loss=stopLossTicks, profit=takeProfitTicks)
    

if vMP>0
    TrailValue := ta.highest(high,BarsSinceEntry)
    TrailExit := TrailValue - iPcnt*0.01*(TrailValue - strategy.position_avg_price)
    if TrailValue > strategy.position_avg_price + iTGT * syminfo.minmove/syminfo.pricescale and close < TrailExit
        
        strategy.close("Long Entry", comment = "Trl_LX"+ str.tostring(close[0]))
// 開設空頭倉位條件
if countShort >= k2
    strategy.entry("Short Entry", strategy.short)
    strategy.exit("Exit Short", "Short Entry", loss=stopLossTicks, profit=takeProfitTicks)

if vMP<0    
    TrailValue := ta.lowest(low,BarsSinceEntry)
    TrailExit := TrailValue - iPcnt*0.01*(TrailValue - strategy.position_avg_price)
    if TrailValue < strategy.position_avg_price - iTGT * syminfo.minmove/syminfo.pricescale and close > TrailExit
        
        strategy.close("short60", comment = "Trl_SX"+ str.tostring(close[0]))