Strategi pecahan purata bergerak


Tarikh penciptaan: 2023-09-26 16:18:37 Akhirnya diubah suai: 2023-09-26 16:18:37
Salin: 0 Bilangan klik: 884
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi menembusi garis rata adalah strategi perdagangan garis pendek yang menggunakan purata bergerak untuk membuat keputusan. Strategi ini dilakukan dengan menetapkan panjang garis rata dan melakukan operasi jual beli ketika garis rata pecah. Ia dicirikan oleh operasi yang mudah dan mudah dikuasai.

Prinsip Strategi

Strategi ini digunakan untuk menilai pergerakan harga dengan menetapkan dua purata bergerak, garis cepat dan garis perlahan. Garis cepat adalah pendek dan sensitif terhadap tindak balas; garis perlahan adalah panjang dan stabil.

Kod ini mentakrifkan tempoh garis pantas (shortPeriod) dan tempoh garis perlahan (longPeriod) dengan menetapkan parameter input. Kemudian nilai dua garis rata (shortSMA dan longSMA) dikira.

Apabila garis purata jangka pendek dari bawah ke atas menembusi garis purata jangka panjang, menunjukkan pergerakan harga dari turun ke bawah, lakukan lebih banyak; apabila garis purata jangka pendek dari atas ke bawah menembusi garis purata jangka panjang, menunjukkan pergerakan harga dari turun ke bawah, lakukan kosong.

Syarat untuk masuk ke dalam posisi berbilang:

快线由下向上突破慢线
快线>慢线

Syarat untuk memasuki kedudukan kosong:

快线由上向下跌破慢线  
快线<慢线

Selain itu, strategi ini juga menetapkan parameter seperti stop loss, stop loss, dan jumlah untuk mengawal risiko.

Kelebihan Strategik

  • Operasi mudah, mudah dikuasai, sesuai untuk pemula
  • Garis rata mempunyai keupayaan penapisan trend tertentu, yang dapat menapis sebahagian bunyi bising
  • Fleksibel menyesuaikan kitaran linear untuk operasi kitaran yang berbeza
  • Pengaturan terdahulu untuk menghentikan kerugian dan mengawal risiko

Risiko Strategik

  • Kemungkinan penembusan palsu yang menyebabkan isyarat yang salah
  • Tidak sesuai untuk pasaran yang bergolak, dan harus digunakan apabila trendnya jelas
  • Sistem laluan rata-rata terlewat, waktu masuk tidak tepat
  • Kegagalan untuk menyaring semula trend yang kuat

Kaedah pencegahan risiko:

  • Penapisan dalam kombinasi dengan penunjuk lain untuk mengelakkan isyarat palsu
  • Pilih untuk digunakan apabila trend jelas, jangan digunakan dalam pasaran yang bergolak
  • Menyesuaikan parameter garis purata dengan betul untuk mengoptimumkan masa masuk
  • Melepaskan Julat Hentian Kerosakan yang Sesuai untuk Mengelakkan Penjeratan

Arah pengoptimuman strategi

  • Mengoptimumkan parameter sistem linear rata untuk mencari kombinasi kitaran terbaik
  • Menambah penilaian lain seperti BOLL channel, KD dan sebagainya
  • Optimumkan strategi pengurusan kedudukan untuk memaksimumkan keuntungan
  • Parameter pengujian kekuatan kontrak pelbagai jenis
  • Menambah algoritma pembelajaran mesin untuk mengoptimumkan data besar

ringkaskan

Konsep strategi perobosan rata-rata adalah mudah, dengan cepat dan perlahan menilai rata-rata melakukan lebih banyak masa kosong, pengendalian mudah. Tetapi ada beberapa masalah, seperti perobosan palsu, ketinggalan, dan lain-lain.

Kod sumber strategi
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
basePeriod: 15m
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/
// © YohanNaftali

//@version=5

///////////////////////////////////////////////////////////////////////////////
// Heikin Ashi Candle Startegy
// ver 2021.12.29
// © YohanNaftali
// This script composed by Yohan Naftali for educational purpose only 
// Reader who will use this signal must do own research
///////////////////////////////////////////////////////////////////////////////
strategy(
     title = 'Heikin Ashi Candle Startegy Long',  
     shorttitle = 'HA Strategy Long',  
     format = format.price,
     precision = 0,
     overlay = true)

// Input
validationPeriod = input.int( 
     defval = 3, 
     title = 'Validation Period', 
     group = 'Candle')

qtyOrder = input.float(
     defval = 1.0,
     title = 'Qty', 
     group = 'Order')

maxActive = input.float(
     defval = 1.0,
     title = 'Maximum Active Open Position', 
     group = 'Order')

// Long Strategy
tpLong = input.float(
     defval = 1,
     title = "Take Profit (%)",
     minval = 0.0, 
     step = 0.1, 
     group = "Long") * 0.01

slLong = input.float(
     defval = 25,
     title = "Stop Loss (%)", 
     minval=0.0, 
     step=0.1,
     group="Long") * 0.01

trailingStopLong = input.float(
     defval = 0.2,
     title = "Trailing Stop (%)",
     minval = 0.0, 
     step = 0.1,
     group = 'Long') * 0.01

// Calculation
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)
haOpen = request.security(haTicker, timeframe.period, open)

// Long
limitLong = tpLong > 0.0 ? strategy.position_avg_price * (1 + tpLong) : na
stopLong = slLong > 0.0 ? strategy.position_avg_price * (1 - slLong) : na
float trailLong = 0.0
trailLong := if strategy.position_size > 0
    trailClose = close * (1 - trailLong)
    math.max(trailClose, trailLong[1])
else
    0

isGreen = true
for i = 0 to validationPeriod-1
    isGreen := isGreen and haClose[i] > haOpen[i]        
isLong = isGreen and haClose[validationPeriod] < haOpen[validationPeriod]



plot(
     limitLong,
     title = 'Limit', 
     color = color.rgb(0, 0, 255, 0), 
     style = plot.style_stepline,
     linewidth = 1)

plot(
     trailLong,
     title = 'Trailing', 
     color = color.rgb(255, 255, 0, 0), 
     style = plot.style_stepline,
     linewidth = 1)

plot(
     stopLong,
     title = 'Stop', 
     style = plot.style_stepline,
     color = color.rgb(255, 0, 0, 0), 
     linewidth = 1)

// plotshape(
//      isLong, 
//      title = 'Entry', 
//      style = shape.arrowup, 
//      location = location.belowbar, 
//      offset = 1, 
//      color = color.new(color.green, 0), 
//      text = 'Long Entry',
//      size = size.small)

// Strategy
strategy.risk.max_position_size(maxActive)
strategy.risk.allow_entry_in(strategy.direction.long)

strategy.entry(
     id = "Long", 
     direction = strategy.long, 
     qty = qtyOrder,  
     when = isLong,       
     alert_message = "LN")
if (strategy.position_size > 0)
    strategy.exit(
         id = "Long Exit",
         from_entry = "Long",
         limit = limitLong,
         stop = stopLong,
         trail_price = trailLong,
         alert_message = "LX")