Strategi Mengikuti Trend Persilangan Purata Pergerakan Dinamik

SMA MA TP SL
Tarikh penciptaan: 2024-12-27 15:08:40 Akhirnya diubah suai: 2024-12-27 15:08:40
Salin: 4 Bilangan klik: 398
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend Persilangan Purata Pergerakan Dinamik

Gambaran keseluruhan

Strategi ini ialah sistem penjejakan arah aliran berdasarkan isyarat persilangan purata bergerak berganda, digabungkan dengan mekanisme henti untung dan henti rugi yang dinamik. Strategi ini menggunakan purata bergerak mudah (SMA) 5 tempoh dan 12 tempoh untuk menjana isyarat dagangan dan mengoptimumkan nisbah pulangan risiko dengan melaraskan tahap ambil untung dan henti kerugian secara dinamik. Pengambilan untung awal ditetapkan pada 10% dan henti rugi ditetapkan pada 5%. untuk melindungi keuntungan.

Prinsip Strategi

Logik teras strategi adalah berdasarkan perhubungan silang antara purata bergerak pantas (5 tempoh) dan purata bergerak perlahan (12 tempoh). Apabila garisan pantas melintasi garisan perlahan dari bawah ke atas, sistem menjana isyarat panjang dan membuka kedudukan apabila garisan pantas melintasi garisan perlahan dari atas ke bawah, sistem menutup kedudukan. Keunikan strategi terletak pada mekanisme pengurusan risiko dinamiknya: sebaik sahaja kedudukan ditetapkan, sistem akan memantau arah aliran harga dalam masa nyata dan secara dinamik melaraskan tahap ambil untung dan henti rugi mengikut perubahan harga untuk memaksimumkan keuntungan sambil mengawal risiko .

Kelebihan Strategik

  1. Sistem ini menggunakan strategi pindah silang purata bergerak berganda klasik, dengan isyarat yang jelas, mudah difahami dan dilaksanakan.
  2. Mekanisme henti untung dan henti rugi yang dinamik boleh melindungi keuntungan yang direalisasikan dengan berkesan dan mengelakkan pengeluaran
  3. Parameter strategi boleh dilaraskan secara fleksibel mengikut ciri pasaran yang berbeza, dengan kebolehsuaian yang kukuh
  4. Mekanisme pengurusan risiko adalah sempurna dan boleh mengawal risiko satu transaksi dengan berkesan
  5. Struktur kod adalah jelas, mudah diselenggara dan dioptimumkan

Risiko Strategik

  1. Pasaran yang tidak menentu mungkin menghasilkan isyarat palsu, yang membawa kepada perdagangan yang kerap
  2. Anjakan besar mungkin berlaku dalam pembalikan pantas
  3. Tetapan parameter yang tidak betul boleh menjejaskan prestasi strategi
  4. Kecairan pasaran yang tidak mencukupi boleh menjejaskan pelaksanaan stop loss Langkah-langkah berikut disyorkan untuk menguruskan risiko:
  • Tambah penapis trend
  • Pemilihan parameter pengoptimuman
  • Pemantauan masa nyata kecairan pasaran
  • Wujudkan sistem pengurusan dana yang mantap

Arah pengoptimuman strategi

  1. Memperkenalkan penunjuk kekuatan aliran untuk menapis isyarat pasaran kejutan
  2. Pertimbangkan untuk menambah faktor volum untuk meningkatkan kebolehpercayaan isyarat
  3. Optimumkan parameter henti untung dan henti rugi untuk meningkatkan nisbah pulangan risiko
  4. Menambah mekanisme penyesuaian turun naik pasaran
  5. Menambah baik sistem pengurusan gudang

ringkaskan

Strategi ini mencapai pemahaman aliran yang berkesan dan kawalan dinamik risiko dengan menggabungkan isyarat silang purata bergerak klasik dengan mekanisme pengurusan risiko dinamik yang inovatif. Konsep reka bentuk strategi adalah jelas, kaedah pelaksanaannya ringkas dan berkesan, serta mempunyai kepraktisan dan skalabiliti yang baik. Melalui pengoptimuman dan penambahbaikan berterusan, strategi ini dijangka mencapai prestasi keuntungan yang stabil dalam urus niaga sebenar.

Kod sumber strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("My Moving Average Crossover Strategy with Take Profit and Stop Loss", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
//risk_free_rate = float(request.security("IRUS", "D", close)/request.security("IRUS", "D", close[1]) - 1  ))




// MA periods
fastLength = input.int(5, title="Fast MA Length")
slowLength = input.int(12, title="Slow MA Length")




// Take Profit and Stop Loss
takeProfitLevel = input(10, title="Take Profit (пункты)") // Take profit % from the last price
stopLossLevel = input(5, title="Stop Loss (пункты)") // Stop loss  % from the last price
takeProfitLevel_dyn = input(20, title="Dynamic Take Profit (пункты)") // Move TP if current_price higher buy_px
stopLossLevel_dyn =  input(2.5, title="Dynamic Stop Loss (пункты)") // S Move SL if current_price higher buy_px


// Вычисление скользящих средних
fastMA = ta.sma(close, fastLength)
slowMA= ta.sma(close, slowLength)


// Conditions for Sell and Buy
longCondition = ta.crossover (fastMA, slowMA) // покупаем, если короткая MA персекает длинную снизу-вверх
shortCondition = ta.crossunder(fastMA, slowMA) // продаем, если короткая MA персекает длинную сверху-вниз




// Buy position condition
if (longCondition)
    strategy.entry("Buy", strategy.long)






// Dynamic TP SL leveles
takeProfitPrice = strategy.position_avg_price * (1+ takeProfitLevel / 100)
stopLossPrice = strategy.position_avg_price * (1-stopLossLevel / 100)


entryPrice = strategy.position_avg_price




if (strategy.position_size > 0) // если есть открытая позиция




    // takeProfitPrice := entryPrice * (1+ takeProfitLevel / 100)
    // stopLossPrice := entryPrice * (1-stopLossLevel / 100)


    // // Перемещение Stop Loss и Take Profit
    if (close > entryPrice)
   
        takeProfitPrice := close * (1+ takeProfitLevel_dyn / 100)
        stopLossPrice := close * (1- stopLossLevel_dyn/ 100)






if (shortCondition)
    strategy.close("Buy")




strategy.exit("Take Profit/Stop loss", "Buy", limit=takeProfitPrice, stop=stopLossPrice)


// Drawing MA lines
plot(fastMA, color=color.blue, title="Fast Moving Average")
plot(slowMA, color=color.orange, title="Slow Moving Average")




// Визуализация
plot(longCondition ? na : takeProfitPrice, title="Take Profit Level", color=color.green, linewidth=1, style=plot.style_line)
plot(longCondition ? na: stopLossPrice, title="Stop Loss Level", color=color.red, linewidth=1, style=plot.style_line)