Strategi Prediksi Jalur Masa Depan MacD

Penulis:ChaoZhang, Tanggal: 2023-12-13 17:21:44
Tag:

img

Gambaran umum

Ide inti dari strategi ini adalah untuk memprediksi tren harga dengan menganalisis tren masa depan indikator MacD. Strategi ini memanfaatkan sepenuhnya sinyal perdagangan yang dihasilkan oleh persilangan rata-rata bergerak cepat dan lambat yang membentuk indikator MacD.

Prinsip Strategi

  1. Menghitung perbedaan (nilai historis) dari indikator MacD untuk menentukan kenaikan dan penurunan garis MacD dan garis sinyal.
  2. Menggunakan nilai masa depan dari indikator MacD dalam jangka waktu 4 jam dengan mengatur opsi panggilan untuk menilai tren masa depan dari indikator MacD dan memprediksi tren harga.
  3. Pergi panjang ketika selisih indikator MacD lebih besar dari 0 (mewakili pasar bull) dan diperkirakan akan terus naik; pergi pendek ketika selisih indikator MacD kurang dari 0 (mewakili pasar bear) dan diperkirakan akan terus turun.
  4. Strategi ini menggabungkan gaya perdagangan trend berikut dan trend reversal, menangkap tren sementara juga merebut titik-titik pembalikan tren.

Analisis Keuntungan

  1. Keuntungan dari penggunaan indikator MacD untuk menilai tren pasar dapat secara efektif menyaring konsolidasi dan menangkap tren jangka panjang.
  2. Dengan bantuan prediksi tren masa depan dari indikator MacD, titik balik harga dapat diidentifikasi lebih awal untuk meningkatkan kemampuan strategi yang berpandangan ke depan.
  3. Mengintegrasikan gaya perdagangan mengikuti tren dan pembalikan tren memungkinkan pembalikan posisi tepat waktu selama pelacakan tren untuk mendapatkan pengembalian yang lebih besar.
  4. Parameter strategi yang dapat disesuaikan memungkinkan pengguna untuk mengoptimalkan berdasarkan kerangka waktu dan lingkungan pasar yang berbeda untuk meningkatkan stabilitas strategi.

Analisis Risiko

  1. Bergantung pada prediksi tren masa depan indikator MacD dapat menyebabkan perdagangan gagal jika prediksi tidak akurat.
  2. Stop loss harus digunakan untuk mengendalikan loss tunggal. pengaturan stop loss range yang tidak tepat juga akan mempengaruhi kinerja strategi.
  3. Penundaan indikator MacD dapat kehilangan peluang untuk pembalikan harga yang cepat.
  4. Dampak dari biaya transaksi perlu dipantau.

Arahan Optimasi

  1. Menggabungkan indikator lain untuk prediksi untuk mengurangi ketergantungan pada indikator MacD tunggal dan meningkatkan akurasi prediksi, seperti memeriksa perubahan volume perdagangan.
  2. Tambahkan algoritma pembelajaran mesin, melatih model untuk memprediksi tren masa depan dari indikator MacD.
  3. Mengoptimalkan pengaturan parameter untuk menemukan kombinasi parameter terbaik.
  4. Lingkungan pasar yang berbeda sesuai dengan konfigurasi parameter yang berbeda, sistem adaptif dapat ditambahkan untuk mengoptimalkan parameter secara otomatis.

Kesimpulan

Sementara memberikan permainan penuh untuk keuntungan indikator MacD untuk menentukan tren, strategi ini juga menggabungkan prediksi tren indikator masa depan. Membangun pada menangkap tren, ia juga merebut titik balik kritis. Dibandingkan dengan hanya mengejar tren, strategi ini memiliki prospektifitas dan potensi keuntungan yang lebih besar. Tentu saja, ada juga risiko tertentu yang perlu dioptimalkan dan ditingkatkan lebih lanjut. Secara keseluruhan, strategi layak penelitian dan aplikasi yang mendalam.


/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-12 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © x11joe
strategy(title="MacD (Future Known or Unknown) Strategy", overlay=false, precision=2,commission_value=0.26, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//OPTIONAL:: Allow only entries in the long or short position
allowOnlyLong = input(title="Allow position ONLY in LONG",type=input.bool, defval=false)
allowOnlyShort = input(title="Allow position ONLY in SHORT",type=input.bool, defval=false)


strategy.risk.allow_entry_in(allowOnlyLong ? strategy.direction.long : allowOnlyShort ? strategy.direction.short : strategy.direction.all) // There will be no short entries, only exits from long.

// Create MacD inputs
fastLen = input(title="MacD Fast Length", type=input.integer, defval=12)
slowLen = input(title="MacD Slow Length", type=input.integer, defval=26)
sigLen  = input(title="MacD Signal Length", type=input.integer, defval=9)

// Get MACD values
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)
hist = macdLine - signalLine

useFuture = input(title="Use The Future?",type=input.bool,defval=true)

macDState(resolutionType) =>
    hist_from_resolution = security(syminfo.tickerid, resolutionType, hist,barmerge.gaps_off, barmerge.lookahead_on)
    Green_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution > 0
    Green_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution > 0
    Red_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution <= 0
    Red_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution <= 0
    result=0
    if(Green_IsUp)
        result := 1
    if(Green_IsDown)
        result := 2
    if(Red_IsDown)
        result := 3
    if(Red_IsUp)
        result := 4
    result

macDStateNonFuture(resolutionType) =>
    hist_from_resolution = security(syminfo.tickerid, resolutionType, hist,barmerge.gaps_off, barmerge.lookahead_off)
    Green_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution > 0
    Green_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution > 0
    Red_IsDown = hist_from_resolution < hist_from_resolution[1] and hist_from_resolution <= 0
    Red_IsUp = hist_from_resolution > hist_from_resolution[1] and hist_from_resolution <= 0
    result=0
    if(Green_IsUp)
        result := 1
    if(Green_IsDown)
        result := 2
    if(Red_IsDown)
        result := 3
    if(Red_IsUp)
        result := 4
    result

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"
// === INPUT BACKTEST RANGE END ===

//Get FUTURE or NON FUTURE data
macDState240=useFuture ? macDState("240") : macDStateNonFuture("240") //1 is green up, 2 if green down, 3 is red, 4 is red up

//Fill in the GAPS
if(macDState240==0)
    macDState240:=macDState240[1]

//Plot Positions
plot(close,color= macDState240==1 ? color.green : macDState240==2 ? color.purple : macDState240==3 ? color.red : color.yellow,linewidth=4,style=plot.style_histogram,transp=50)

if(useFuture)
    strategy.entry("buy_1",long=true,when=window() and (macDState240==4 or macDState240==1))
    strategy.close("buy_1",when=window() and macDState240==3 and macDState240[1]==4)
    strategy.entry("sell_1",long=false,when=window() and macDState240==2)
else
    strategy.entry("buy_1",long=true,when=window() and (macDState240==4 or macDState240==1))//If we are in a red macD trending downwards MacD or in a MacD getting out of Red going upward.
    strategy.close("buy_1",when=window() and macDState240==3 and macDState240[1]==4)//If the state is going upwards from red but we are predicting back to red...
    strategy.entry("sell_1",long=false,when=window() and macDState240==2)//If we are predicting the uptrend to end soon.


Lebih banyak