K-line nombor berterusan lembu dan strategi pertimbangan menanggung

EMA ATR
Tarikh penciptaan: 2024-05-17 13:54:06 Akhirnya diubah suai: 2024-05-17 13:54:06
Salin: 1 Bilangan klik: 682
1
fokus pada
1617
Pengikut

K-line nombor berterusan lembu dan strategi pertimbangan menanggung

Gambaran keseluruhan

Strategi ini membuat keputusan mengenai pasaran lembu atau pasaran beruang berdasarkan jumlah kenaikan atau penurunan berturut-turut pada garis K, dan berdagang mengikutnya. Apabila harga penutupan secara berturut-turut lebih tinggi daripada harga penutupan pada garis K terdahulu mencapai jumlah yang ditetapkan, membuka kedudukan lebih tinggi; Apabila harga penutupan secara berturut-turut lebih rendah daripada harga penutupan pada garis K terdahulu mencapai jumlah yang ditetapkan, membuka kedudukan kosong.

Prinsip Strategi

  1. Rekodkan bilangan kali keadaan berturut-turut bermulut dan kosong berlaku. Jika harga penutupan lebih tinggi daripada garis K terdahulu, jumlah bermulut ditambah 1, jumlah bermulut ditempatkan semula menjadi 0, jika harga penutupan lebih rendah daripada garis K terdahulu, jumlah bermulut ditambah 1, jumlah bermulut ditempatkan semula menjadi 0, jika tidak, kedua-dua kira ditempatkan semula menjadi 0
  2. Apabila jumlah kepala mencapai jumlah k yang ditetapkan, buka kedudukan kepala, atur stop loss dan stop stop.
  3. Untuk kedudukan berbilang mata, harga tertinggi yang direkodkan selepas membuka kedudukan, apabila harga tertinggi melebihi harga bukaan kedudukan iTGT satu unit perubahan terkecil, dan harga penutupan ditutup kembali ke iPcnt% di bawah harga tertinggi, kedudukan kosong.
  4. Apabila kiraan kepala kosong mencapai jumlah k2 yang ditetapkan, buka kedudukan kepala kosong, atur hentikan kerugian dan berhenti.
  5. Untuk kedudukan kosong, rekod harga terendah selepas membuka kedudukan, apabila harga terendah adalah lebih rendah daripada harga bukaan iTGT satu satuan perubahan terkecil, dan harga penutupan rebound ke iPcnt% di atas harga terendah, kedudukan kosong.

Kelebihan Strategik

  1. Mudah difahami, keputusan perdagangan berdasarkan kesinambungan K-line, logik yang jelas.
  2. Mekanisme penangguhan bergerak diperkenalkan untuk melindungi keuntungan secara aktif selepas harga bergerak ke arah yang menguntungkan.
  3. Tetapan untuk menghentikan kerugian dan penangguhan boleh mengawal risiko dengan berkesan dan mengunci keuntungan.
  4. Parameter boleh disesuaikan untuk pasaran dan gaya dagangan yang berbeza.

Risiko Strategik

  1. Dalam keadaan yang tidak menentu, pembukaan kedudukan kosong yang kerap boleh menyebabkan kos slippage yang lebih besar.
  2. Penghakiman jumlah K secara berturut-turut dipengaruhi oleh bunyi pasaran, dan mungkin terdapat isyarat yang kerap.
  3. Stop loss dan stop loss yang tetap mungkin tidak dapat menyesuaikan diri dengan perubahan turun naik pasaran.

Arah pengoptimuman strategi

  1. Pengenalan lebih banyak petunjuk teknikal seperti garis purata, kadar turun naik dan lain-lain untuk membantu menilai kekuatan dan arah trend.
  2. Mengoptimumkan keadaan pemicu penghentian bergerak, seperti peratusan penarikan balik yang disesuaikan mengikut ATR.
  3. Menggunakan kaedah hentian dan hentian yang lebih dinamik, seperti hentian pengesanan, hentian tangga, dan sebagainya.
  4. Mengoptimumkan parameter untuk mencari kombinasi optimum yang sesuai untuk pasaran dan varieti yang berbeza.

ringkaskan

Strategi ini menangkap trend bullish dan bearish melalui kesinambungan K-line, sambil menetapkan stop loss untuk mengawal risiko. Pengenalan stop loss bergerak dapat melindungi keuntungan dengan lebih baik. Tetapi mungkin terdapat isyarat yang kerap di pasaran yang bergolak, dan kebolehpercayaan isyarat perlu dioptimumkan lebih lanjut.

Kod 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]))