Strategi crossover purata bergerak Galileo Galilei adalah strategi dagangan berdasarkan purata bergerak. Ia menghasilkan isyarat dagangan dengan mengira purata bergerak eksponensial (EMA) dalam tempoh tertentu dan membandingkan silang antara EMA dan harga. Isyarat jual dihasilkan apabila harga jatuh di bawah EMA dari atas ke bawah, sementara isyarat beli berlaku apabila harga memecahkan di atas EMA dari bawah ke atas.
Inti strategi Galileo Galilei terletak pada purata bergerak eksponen (EMA). EMA adalah jenis purata bergerak yang memberi lebih banyak berat kepada harga terkini. Rumus penghitungannya adalah:
EMA hari ini = (harga penutupan hari ini × Faktor Pembersihan) + (EMA semalam × (1 − Faktor Pembersihan))
Di mana faktor pelinciran α = (2/(bilangan tempoh + 1))
Strategi ini secara dinamik mengira EMA berdasarkan parameter tempoh input pengguna. Ia kemudian membandingkan persilangan antara harga dan EMA untuk menentukan isyarat perdagangan:
Apabila harga jatuh di bawah EMA dari atas ke bawah, isyarat jual dihasilkan untuk perdagangan pendek.
Apabila harga melangkau EMA dari bawah, isyarat beli dicetuskan untuk perdagangan panjang.
Strategi ini juga memetakan garis EMA pada carta, bersama dengan penanda anak panah yang menunjukkan isyarat beli dan jual.
Strategi crossover purata bergerak Galileo Galilei mempunyai kelebihan berikut:
Risiko berpotensi strategi ini termasuk:
Beberapa cara untuk mengoptimumkan strategi:
Menggabungkan penunjuk lain untuk membina strategi komposit untuk meningkatkan ketahanan terhadap isyarat palsu.
Tambahkan mekanisme stop loss seperti trailing stop loss atau stop loss berasaskan peratusan untuk mengawal jumlah kerugian perdagangan tunggal.
Uji EMA dengan kombinasi parameter yang berbeza untuk mencari tetapan optimum.
Menilai logik masuk semula untuk menangkap rebound selepas pembalikan harga awal, meningkatkan keuntungan.
Pertukaran purata bergerak Galileo Galilei adalah strategi yang mudah namun praktikal dengan logik yang jelas dan mudah dikendalikan. Ia sesuai untuk peniaga kuant pemula. Dengan peningkatan berterusan, prestasi dapat menjadi semakin unggul dari masa ke masa.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 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/ // © armigoldman //@version=3 strategy(title="Galileo Galilei", shorttitle="Galileo Galilei", overlay=true, initial_capital = 100000, default_qty_type=strategy.cash, default_qty_value = 100000) len = input(11, minval=1, title="Length") src = input(open, title="Source") out = ema(src, len) plot(out, title="EMA", color=yellow) //last8h = highest(close, 8) //lastl8 = lowest(close, 8) //plot(last8h, color=red, linewidth=2) //plot(lastl8, color=green, linewidth=2) //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval=1, title="From Day", minval=1, maxval=31) fromMonth = input(defval=1, title="From Month", minval=1, maxval=12) fromYear = input(defval=2020, title="From Year", minval=1970) // To Date Inputs toDay = input(defval=1, title="To Day", minval=1, maxval=31) toMonth = input(defval=12, title="To Month", minval=1, maxval=12) toYear = input(defval=2021, title="To Year", minval=1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true bearish = cross(close, out) == 1 and close[1] > close bullish = cross(close, out) == 1 and close[1] < close plotshape(bearish, color=white, style=shape.arrowdown, text="BEAR", location=location.abovebar) plotshape(bullish, color=white, style=shape.arrowup, text="BULL", location=location.belowbar) buy = if cross(close, out) == 1 and close[1] < close strategy.entry("BUY", strategy.long, when=time_cond) //strategy.close_all(when=bearish) // strategy.exit("exit", "Long", profit =, loss = 35) sell = if cross(close, out) == 1 and close[1] > close strategy.entry("SELL", strategy.short, when=time_cond) //sell = if bearish //strategy.close_all(when=bullish) // strategy.exit("exit", "Long", profit = bullish, loss = 100) profit = strategy.netprofit if not time_cond strategy.close_all() //plotshape(true, style=shape.triangleup, location=location.abovebar)