Strategi ini menggunakan model rata-rata bergerak untuk menentukan arah tren pasar. Ketika tren bullish diidentifikasi, secara berkala akan membuka posisi panjang dengan jumlah tetap untuk melacak tren naik golden cross di pasar.
Strategi ini terutama didasarkan pada prinsip-prinsip teknis berikut:
Gunakan garis EMA untuk menentukan arah tren pasar. Ketika garis EMA cepat melintasi garis EMA lambat, itu dinilai sebagai tren bullish dan bersiap untuk memasuki posisi panjang.
Menggabungkan indikator MACD untuk menentukan waktu masuk. Ketika MACD berubah dari positif menjadi negatif, ini menunjukkan bahwa daya beli mulai melemah, jadi sudah waktunya untuk memasuki posisi panjang.
Batas untuk hanya masuk sekali per bulan untuk menghindari mengejar tinggi.
Memungkinkan pengaturan tanggal awal dan tanggal akhir untuk membatasi periode backtest.
Secara khusus, strategi pertama menghitung garis EMA cepat dan garis EMA lambat, dan mendeteksi silang emas di antara mereka untuk menentukan tren pasar. Pada saat yang sama, ia menghitung indikator MACD untuk menentukan titik masuk tertentu. Ketika kedua kriteria terpenuhi, sinyal panjang dihasilkan. Menurut aturan hanya masuk sekali per bulan, pesanan masuk yang sebenarnya ditentukan. Jumlah modal untuk setiap entri dapat ditetapkan sebelumnya. Ketika backtest berakhir, strategi akan secara aktif menutup semua posisi.
Ini adalah tren yang sederhana dan langsung mengikuti strategi dengan keuntungan berikut:
Menggunakan garis EMA untuk menentukan tren utama sederhana dan praktis. EMA memiliki efek merata pada perubahan harga dan dapat menyaring kebisingan pasar secara efektif.
Indikator MACD dapat mengidentifikasi titik balik ketika daya beli mulai melemah dengan relatif akurat, membuat entri lebih aman.
Membatasi diri untuk hanya mengejar tren naik sekali per bulan dapat menghindari mengejar tertinggi dan membunuh tren naik di pasar bull.
Memungkinkan penyesuaian jumlah entri setiap bulan memberikan fleksibilitas dalam ukuran posisi.
Backtest dapat digunakan untuk mengevaluasi kinerja strategi dengan menetapkan tanggal awal dan akhir.
Ini akan menutup semua posisi secara otomatis ketika backtest berakhir, menghindari posisi yang tersisa canggung.
Ada beberapa risiko potensial dari strategi ini:
Penentuan tren melalui rata-rata bergerak dapat melewatkan peluang selama penarikan sementara atau bereaksi lambat pada pembalikan tren.
Jika hanya masuk sebulan sekali, Anda mungkin kehilangan kesempatan masuk yang lebih baik.
Ada risiko penyesuaian kurva. Lebih banyak ruang penyesuaian parameter harus diizinkan dan ketahanan harus diuji di seluruh pasar dan periode waktu.
Ada risiko mengejar momentum dan overbuy. Jumlah entri bulanan harus dikendalikan untuk menghindari posisi yang terlalu besar.
Tren investasi berkala ini mengikuti strategi dapat diperluas dan ditingkatkan dari aspek berikut:
Tambahkan logika stop loss untuk secara aktif memotong kerugian ketika pola pembalikan bearish muncul.
Pertimbangkan untuk menambahkan pembelian lain ketika histogram MACD menunjukkan divergensi bullish untuk mendapatkan lebih banyak eksposur terhadap tren naik.
Memperkenalkan perbandingan dari bulan ini
Tambahkan logika ukuran posisi. Jumlah entri bulanan dapat dibuat adaptif berdasarkan persentase daripada nilai tetap.
Evaluasi dampak dari kombinasi MA yang berbeda dan parameter MACD. Cari set parameter optimal.
Tambahkan stop loss yang mengikuti harga pada jarak tertentu setelah mencapai level tertinggi baru, memungkinkan keuntungan untuk berjalan.
Strategi ini merupakan pendekatan yang sederhana dan bersih mengikuti tren dengan menggunakan investasi periodik dan moving average. Ini mudah dipahami dan diimplementasikan, berfungsi sebagai titik awal yang baik untuk belajar trading algoritmik. Tetapi dalam perdagangan langsung, ukuran posisi perlu dikendalikan dengan hati-hati. Strategi harus ditingkatkan lebih lanjut untuk beradaptasi dengan kondisi pasar yang kompleks.
/*backtest start: 2023-01-01 00:00:00 end: 2023-10-30 00:00:00 period: 1d basePeriod: 1h 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/ // © runescapeyttanic //@version=4 // strategy("Buy and Hold entry finder Strategy",pyramiding=10000, overlay=true,initial_capital=0,default_qty_type=strategy.cash,default_qty_value=1000,currency = currency.EUR,commission_type=strategy.commission.cash_per_order,commission_value=0) //INPUTS################################################################################################################## maxEmaDistance = input(title="Maximum EMA Distance", type=input.float, step=0.01, defval=50000) emalength = input(title="EMA Length", type=input.integer,defval=200) // Make input options that configure backtest date range startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31) startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12) startYear = input(title="Start Year", type=input.integer, defval=2020, minval=1800, maxval=2100) endDate = input(title="End Date", type=input.integer, defval=12, minval=1, maxval=31) endMonth = input(title="End Month", type=input.integer, defval=02, minval=1, maxval=12) endYear = input(title="End Year", type=input.integer, defval=2021, minval=1800, maxval=2100) endDate1=endDate-1 //starttag //startmonat //MACD######################################################################################################################## fast_length=12 slow_length=26 src=close col_macd=#0094ff fast_ma = ema(src, fast_length) slow_ma = ema(src, slow_length) macd = fast_ma - slow_ma //EMA Distance CALC######################################################################################################## ma1 =ema(close,emalength) distFromMean = close - ma1 inDateRange = true longCondition = (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0 and inDateRange) longnow=false if(longCondition and strategy.position_size == 0) strategy.entry("My Long Entry Id", strategy.long) longnow:=true if(longCondition and strategy.position_size > 0) longnow:=true if(longCondition and strategy.position_size > 0 and month>valuewhen(longnow, month ,1) or longCondition and strategy.position_size > 0 and year>valuewhen(longnow, year ,1) and inDateRange) strategy.entry("My Long Entry Id", strategy.long) plotchar(minute, "Minuten", "", location = location.top) plotchar(hour, "Stunden", "", location = location.top) plotchar(dayofmonth, "Tage", "", location = location.top) plotchar(month, "Monat", "", location = location.top) plotchar(year, "Jahr", "", location = location.top) plotchar(strategy.position_size, "Positionen", "", location = location.top) plotchar(longCondition, "Long Condition", "", location = location.top) if true strategy.close_all() //######################################################################################################################### plotArrow = if (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0) 1 else 0 plotarrow(series=plotArrow)