strategi perdagangan jangka pendek

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

img

Gambaran umum

Ini adalah strategi perdagangan jangka pendek yang didasarkan pada channel breakout. Ini menggunakan breakout dari saluran rel atas dan bawah untuk menentukan awal dan akhir tren, dan membuat keputusan perdagangan sesuai.

Logika Strategi

  1. Strategi ini pertama-tama menghitung tertinggi tinggi dan terendah rendah selama periode tertentu untuk membangun 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 mengendalikan risiko. Stop loss diatur di garis tengah saluran.

  4. Ada dua aturan keluar opsional: kembali ke garis tengah atau ikuti stop loss bergerak. Yang pertama menyadari keuntungan dengan cepat sementara yang terakhir mengontrol risiko.

  5. Periode saluran dan parameter lainnya dapat disesuaikan untuk mengoptimalkan strategi untuk kondisi pasar yang berbeda.

Analisis Keuntungan

  1. Hanya memantau hubungan harga-saluran dan mengikuti aturan untuk perdagangan.

  2. Perdagangan di sepanjang tren, tidak ada risiko kontra-tren.

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

  4. Margin keuntungan yang baik, dapat mencapai pengembalian yang memuaskan dalam kebanyakan kasus.

  5. Banyak parameter yang dapat disesuaikan untuk optimasi di pasar yang berbeda.

Analisis Risiko

  1. Penembusan mungkin gagal, ada risiko terperangkap.

  2. Saluran membutuhkan waktu untuk terbentuk, tidak cocok untuk pasar yang terikat jangkauan.

  3. Kembali ke stop loss tengah mungkin terlalu konservatif, tidak dapat mempertahankan tren.

  4. Optimasi parameter membutuhkan data historis, overfit mungkin dalam perdagangan langsung.

  5. Perdagangan secara mekanis dari titik-titik breakout dapat meningkatkan frekuensi perdagangan dan biaya slippage.

Arahan Optimasi

  1. Evaluasi saluran dari periode yang berbeda dan pilih yang optimal.

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

  3. Optimalkan persentase stop loss untuk mengurangi kemungkinan dihentikan.

  4. Tambahkan filter tren untuk menghindari perdagangan breakout yang tidak tepat.

  5. Pertimbangkan untuk meningkatkan ukuran posisi tetapi mengontrol risiko.

Ringkasan

Secara keseluruhan ini adalah strategi breakout jangka pendek yang matang. Ini memiliki aturan masuk yang jelas, pengendalian risiko yang tepat, dan bekerja dengan baik secara umum. Peningkatan lebih lanjut dapat dicapai melalui penyesuaian parameter. Tetapi keterbatasan yang melekat harus dicatat, penyesuaian yang diperlukan untuk pasar yang berbeda. Jika digunakan secara sistematis, itu 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 banyak