Strategi stop loss dan take profit berbasis harga


Tanggal Pembuatan: 2023-11-23 15:36:00 Akhirnya memodifikasi: 2023-11-23 15:36:00
menyalin: 0 Jumlah klik: 672
1
fokus pada
1617
Pengikut

Strategi stop loss dan take profit berbasis harga

Ringkasan

Gagasan inti dari strategi ini adalah menggunakan stop loss yang masuk untuk mengatur stop loss yang masuk akal dan mengelola risiko dan keuntungan dari setiap perdagangan.

Prinsip Strategi

Strategi ini pertama-tama mengatur sinyal masuk acak, melakukan plus ketika SMA14 melewati SMA28 dan melakukan minus ketika SMA14 melewati SMA28.

Setelah masuk, strategi menggunakan fungsi moneyToSLPoints untuk menghitung jumlah stop loss yang sesuai dengan jumlah stop loss yang dimasukkan, dan juga menghitung jumlah stop loss. Dengan demikian, pengaturan stop loss berdasarkan jumlah dolar dapat dicapai.

Sebagai contoh, jika masuk untuk melakukan lebih dari 100 tangan, setiap poin bernilai \( 10 dan stop loss ditetapkan pada \) 100, maka stop loss akan ditetapkan sebagai 100/10/100 = 0,1 poin.

Akhirnya, gunakan strategi.exit untuk mengatur titik keluar dari stop loss. Selain itu, gambarkan garis stop loss dan garis stop loss sebagai referensi debugging.

Analisis Keunggulan

Strategi ini didasarkan pada harga stop-loss, keuntungan terbesar adalah parameter pengaturan yang intuitif, dapat secara intuitif melihat hubungan risiko dan keuntungan, melakukan pilihan parameter.

Selain itu, dibandingkan dengan stop loss poin, stop loss dolar dapat lebih baik mengontrol celah risiko yang sebenarnya. Ketika pasar berfluktuasi, stop loss dolar dapat lebih baik melindungi dana.

Analisis risiko

Strategi stop loss ini juga memiliki beberapa risiko:

  1. Stop loss yang terlalu lebar mudah untuk ditargetkan. Jika stop loss terlalu jauh, kemungkinan pembalikan garis pendek relatif besar, mudah untuk ditargetkan dan tidak dapat dihentikan.

  2. Jika stop-loss terlalu dekat, maka normal unilateral trading tidak dapat dicapai, sehingga sangat sulit untuk mendapatkan keuntungan.

  3. Perlu untuk memilih kontrak yang masuk akal. Jika Anda memilih kontrak dengan nilai poin yang terlalu besar, seperti minyak mentah, maka Anda akan kehilangan dolar yang sama, dan poin yang sesuai akan sangat kecil, dan mudah untuk dikeluarkan dalam fluktuasi pasar. Ini memerlukan nilai poin yang dipilih secara wajar.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Sinyal masuk dapat dioptimalkan, misalnya dengan kombinasi tren, fluktuasi, dan pilihan musiman untuk waktu masuk yang lebih baik.

  2. Persentase stop loss yang sesuai dapat dipilih berdasarkan varietas yang berbeda. Misalnya, komoditas dapat mengatur stop loss yang lebih longgar.

  3. Hal ini dapat digabungkan dengan fluktuasi, dengan pelepasan yang tepat untuk stop loss ketika fluktuasi meningkat; dan pengetatan yang tepat untuk stop loss ketika fluktuasi berkurang.

  4. Anda dapat memilih strategi stop loss yang berbeda sesuai dengan waktu yang berbeda dalam hari perdagangan. Misalnya, Anda dapat memperketat stop loss pada waktu perdagangan AS untuk mengurangi probabilitas terputus.

Meringkaskan

Strategi ini menggunakan parameter dalam jumlah dolar, untuk mencapai fungsi stop loss yang intuitif. Keuntungan dari strategi ini adalah pilihan parameter dan pengendalian dana yang intuitif, kelemahan adalah mudah ditiru dan sulit untuk mendapatkan keuntungan.

Kode Sumber Strategi
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 10m
basePeriod: 1m
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/
// © adolgov

// @description
// 

//@version=4
strategy("Stop loss and Take Profit in $$ example", overlay=true)

// random entry condition

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

moneyToSLPoints(money) =>
    strategy.position_size !=0 ? (money / syminfo.pointvalue / abs(strategy.position_size)) / syminfo.mintick : na

p = moneyToSLPoints(input(200, title = "Take Profit $$"))
l = moneyToSLPoints(input(100, title = "Stop Loss $$"))
strategy.exit("x", profit = p, loss = l)

// debug plots for visualize SL & TP levels
pointsToPrice(pp) =>
    na(pp) ? na : strategy.position_avg_price + pp * sign(strategy.position_size) * syminfo.mintick
    
pp = plot(pointsToPrice(p), style = plot.style_linebr )
lp = plot(pointsToPrice(-l), style = plot.style_linebr )
avg = plot( strategy.position_avg_price, style = plot.style_linebr )
fill(pp, avg, color = color.green)
fill(avg, lp, color = color.red)