Sumber dimuat naik... memuat...

K Lilin berturut-turut Bull Bear Strategi

Penulis:ChaoZhang, Tarikh: 2024-05-17 13:54:06
Tag:EMAATR

img

Ringkasan

Strategi ini menentukan pasaran lembu atau lembu berdasarkan bilangan lilin naik atau turun berturut-turut dan membuat dagangan dengan sewajarnya. Apabila harga penutupan berturut-turut lebih tinggi daripada lilin sebelumnya ditutup untuk beberapa kali yang ditentukan, ia memasuki kedudukan panjang; apabila harga penutupan berturut-turut lebih rendah daripada lilin sebelumnya ditutup untuk beberapa kali yang ditentukan, ia memasuki kedudukan pendek. Hentikan kerugian dan ambil keuntungan ditetapkan, dan mekanisme hentian penghantaran diperkenalkan untuk melindungi keuntungan.

Prinsip Strategi

  1. Mencatatkan bilangan kali keadaan menaik dan menurun berturut-turut dipenuhi. Jika penutupan lebih tinggi daripada lilin sebelumnya, jumlah menaik meningkat sebanyak 1 dan jumlah menaik disetel semula kepada 0; jika penutupan lebih rendah, jumlah menaik meningkat sebanyak 1 dan jumlah menaik disetel semula kepada 0; jika tidak, kedua-dua pengiraan disetel semula kepada 0.
  2. Apabila jumlah bullish mencapai nombor k yang ditentukan, masukkan kedudukan panjang dengan stop loss dan ambil keuntungan.
  3. Untuk kedudukan panjang, catat harga tertinggi selepas masuk. Apabila harga tertinggi melebihi harga masuk oleh unit perubahan harga minimum iTGT dan penutupan menarik balik di bawah harga tertinggi oleh iPcnt%, tutup kedudukan.
  4. Apabila jumlah penurunan mencapai nombor k2 yang ditentukan, masukkan kedudukan pendek dengan stop loss dan ambil keuntungan.
  5. Untuk kedudukan pendek, rekodkan harga terendah selepas masuk. Apabila harga terendah lebih rendah daripada harga masuk oleh unit perubahan harga minimum iTGT dan rebound dekat di atas harga terendah oleh iPcnt%, tutup kedudukan.

Kelebihan Strategi

  1. Sederhana dan mudah difahami, membuat keputusan perdagangan berdasarkan kesinambungan lilin dengan logika yang jelas.
  2. Memperkenalkan mekanisme hentian untuk melindungi keuntungan secara aktif selepas harga bergerak jarak tertentu ke arah yang menguntungkan.
  3. Menetapkan stop loss dan mengambil keuntungan dapat mengawal risiko dengan berkesan dan mengunci keuntungan.
  4. Parameter yang boleh diselaraskan untuk memenuhi pasaran dan gaya perdagangan yang berbeza.

Risiko Strategi

  1. Dalam pasaran yang bergelora, pembukaan dan penutupan kedudukan yang kerap boleh membawa kepada kos seluncur yang besar.
  2. Penghakiman nombor lilin berturut-turut dipengaruhi oleh bunyi bising pasaran, yang boleh mengakibatkan isyarat yang kerap.
  3. Tahap stop loss dan mengambil keuntungan tetap mungkin tidak disesuaikan dengan perubahan turun naik pasaran.

Arahan Pengoptimuman Strategi

  1. Memperkenalkan lebih banyak penunjuk teknikal, seperti purata bergerak dan turun naik, untuk membantu menilai kekuatan dan arah trend.
  2. Mengoptimumkan keadaan pencetus untuk hentian, seperti menyesuaikan peratusan pulback berdasarkan ATR.
  3. Mengguna pakai kaedah stop loss dan mengambil keuntungan yang lebih dinamik, seperti stop trailing dan mengambil keuntungan.
  4. Mengoptimumkan parameter untuk mencari kombinasi yang optimum untuk pasaran dan instrumen yang berbeza.

Ringkasan

Strategi ini menangkap trend bull dan bear melalui kesinambungan lilin sambil menetapkan stop loss dan mengambil keuntungan untuk mengawal risiko. Pengenalan stop trailing dapat melindungi keuntungan dengan lebih baik. Walau bagaimanapun, ia mungkin menghasilkan isyarat yang kerap di pasaran yang bergolak, yang memerlukan pengoptimuman kebolehpercayaan isyarat yang lebih lanjut. Di samping itu, penetapan stop loss dan mengambil keuntungan boleh lebih fleksibel untuk menyesuaikan diri dengan perubahan pasaran yang dinamik. Secara keseluruhan, strategi ini mempunyai idea yang mudah dan jelas, sesuai untuk pasaran yang sedang berkembang, tetapi masih ada ruang untuk pengoptimuman.


/*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]))






Berkaitan

Lebih lanjut