strategi perdagangan jangka pendek

Penulis:ChaoZhang, Tarikh: 2023-10-25 14:40:21
Tag:

img

Ringkasan

Ini adalah strategi perdagangan jangka pendek berdasarkan penembusan saluran. Ia menggunakan penembusan rel atas dan bawah saluran untuk menentukan permulaan dan akhir trend, dan membuat keputusan perdagangan dengan sewajarnya.

Logika Strategi

  1. Strategi pertama mengira tertinggi tertinggi dan terendah terendah dalam tempoh tertentu untuk membina rel atas dan bawah saluran.

  2. Jika harga pecah di atas rel atas, pergi panjang. Jika harga pecah di bawah rel bawah, pergi pendek.

  3. Gunakan stop loss bergerak untuk mengawal risiko. Stop loss ditetapkan di garis tengah saluran.

  4. Terdapat dua peraturan keluar pilihan: kembali ke garisan tengah atau mengikuti stop loss bergerak. Yang pertama merealisasikan keuntungan dengan cepat manakala yang kedua mengawal risiko.

  5. Tempoh saluran dan parameter lain boleh disesuaikan untuk mengoptimumkan strategi untuk keadaan pasaran yang berbeza.

Analisis Kelebihan

  1. Mudah untuk dilaksanakan. hanya memantau hubungan saluran harga dan mengikuti peraturan untuk perdagangan.

  2. Berdagang mengikut trend, tiada risiko kontra-trend.

  3. Saluran yang jelas dan intuitif memberikan isyarat masuk yang jelas.

  4. Margin keuntungan yang baik, boleh mencapai pulangan yang memuaskan dalam kebanyakan kes.

  5. Banyak parameter yang boleh diselaraskan untuk pengoptimuman di pasaran yang berbeza.

Analisis Risiko

  1. Penembusan mungkin gagal, ada risiko terperangkap.

  2. Saluran memerlukan tempoh untuk terbentuk, tidak sesuai untuk pasaran yang terhad.

  3. Kembali ke stop loss pertengahan mungkin terlalu konservatif, tidak dapat mengekalkan trend.

  4. Pengoptimuman parameter memerlukan data sejarah, overfit mungkin dalam perdagangan langsung.

  5. Perdagangan mekanikal titik pecah boleh meningkatkan kekerapan perdagangan dan kos slippage.

Arahan pengoptimuman

  1. Menilai saluran dari tempoh yang berbeza dan pilih yang optimum.

  2. Uji kembali ke tengah dan bergerak stop loss untuk mencari mekanisme keluar yang lebih baik.

  3. Mengoptimumkan peratusan stop loss untuk mengurangkan peluang untuk dihentikan.

  4. Tambah penapis trend untuk mengelakkan perdagangan pecah yang tidak sesuai.

  5. Pertimbangkan untuk meningkatkan saiz kedudukan tetapi mengawal risiko.

Ringkasan

Secara keseluruhan, ini adalah strategi pecah jangka pendek yang matang. Ia mempunyai peraturan kemasukan yang jelas, kawalan risiko yang betul, dan berfungsi dengan baik secara umum. Penambahbaikan lanjut dapat dicapai melalui penyesuaian parameter. Tetapi batasan yang melekat harus diperhatikan, penyesuaian yang diperlukan untuk pasaran yang berbeza. Jika digunakan secara sistematik, ia harus memberikan keuntungan keseluruhan yang konsisten.


/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Strategy testing and optimisation for free Bitmex trading bot 
// © algotradingcc 

//@version=4
strategy("Channel Break [for free bot]", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.075)

//Options
buyPeriod = input(13, "Channel Period for Long position")
sellPeriod = input(18, "Channel Period for Short position")
isMiddleExit = input(true, "Is exit on Base Line?")
takeProfit = input(46, "Take Profit (%) for position")
stopLoss = input(9, "Stop Loss (%) for position")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriod)
BuyExit = isMiddleExit ? (highest(buyPeriod) + lowest(buyPeriod)) / 2: lowest(buyPeriod)

SellEnter = lowest(sellPeriod)
SellExit = isMiddleExit ? (highest(sellPeriod) + lowest(sellPeriod)) / 2: highest(sellPeriod)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits & Stop Loss
TP = 0.0
SL = 0.0
if strategy.position_size > 0
    TP := strategy.position_avg_price*(1 + takeProfit/100)
    SL := strategy.position_avg_price*(1 - stopLoss/100)

if strategy.position_size > 0 and SL > BuyExit
    BuyExit := SL
    
if strategy.position_size < 0
    TP := strategy.position_avg_price*(1 - takeProfit/100)
    SL := strategy.position_avg_price*(1 + stopLoss/100)

if strategy.position_size < 0 and SL < SellExit
    SellExit := SL
    
    
// Long Position    
if timeRange and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, stop = BuyEnter)
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TP, when = strategy.position_size > 0)


// Short Position
if timeRange and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, stop = SellEnter)
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TP, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()


Lebih lanjut