Strategi hentikan kerugian berdasarkan penunjuk MACD


Tarikh penciptaan: 2023-10-26 15:51:34 Akhirnya diubah suai: 2023-10-26 15:51:34
Salin: 0 Bilangan klik: 709
1
fokus pada
1617
Pengikut

Strategi hentikan kerugian berdasarkan penunjuk MACD

Gambaran keseluruhan

Strategi ini adalah berdasarkan kepada penunjuk MACD untuk merancang strategi perdagangan garis panjang yang dapat mengawal risiko setiap perdagangan. Berbanding dengan strategi pembalikan banyak perdagangan tradisional, strategi ini lebih memfokuskan pada kawalan risiko setiap perdagangan. Strategi ini menetapkan saiz kedudukan yang wajar, mengehadkan kerugian maksimum yang mungkin disebabkan oleh setiap perdagangan dengan mengira harga berhenti dan harga berhenti sasaran.

Prinsip

Strategi ini mulakan dengan mengira garis macd dan garis isyarat MACD. Apabila garis macd menembusi garis isyarat dari bawah ke atas, ia dianggap sebagai isyarat membeli. Untuk penyaringan pelanggaran palsu, strategi memerlukan barssince ((crossover ((macd_line, signal_line)) <= 5, iaitu, penembusan berlaku dalam 5 garis K yang paling baru.

Untuk setiap perdagangan, strategi mengira harga hentian kerugian dan harga berhenti yang munasabah. Harga hentian kerugian ditetapkan sebagai harga terendah 3 garis K yang paling baru. Harga berhenti ditetapkan sebagai harga beli ditambah harga hentian kerugian sebanyak 4 kali jarak harga beli.

Yang penting, strategi itu mengira kedudukan tertentu untuk setiap urus niaga berdasarkan risiko yang boleh diterima. Dengan parameter capital_risk, anda menetapkan kerugian maksimum yang boleh diterima untuk setiap urus niaga sebagai peratusan dari jumlah modal. Kemudian anda mengira saiz kedudukan dalam dolar berdasarkan margin stop loss.

Setiap perdagangan risiko dikawal dalam 1% daripada jumlah modal, boleh mengawal dengan berkesan penarikan balik. Pada masa yang sama, kedudukan berhenti yang lebih besar, boleh memperoleh keuntungan yang lebih tinggi.

Kelebihan

  • Kawalan Risiko Pertama, Setiap Transaksi Berhadapan Risiko
  • Mengoptimumkan saiz kedudukan dan memanfaatkan wang sebanyak mungkin
  • Strategi Hentikan Kerosakan Mengendalikan Pengunduran
  • Kemudahan yang munasabah, potensi keuntungan yang lebih besar

Risiko dan penambahbaikan

  • Indeks MACD terlewat dan mungkin terlepas trend yang berubah dengan cepat
  • Penetapan yang tidak betul pada kedudukan stop loss atau stop loss boleh mengurangkan keuntungan atau meningkatkan risiko
  • Frekuensi transaksi mungkin terlalu tinggi, kos transaksi meningkat

Anda boleh pertimbangkan:

  • Mengintegrasikan trend penilaian dengan penunjuk lain untuk mengelakkan ketinggalan MACD
  • Pengoptimuman algoritma Stop Loss untuk menjadikannya lebih fleksibel
  • Mengurangkan frekuensi transaksi dan mengurangkan kos transaksi

ringkaskan

Strategi ini berdasarkan petunjuk MACD untuk menentukan arah trend, mengawal risiko sebagai keutamaan, mengira kedudukan yang munasabah untuk berdagang. Kunci utama adalah kawalan risiko dan pengoptimuman kedudukan, yang dapat memperoleh keuntungan yang stabil dalam jangka panjang.

Kod sumber strategi
/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD )

capital_risk    = input( 1.0, "% capital risk per trade" ) / 100
r_exit          = input( 4.0, "Take Profit in 'R'" )
wma_length      = input( 150, 'WMA Bias Length' )

[macd_line, signal_line, hist ] = macd(close, 12, 26, 9)

w_line = wma( close, wma_length )

golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0

float stop = na
float tp = na

// For a stop, use a recent low 
stop := golong ? lowest(low, 3)[1] : stop[1]
range = abs(close - stop)
tp := golong ? close + (r_exit * range) : tp[1]


// This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity`
how_much_willing_to_lose = strategy.equity * capital_risk
// Spread the risk across the stop range 
position_size_in_usd = how_much_willing_to_lose / (range / close)
// Sized specified in base contract
position_size_in_contracts = position_size_in_usd / close

// Enter the position
if golong
    strategy.entry("long", strategy.long, qty=position_size_in_contracts)
    strategy.exit("long exit","long", stop=stop, limit=tp)

// experimental exit strategy
// hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' )
// if hist < 0 and hist_strength == 'strong' and falling( hist, 8 )
//     strategy.close("long")


plot( strategy.equity,  color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )