Sumber daya yang dimuat... Pemuatan...

Strategi dorongan ganda berbasis SMA

Penulis:ChaoZhang, Tanggal: 2023-11-22 15:42:29
Tag:

img

Gambaran umum

Strategi ini membangun strategi dorongan ganda sederhana berdasarkan indikator SMA. Ini pergi panjang ketika harga melintasi di atas SMA tertinggi 20 periode dan pergi pendek ketika harga melintasi di bawah SMA terendah 20 periode. Stop loss exit juga ditetapkan.

Logika Strategi

Strategi ini menggunakan SMA 20 periode dari harga tertinggi tertinggi dan harga terendah terendah untuk menentukan arah perdagangan. Ketika harga melintasi SMA tertinggi, itu dianggap sebagai uptrend, jadi pergi panjang. Ketika harga melintasi di bawah SMA terendah, itu dianggap sebagai downtrend, jadi pergi pendek.

Secara khusus, strategi ini pertama-tama menghitung SMA 20-periode harga tertinggi tertinggi dan terendah terendah, dan memetakan garis indikator.

Entry panjang: Harga penutupan melintasi SMA tertinggi
Exit panjang: Harga penutupan melintasi di bawah 0,99 * SMA tertinggi

Entry pendek: Harga penutupan melintasi SMA terendah
Keluar pendek: Harga penutupan melintasi di atas 1,01 * SMA terendah

Jadi tren mengikuti strategi dorongan ganda dibangun.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan SMA untuk menentukan arah tren sederhana dan praktis
  2. SMA tertinggi dan SMA terendah bertindak sebagai garis support/resistance
  3. Desain stop loss yang masuk akal untuk memaksimalkan perlindungan dari kerugian besar
  4. Kemampuan beradaptasi yang baik, dapat digunakan pada produk dan kerangka waktu yang berbeda

Analisis Risiko

Ada juga beberapa risiko dengan strategi ini:

  1. SMA memiliki efek keterlambatan, mungkin melewatkan titik balik tren
  2. Tidak ada perlindungan dari peristiwa pasar yang tiba-tiba
  3. Dampak biaya perdagangan tidak dipertimbangkan

Risiko ini dapat dikendalikan dan dikurangi dengan cara-cara seperti menggabungkan indikator lain, mengatur stop loss, penyesuaian parameter dll.

Arah Peningkatan

Strategi ini juga dapat ditingkatkan dalam hal berikut:

  1. Gabungkan indikator lain seperti MACD, KDJ untuk menentukan tren
  2. Tambahkan perlindungan untuk kejadian mendadak seperti penangguhan, pembatasan harga dll
  3. Mengoptimalkan periode SMA, menemukan kombinasi parameter terbaik
  4. Temukan parameter terbaik untuk berbagai produk dan jangka waktu
  5. Perkirakan dampak biaya perdagangan, tetapkan stop loss optimal dan ambil keuntungan

Kesimpulan

Logika keseluruhan strategi ini jelas dan mudah dilaksanakan. Dengan menggunakan SMA untuk menentukan arah tren, dan menetapkan aturan masuk / keluar yang wajar, hasil yang baik dapat dicapai. Ada ruang untuk optimasi lebih lanjut, dan dengan dikombinasikan dengan teknik lain, itu bisa menjadi strategi yang menjanjikan yang layak dilacak jangka panjang.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 10m
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/
// © AlanAntony

//@version=4


strategy("ma 20 high-low",overlay=true)

//compute the indicators

smaH = sma(high, 20)
smaL = sma(low, 20)


//plot the indicators
plot(smaH,title="smaHigh", color=color.green, linewidth=2)


plot(smaL,title="smaLow", color=color.red, linewidth=2)


//trading logic
enterlong = crossover(close,smaH) //positive ema crossover
exitlong = crossunder(close,0.99*smaH)  //exiting long


entershort = crossunder(close,smaL) //negative EMA Crossover
exitshort = crossover(close,1.01*smaH) //exiting shorts


notintrade = strategy.position_size<=0
bgcolor(notintrade ? color.red:color.green)

//execution logic

start = timestamp(2015,6,1,0,0)
//end = timestamp(2022,6,1,0,0)

if time >= start
    strategy.entry( "long", strategy.long,1, when = enterlong)
    strategy.entry( "short", strategy.short,1, when = entershort) 
    
    strategy.close("long", when = exitlong)
    strategy.close("short", when = exitshort)

//if time >= end
   // strategy.close_all()

Lebih banyak