Skrip yang anda berikan adalah berdasarkan strategi Adaptive Zero Lag EMA (AZLEMA). Skrip ini menggunakan prinsip penyelidikan pemprosesan isyarat John Ehlers dan kaedah yang dikenali sebagai Cosine Instantaneous Frequency Measurement (IFM) untuk menentukan tempoh kitaran dominan, iaitu, tempoh masa antara dua titik yang sama dalam kitaran berturut-turut dalam data perdagangan anda.
Berikut adalah gambaran ringkas tentang apa skrip perdagangan lakukan:
Pada mulanya, ia menetapkan strategi menggunakan konfigurasi input lalai seperti tempoh, mod penyesuaian, had keuntungan, ambang, titik stop loss dan mengambil mata keuntungan. Mata wang ditetapkan kepada USD dan modal awal kepada 1000.
Ia kemudiannya menetapkan pengiraan untuk mod adaptif menggunakan gabungan persamaan pembezaan dan kaedah Ehlers
Ia mengira nilai purata (EMA) sumber data yang dipilih untuk tempoh yang dipilih.
Ia melakukan operasi gelung untuk mencari nilai Korrelasi Keuntungan dan Kesalahan (EC) yang meminimumkan Kesalahan mutlak.
Menggunakan nilai-nilai ini, ia mengira nilai EC akhir dan memetakan nilai EC dan EMA pada carta.
Ia mewujudkan keadaan pembelian dan penjualan yang berpotensi berdasarkan persilangan dan persilangan EC dan EMA di atas ambang tertentu.
Ia menetapkan peraturan untuk memasuki dan keluar dari kedudukan panjang dan pendek berdasarkan keadaan beli dan jual yang ditentukan sebelumnya. Untuk setiap kedudukan, ia mengira saiz lot dan memasuki kedudukan apabila keadaan masing-masing (beli / jual) adalah benar. Ia menetapkan stop loss dan mengambil keuntungan untuk setiap kedudukan.
Skrip ini kelihatan cukup komprehensif dan serba boleh kerana ia membolehkan anda mengubah pelbagai parameter untuk menyesuaikan diri dengan gaya perdagangan dan keadaan pasaran yang berbeza.
/*backtest start: 2023-08-08 00:00:00 end: 2023-09-07 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Adaptive Zero Lag EMA", shorttitle="AZLEMA", overlay = true, initial_capital=1000, currency="USD", commission_type=strategy.commission.cash_per_contract, commission_value=0.000005, slippage = 5, pyramiding=1, calc_on_every_tick=true) src = input(title="Source", defval=close) Period = input(title="Period", defval = 20) adaptive = input(title="Adaptive?", defval=true) GainLimit = input(title="Gain Limit", defval = 15) Threshold = input(title="Threshold", defval=0.03, step=0.01) fixedSL = input(title="SL Points", defval=50) fixedTP = input(title="TP Points", defval=10) risk = input(title='Risk', defval=0.01, step=0.01) PI = 3.14159265359 s2 = 0.0 s3 = 0.0 delta = 0.0 inst = 0.0 len = 0.0 v1 = 0.0 v2 = 0.0 v4 = 0.0 //IF adaptive is true, use the Cosine IFM strategy for determining the dominant //cycle period if(adaptive) v1 := src - src[7] s2 := 0.2*(v1[1] + v1)*(v1[1] + v1) + 0.8*nz(s2[1]) s3 := 0.2*(v1[1] - v1)*(v1[1] - v1) + 0.8*nz(s3[1]) if (s2 != 0) v2 := sqrt(s3/s2) if (s3 != 0) delta := 2*atan(v2) for i = 0 to 100 v4 := v4 + delta[i] if (v4 > 2*PI and inst == 0.0) inst := i - 1 if (inst == 0.0) inst := inst[1] len := 0.25*inst + 0.75*nz(len[1]) Period := round(len) LeastError = 1000000.0 EC = 0.0 Gain = 0.0 EMA = 0.0 Error = 0.0 BestGain = 0.0 alpha =2/(Period + 1) EMA := alpha*src + (1-alpha)*nz(EMA[1]) for i = -GainLimit to GainLimit Gain := i/10 EC := alpha*(EMA + Gain*(src - nz(EC[1]))) + (1 - alpha)*nz(EC[1]) Error := src - EC if(abs(Error)<LeastError) LeastError := abs(Error) BestGain := Gain EC := alpha*(EMA + BestGain*(src - nz(EC[1]))) + (1-alpha)*nz(EC[1]) plot(EC, title="EC", color=orange, linewidth=2) plot(EMA, title="EMA", color=red, linewidth=2) buy = crossover(EC,EMA) and 100*LeastError/src > Threshold sell = crossunder(EC,EMA) and 100*LeastError/src > Threshold if buy strategy.entry("Enter Long", strategy.long) else if sell strategy.entry("Enter Short", strategy.short)