Strategi Stop Loss dan Take Profit yang Didorong Indikator

Penulis:ChaoZhang, Tanggal: 2023-11-10 11:28:06
Tag:

img

Gambaran umum

Strategi ini menggunakan moving average sebagai sinyal trading dan menggabungkannya dengan stop loss dan take profit ratio yang didefinisikan pengguna untuk menerapkan stop loss dan take profit strategi yang didorong indikator lengkap.

Logika Strategi

Logika inti dari strategi ini adalah:

  1. Menggunakan SMA 3 periode sebagai sinyal perdagangan, pergi panjang ketika SMA melintasi di atas 0, dan pergi pendek ketika SMA melintasi di bawah 0.

  2. Setelah memasuki perdagangan, pengguna dapat menyesuaikan stop loss dan mengambil rasio keuntungan.

  3. Berdasarkan harga masuk dan rasio stop loss yang ditetapkan oleh pengguna, secara otomatis mengatur garis stop loss.

  4. Berdasarkan harga masuk dan mengambil rasio keuntungan yang ditetapkan oleh pengguna, secara otomatis menetapkan mengambil garis keuntungan.

  5. Ketika harga menyentuh stop loss line, stop out secara otomatis.

  6. Setelah menutup posisi, secara otomatis membatalkan stop loss dan mengambil order profit.

Secara khusus, strategi menghitung SMA 3-periode menggunakan fungsi sma dan menugaskannya ke variabel ma.

Kemudian ia menghitung panjang garis entri panjang, yang ma ditambah ma% dari lo. lo adalah parameter yang dapat disesuaikan pengguna untuk long entry line offset.

Ketika ma melintasi di atas 0, itu menandakan entri panjang. Strategi masuk panjang menggunakan fungsi strategi.entry dengan harga masuk ditetapkan menjadi panjang.

Pada saat yang sama, harga stop loss dan take profit ditetapkan. Harga stop loss adalah harga masuk dikurangi harga masuk% dari sl. sl adalah parameter rasio stop loss yang dapat disesuaikan pengguna. Harga take profit adalah harga masuk ditambah harga masuk% dari tp. tp adalah parameter rasio take profit yang dapat disesuaikan pengguna.

Fungsi strategi.entry mengatur stop loss dan take profit secara terpisah. Ketika harga menyentuh garis stop loss, itu akan berhenti secara otomatis. Ketika harga menyentuh garis profit, itu akan mengambil keuntungan secara otomatis.

Setelah penutupan posisi, stop loss dan take profit order dibatalkan secara otomatis menggunakan fungsi strategy.cancel.

Keuntungan

Keuntungan dari strategi ini:

  1. Tingkat otomatisasi yang tinggi, tidak perlu gangguan manual, cocok untuk perdagangan algoritma.

  2. Stop loss yang dapat disesuaikan dan mengambil rasio keuntungan untuk mengendalikan risiko.

  3. Sinyal perdagangan datang dari indikator, menghindari false breakout.

  4. Stop loss dan mengambil keuntungan, intuitif.

  5. Logika strategi yang sederhana dan jelas, mudah dipahami dan diimplementasikan.

Risiko dan Solusi

Ada juga beberapa risiko dengan strategi ini:

  1. Risiko sinyal palsu dari indikator Solusi adalah untuk mengoptimalkan parameter untuk memastikan indikator yang dapat diandalkan.

  2. Stop loss yang tidak tepat dan mengambil pengaturan rasio keuntungan, bisa terlalu longgar atau terlalu agresif.

  3. Solusi adalah untuk menyaring sinyal masuk dengan tren, volume dll.

  4. Solusi adalah untuk menurunkan ukuran posisi atau menggunakan stop loss.

Arahan Optimasi

Beberapa arah untuk mengoptimalkan strategi:

  1. Mengoptimalkan parameter rata-rata bergerak untuk keandalan.

  2. Mengoptimalkan kondisi masuk untuk menghindari kebocoran palsu, menambahkan konfirmasi volume dll.

  3. Mengoptimalkan stop loss dan mengambil keuntungan, menggunakan stop loss dinamis atau trailing dll.

  4. Mengoptimalkan manajemen risiko, menyesuaikan ukuran posisi, mengurangi risiko perdagangan tunggal.

  5. Mengoptimalkan waktu masuk, menggabungkan dengan tren, dukungan / resistensi dll.

  6. Tambahkan piramida untuk keuntungan komposit.

  7. Optimasi parameter untuk produk tertentu.

Kesimpulan

Strategi ini menyediakan kerangka kerja teknis yang sederhana dan dapat diandalkan untuk stop loss yang didorong indikator dan mengambil keuntungan dengan keuntungan seperti otomatisasi dan pengendalian risiko. Ini cocok untuk perdagangan algoritmik. Ada juga banyak aspek yang dapat ditingkatkan dan dioptimalkan, seperti parameter indikator, filter entri, strategi stop loss / take profit, manajemen risiko dll. Dengan perluasan dan optimasi lebih lanjut, ini dapat menjadi strategi perdagangan yang lebih kuat.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/
//Settings
lo = input(-5.0, title = "Long-line, %")
tp = input(5.0, title = "Take-profit")
sl = input(2.0, title = "Stop-loss")

//SMA
ma = sma(ohlc4, 3)
long = ma + ((ma / 100) * lo)

//Orders
avg = strategy.position_avg_price
if ma > 0
    strategy.entry("Long", strategy.long, limit = long)
    strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp))
    strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl))
    
//Cancel order
if strategy.position_size == 0
    strategy.cancel("Take")
    strategy.cancel("Stop")

//Lines
plot(long, offset = 1, color = color.black, transp = 0)
take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp)
stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl)
takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na
stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na
plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0)
plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0)
//
disp_panels = input(true, title="Display info panels?")
h=high
info_label_off = input(20, title="Info panel offset")
info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size")
info_panel_x = timenow + round(change(time)*info_label_off)
info_panel_y = h

info_title= "-=-=-=-=- Info Panel -=-=-=-=-"
info_div = "\n\n------------------------------"
a = "\n\ Long : " + tostring(long)
b = "\n\ Stop loss : " + tostring(stop)
c = "\n\ TP : " + tostring(take)
// info_text = a+c+b
// info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na
// label.delete(info_panel[1])




Lebih banyak