Strategi penjejakan arah aliran berbilang perbezaan purata bergerak


Tarikh penciptaan: 2024-01-04 17:43:17 Akhirnya diubah suai: 2024-01-04 17:43:17
Salin: 0 Bilangan klik: 630
1
fokus pada
1619
Pengikut

Strategi penjejakan arah aliran berbilang perbezaan purata bergerak

Gambaran keseluruhan

Strategi ini adalah berdasarkan perbezaan kadar jangka masa berganda pada garis rata-rata, mengesan trend garis tengah dan panjang, menggunakan model pengecaman kedudukan kedudukan perbezaan peringkat, untuk mencapai pertumbuhan indeks dana. Kelebihan terbesar strategi ini adalah dapat menangkap trend garis tengah dan panjang, melakukan pengecaman secara berperingkat, untuk mendapatkan keuntungan tambahan.

Prinsip Strategi

  1. Membina pelbagai rangka masa berdasarkan garis purata 9 hari, 100 hari dan 200 hari.
  2. Isyarat beli dihasilkan apabila garis purata jangka pendek dari bawah ke atas menembusi garis purata jangka panjang.
  3. Menggunakan 7 tahap ketidaksamaan kedudukan mengejar mod, setiap kali membuka kedudukan baru menilai apakah kedudukan sebelumnya telah penuh, jika sudah ada 6 kedudukan, tidak ada kedudukan tambahan.
  4. Setiap kedudukan menetapkan titik berhenti tetap 3% untuk kawalan risiko.

Ini adalah logik dasar dalam strategi ini.

Kelebihan Strategik

  1. Ia adalah satu cara yang berkesan untuk menangkap trend garis tengah dan panjang dan menikmati pertumbuhan indeks pasaran.
  2. Menggunakan garis purata jangka masa berbilang untuk melakukan perbezaan peringkat, dapat dengan berkesan mengelakkan gangguan bunyi pasaran garis pendek.
  3. Tetapkan titik hentian pegangan tetap untuk mengawal risiko setiap kedudukan.
  4. Menggunakan model pengesanan ketara, membina gudang secara berturut-turut, dapat memanfaatkan peluang trend, dan memperoleh keuntungan tambahan.

Risiko strategi dan penyelesaian

  1. Terdapat risiko untuk ditamatkan. Jika keadaan berubah, tidak dapat menghentikan kerugian dan keluar dalam masa yang tepat, kemungkinan besar akan menghadapi kerugian besar. Penyelesaian adalah untuk mengurangkan kitaran garis purata dan mempercepatkan berhenti rugi.
  2. Terdapat risiko kedudukan. Jika kejadian yang tidak dijangka menyebabkan kerugian melebihi batas yang dapat ditanggung, terdapat risiko untuk membayar premium tambahan atau pecah kedudukan. Penyelesaian adalah dengan mengurangkan peratusan kedudukan awal.
  3. Terdapat risiko kerugian yang terlalu besar. Jika pasaran jatuh dengan teruk, jurang kedudukan akan bertukar menjadi kosong, mungkin kerugian sehingga 700% atau lebih. Penyelesaian adalah meningkatkan nisbah berhenti tetap dan mempercepatkan berhenti.

Arah pengoptimuman strategi

  1. Anda boleh menguji kombinasi garis rata untuk parameter yang berbeza untuk mencari parameter yang lebih baik.
  2. Bilangan kedudukan yang boleh dioptimumkan untuk membina gudang. Uji pelbagai kedudukan yang berbeza untuk mencari penyelesaian terbaik.
  3. Tetapan penangguhan kerugian tetap boleh diuji. Tambah lebar penangguhan dengan sewajarnya, mengejar kadar pulangan yang lebih tinggi.

ringkaskan

Secara keseluruhan, strategi ini sangat sesuai untuk menangkap trend garis panjang dalam pasaran, menggunakan cara mengesan secara beransur-ansur, dan dapat memperoleh keuntungan tambahan yang sangat tinggi berbanding risiko dan keuntungan. Di samping itu, terdapat risiko operasi tertentu yang perlu dikawal dengan cara menyesuaikan parameter dan sebagainya, untuk mencari keseimbangan antara keuntungan dan risiko. Secara keseluruhan, strategi ini sangat layak untuk diuji, dan disesuaikan untuk pengoptimuman lanjut berdasarkan hasil tinjauan.

Kod sumber strategi
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
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/
    // © Coinrule
    
//@version=3
strategy(shorttitle='Pyramiding Entry On Early Trends',title='Pyramiding Entry On Early Trends (by Coinrule)', overlay=false, pyramiding= 7, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.1)
    
    
//Backtest dates
fromMonth = input(defval = 1,  title = "From Month")     
fromDay   = input(defval = 10,    title = "From Day")       
fromYear  = input(defval = 2020, title = "From Year")       
thruMonth = input(defval = 1,    title = "Thru Month")     
thruDay   = input(defval = 1,    title = "Thru Day")     
thruYear  = input(defval = 2112, title = "Thru Year")       
    
showDate  = input(defval = true, title = "Show Date Range")
    
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"
    
    
//MA inputs and calculations
inSignal=input(9, title='MAfast')
inlong1=input(100, title='MAslow')
inlong2=input(200, title='MAlong')
    
MAfast= sma(close, inSignal)
MAslow= sma(close, inlong1)
MAlong= sma(close, inlong2)
    
    
Bullish = crossover(close, MAfast) 
    
longsignal = (Bullish and MAfast > MAslow and MAslow < MAlong and window())
    
//set take profit
    
ProfitTarget_Percent = input(3)
Profit_Ticks = (close * (ProfitTarget_Percent / 100)) / syminfo.mintick
    
//set take profit
    
LossTarget_Percent = input(3)
Loss_Ticks = (close * (LossTarget_Percent / 100)) / syminfo.mintick
    
    
//Order Placing
    
strategy.entry("Entry 1", strategy.long, when = (strategy.opentrades == 0) and longsignal)
    
strategy.entry("Entry 2", strategy.long, when = (strategy.opentrades == 1) and longsignal)
        
strategy.entry("Entry 3", strategy.long, when = (strategy.opentrades == 2) and longsignal)
    
strategy.entry("Entry 4", strategy.long, when = (strategy.opentrades == 3) and longsignal)
    
strategy.entry("Entry 5", strategy.long, when = (strategy.opentrades == 4) and longsignal)
        
strategy.entry("Entry 6", strategy.long, when = (strategy.opentrades == 5) and longsignal)
        
strategy.entry("Entry 7", strategy.long, when = (strategy.opentrades == 6) and longsignal)
    
    
    
if (strategy.position_size > 0)
    strategy.exit(id="Exit 1", from_entry = "Entry 1", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry = "Entry 2", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry = "Entry 3", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry = "Entry 4", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry = "Entry 5", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry = "Entry 6", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry = "Entry 7", profit = Profit_Ticks, loss = Loss_Ticks)