Strategi henti rugi dan ambil untung berdasarkan harga


Tarikh penciptaan: 2023-11-23 15:36:00 Akhirnya diubah suai: 2023-11-23 15:36:00
Salin: 0 Bilangan klik: 672
1
fokus pada
1617
Pengikut

Strategi henti rugi dan ambil untung berdasarkan harga

Gambaran keseluruhan

Idea teras strategi ini adalah untuk menggunakan jumlah stop loss input untuk menetapkan jumlah stop loss yang wajar dan untuk menguruskan risiko dan keuntungan setiap perdagangan.

Prinsip Strategi

Strategi ini mula-mula menetapkan isyarat masuk secara rawak, melakukan plus apabila SMA14 melalui SMA28 dan kosong apabila SMA14 melalui SMA28.

Selepas masuk, strategi menggunakan fungsi moneyToSLPoints untuk mengira jumlah stop loss yang sesuai berdasarkan jumlah yang dimasukkan, dan juga untuk mengira jumlah stop loss. Dengan demikian, penyetempatan stop loss berdasarkan jumlah dolar dapat dicapai.

Sebagai contoh, jika masuk melakukan 100 tangan tambahan, setiap mata bernilai \( 10 dan set stop loss \) 100, maka nilai stop loss akan ditetapkan sebagai 100/10/100 = 0.1 mata.

Akhirnya, gunakan strategi.exit untuk menetapkan titik keluar dari halangan hentian. Pada masa yang sama, gambarkan garisan hentian dan garis hentian sebagai rujukan pengendalian.

Analisis kelebihan

Strategi ini berdasarkan harga berhenti kerugian, kelebihan terbesar adalah parameter yang ditetapkan secara intuitif, dapat melihat hubungan risiko dan keuntungan secara intuitif, membuat pilihan parameter.

Selain itu, berbanding dengan titik-titik yang terhad, penutupan dolar lebih baik mengawal risiko sebenar. Apabila turun naik pasaran meningkat, penutupan dolar lebih baik melindungi dana.

Analisis risiko

Strategi ini mempunyai risiko:

  1. Titik henti yang terlalu lebar mudah disekat. Jika jarak henti terlalu jauh, kebarangkalian pembalikan garis pendek adalah lebih besar, mudah disekat dan tidak dapat dihentikan.

  2. Jika titik berhenti terlalu dekat, ia akan menjadi sukar untuk mendapat keuntungan. Jika titik berhenti terlalu dekat, ia akan menjadi sukar untuk mendapat keuntungan.

  3. Perlu memilih kontrak yang munasabah. Jika anda memilih kontrak dengan nilai mata yang terlalu besar, seperti minyak mentah, maka kerugian dolar yang sama, nilai mata yang sesuai akan sangat kecil dan mudah dikeluarkan dalam turun naik pasaran. Ini memerlukan nilai mata yang dipilih dengan munasabah.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Isyarat kemasukan boleh dioptimumkan, contohnya dengan menggabungkan pilihan seperti trend, turun naik, dan musim untuk masa kemasukan yang lebih baik.

  2. Anda boleh memilih peratusan penghentian kerugian yang sesuai mengikut jenis yang berbeza. Sebagai contoh, komoditi boleh menetapkan penghentian kerugian yang lebih longgar.

  3. Ia boleh digabungkan dengan kadar turun naik, dengan kelonggaran yang sesuai apabila turun naik meningkat; dengan pengetatan yang sesuai apabila turun naik menurun.

  4. Anda boleh memilih strategi hentian kerugian yang berbeza mengikut masa yang berbeza dalam hari perdagangan. Sebagai contoh, anda boleh mengetatkan hentian anda pada masa perdagangan AS untuk mengurangkan kebarangkalian anda diletakkan.

ringkaskan

Strategi ini menggunakan parameter dalam jumlah dolar untuk mewujudkan fungsi stop loss yang intuitif. Kelebihan strategi ini adalah pilihan parameter dan kawalan dana yang intuitif, kelemahan adalah mudah ditiru dan sukar untuk mendapat keuntungan. Kita boleh melakukan penambahbaikan dari segi masa masuk, pengoptimuman parameter stop loss, dan pilihan kontrak, untuk menjadikan strategi lebih stabil dan menguntungkan.

Kod 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)