Strategi Stop Loss dan Ambil Keuntungan yang Dikendalikan Indikator

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

img

Ringkasan

Strategi ini menggunakan purata bergerak sebagai isyarat perdagangan dan menggabungkannya dengan stop loss dan mengambil keuntungan yang ditakrifkan pengguna untuk melaksanakan strategi stop loss dan mengambil keuntungan yang didorong penunjuk lengkap.

Logika Strategi

Logik teras strategi ini ialah:

  1. Menggunakan 3 tempoh SMA sebagai isyarat dagangan, pergi panjang apabila SMA melintasi di atas 0, dan pergi pendek apabila SMA melintasi di bawah 0.

  2. Selepas memasuki perdagangan, pengguna boleh menyesuaikan stop loss dan mengambil nisbah keuntungan.

  3. Berdasarkan harga kemasukan dan nisbah stop loss yang ditetapkan oleh pengguna, atur garis stop loss secara automatik.

  4. Berdasarkan harga kemasukan dan mengambil nisbah keuntungan yang ditetapkan oleh pengguna, secara automatik menetapkan mengambil garis keuntungan.

  5. Apabila harga menyentuh barisan stop loss, berhenti secara automatik.

  6. Selepas menutup kedudukan, secara automatik membatalkan stop loss dan mengambil pesanan keuntungan.

Khususnya, strategi mengira SMA 3-periode menggunakan fungsi sma dan menetapkannya kepada pembolehubah ma.

Kemudian ia mengira panjang baris entri panjang, yang ma tambah ma% daripada lo. lo adalah parameter pengguna yang boleh diselaraskan untuk offset baris entri panjang.

Apabila ma melintasi di atas 0, ia menandakan entri panjang. Strategi memasuki panjang menggunakan fungsi strategi.entry dengan harga masuk ditetapkan untuk panjang.

Pada masa yang sama, harga stop loss dan mengambil keuntungan ditetapkan. Harga stop loss adalah harga masuk dikurangkan harga masuk% sl. sl adalah parameter nisbah stop loss yang boleh disesuaikan oleh pengguna. Harga mengambil keuntungan adalah harga masuk ditambah harga masuk% tp. tp adalah parameter nisbah mengambil keuntungan yang boleh disesuaikan oleh pengguna.

Fungsi strategi.entry menetapkan perintah stop loss dan mengambil keuntungan secara berasingan. Apabila harga menyentuh garis stop loss, ia akan berhenti secara automatik. Apabila harga menyentuh garis keuntungan, ia akan mengambil keuntungan secara automatik.

Selepas penutupan kedudukan, perintah stop loss dan mengambil keuntungan dibatalkan secara automatik menggunakan fungsi strategi.cancel.

Kelebihan

Kelebihan strategi ini:

  1. Tahap automatik yang tinggi, tidak memerlukan gangguan manual, sesuai untuk perdagangan algoritma.

  2. Stop loss yang boleh disesuaikan dan mengambil nisbah keuntungan untuk mengawal risiko

  3. Isyarat perdagangan datang dari penunjuk, mengelakkan pecah palsu.

  4. Menggambarkan stop loss dan mengambil keuntungan, intuitif.

  5. Logik strategi yang mudah dan jelas, mudah difahami dan dilaksanakan.

Risiko dan Penyelesaian

Terdapat juga beberapa risiko dengan strategi ini:

  1. Risiko isyarat palsu dari penunjuk. penyelesaian adalah untuk mengoptimumkan parameter untuk memastikan penunjuk yang boleh dipercayai.

  2. Penyelesaian adalah untuk menyesuaikan nisbah untuk pasaran yang berbeza.

  3. Penyelesaian adalah untuk menapis isyarat masuk dengan trend, jumlah dan lain-lain.

  4. Penyelesaian adalah untuk mengurangkan saiz kedudukan atau menggunakan stop loss.

Arahan pengoptimuman

Beberapa arah untuk mengoptimumkan strategi:

  1. Mengoptimumkan parameter purata bergerak untuk kebolehpercayaan.

  2. Mengoptimumkan keadaan kemasukan untuk mengelakkan pecah palsu, menambah pengesahan jumlah dan lain-lain.

  3. Mengoptimumkan stop loss dan mengambil keuntungan, menggunakan stop loss dinamik atau trailing dll.

  4. Mengoptimumkan pengurusan risiko, menyesuaikan saiz kedudukan, mengurangkan risiko perdagangan tunggal.

  5. Mengoptimumkan masa kemasukan, menggabungkan dengan trend, sokongan / rintangan dll.

  6. Tambah piramid untuk keuntungan gabungan.

  7. Pengoptimuman parameter untuk produk tertentu.

Kesimpulan

Strategi ini menyediakan rangka kerja teknikal yang mudah dan boleh dipercayai untuk stop loss yang didorong penunjuk dan mengambil keuntungan dengan kelebihan seperti automasi dan kawalan risiko. Ia sesuai untuk perdagangan algoritma. Terdapat juga banyak aspek yang boleh diperbaiki dan dioptimumkan, seperti parameter penunjuk, penapis kemasukan, strategi stop loss / mengambil keuntungan, pengurusan risiko dll. Dengan lanjutan dan pengoptimuman, ia boleh 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 lanjut