Strategi terobosan rata-rata bergerak


Tanggal Pembuatan: 2023-09-26 16:18:37 Akhirnya memodifikasi: 2023-09-26 16:18:37
menyalin: 0 Jumlah klik: 884
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini menggunakan moving averages untuk membuat keputusan. Strategi ini dilakukan dengan mengatur panjang garis rata-rata dan melakukan operasi jual beli ketika garis rata-rata terpecah. Strategi ini mudah digunakan dan mudah dikuasai.

Prinsip Strategi

Strategi ini digunakan untuk menilai pergerakan harga dengan menetapkan dua rata-rata bergerak, garis cepat dan garis lambat. Garis cepat memiliki siklus pendek dan responsif; Garis lambat memiliki siklus panjang dan responsif.

Kode ini mendefinisikan periode garis cepat shortPeriod dan periode garis lambat longPeriod dengan mengatur parameter input. Kemudian menghitung nilai dari dua garis rata shortSMA dan longSMA.

Ketika garis rata-rata jangka pendek dari bawah ke atas menembus garis rata-rata jangka panjang, menunjukkan bahwa pergerakan harga dari turun ke bawah, melakukan over; Ketika garis rata-rata jangka pendek dari atas ke bawah menembus garis rata-rata jangka panjang, menunjukkan bahwa pergerakan harga dari turun ke bawah, melakukan over.

Termasuk dalam kondisi untuk melakukan posisi ganda:

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

Termasuk dalam kondisi posisi shorting:

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

Selain itu, strategi juga mengatur parameter seperti stop loss, stop loss, dan jumlah untuk mengendalikan risiko.

Keunggulan Strategis

  • Operasi sederhana, mudah dikuasai, cocok untuk pemula
  • Garis rata memiliki kemampuan penyaringan tren tertentu, yang dapat menyaring sebagian dari kebisingan
  • Fleksibel untuk menyesuaikan siklus rata-rata untuk operasi siklus yang berbeda
  • Stop Loss Stop Stop yang dapat diatur sebelumnya untuk mengendalikan risiko

Risiko Strategis

  • Kemungkinan terjadinya penembusan palsu yang menghasilkan sinyal yang salah
  • Tidak cocok untuk pasar yang bergejolak besar, sebaiknya digunakan saat tren jelas
  • Sistem rata-rata terlambat, waktu masuk tidak tepat
  • Kegagalan untuk memfilter perubahan tren yang kuat

Pengendalian risiko:

  • Menyaring kombinasi indikator lain untuk menghindari sinyal palsu
  • Pilih untuk menggunakan saat tren jelas, jangan gunakan saat pasar bergejolak
  • Menyesuaikan parameter garis rata-rata untuk mengoptimalkan waktu masuk
  • Keterbatasan toleransi yang tepat untuk menghindari kebocoran

Arah optimasi strategi

  • Mengoptimalkan parameter sistem linear untuk menemukan kombinasi siklus optimal
  • Menambahkan penilaian indikator lainnya, seperti saluran BOLL, KD, dll.
  • Optimalkan strategi manajemen posisi untuk memaksimalkan keuntungan
  • Parameter pengujian kekuatan dari berbagai jenis kontrak
  • Menambahkan algoritma pembelajaran mesin untuk mengoptimalkan data besar

Meringkaskan

Konsep strategi perobekan rata-rata sederhana, dengan cepat dan lambat menilai rata-rata melakukan lebih banyak waktu kosong, pengoperasiannya mudah. Namun, ada beberapa masalah, seperti perobekan palsu, keterlambatan, dan lain-lain.

Kode 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")