Strategi Rata-rata Gerak Adaptif Mala

Penulis:ChaoZhang, Tanggal: 2023-12-07 11:08:18
Tag:

img

Gambaran umum

Strategi Mala Adaptive Moving Average adalah strategi perdagangan kuantitatif yang didasarkan pada indikator MESA Adaptive Moving Average yang dikembangkan oleh John Ehlers. Strategi ini menggunakan gelombang sinus untuk membuat keputusan perdagangan, membeli di titik terendah, menjual di titik tertinggi. Dengan penyesuaian sliding parameter, gelombang sinus dapat menyesuaikan diri dengan produk dan lingkungan pasar yang berbeda.

Logika Strategi

Strategi Mala Adaptive Moving Average menggunakan generator gelombang sinus untuk menghasilkan sinyal perdagangan. Gelombang sinus ditentukan oleh bayangan yang dibuang pada sumbu vertikal oleh vektor berputar (disebut fasor). Ketika vektor berputar 360 derajat, satu siklus diselesaikan. Sinyal pembelian dihasilkan ketika vektor melewati satu sudut, dan sinyal penjualan saat melewati sudut lain. Dengan demikian, keputusan perdagangan didefinisikan dalam hal sudut di domain frekuensi daripada karakteristik bentuk gelombang di domain waktu, membuat strategi lebih kuat di berbagai kontrak berjangka dan kondisi pasar.

Secara khusus, strategi pertama meluruskan dan mengurangi harga, kemudian menghitung dua komponen gelombang sinus: komponen in-phase I dan komponen kuadrature Q. Kedua komponen ini ditumpuk dan disaring dengan pergeseran fase untuk mendapatkan Re dan Im akhir. Re dan Im mencerminkan informasi frekuensi gelombang sinus. Periode periode dapat berasal dari atanIm/Re. Periode periode yang halus ditentukan berdasarkan rentang periode yang diharapkan. Informasi periode dan fase menentukan kurva MAMA dan FAMA, yang silangannya menghasilkan sinyal perdagangan.

Analisis Keuntungan

Strategi Mala Adaptive Moving Average memiliki keuntungan berikut:

  1. Menggunakan gelombang sinus dan fase sebagai sinyal perdagangan membuat strategi lebih kuat, tidak terpengaruh oleh karakteristik bentuk gelombang di domain waktu.

  2. Kemampuan beradaptasi periode dan parameter memungkinkan kemampuan beradaptasi yang kuat terhadap perubahan pasar.

  3. Kurva MAMA dan FAMA hanya bergantung pada karakteristik harga tanpa lag, menangkap pembalikan tren secara tepat waktu.

  4. Sensitivitas strategi dapat disesuaikan melalui penyesuaian parameter agar sesuai dengan gaya perdagangan yang berbeda.

  5. Logika yang jelas dan sederhana memfasilitasi pemahaman, modifikasi dan penerapan untuk penelitian dan pengajaran.

Analisis Risiko

Strategi Mala Adaptive Moving Average juga membawa risiko berikut:

  1. Tergantung pada periode dan fase kurva sinus, distorsi harga yang tidak normal dapat menghasilkan sinyal yang salah.

  2. Batas-batas keras yang ditetapkan dalam perkiraan periode menyebabkan kelancaran yang tidak cukup dalam perubahan periode.

  3. Penguncian fase dan penguncian periode di sekitar titik kunci menyebabkan osilasi kurva, berpotensi kehilangan entri dan keluar yang optimal.

  4. Kemampuan penyesuaian parameter dan kurva berkurang selama volatilitas pasar meningkat.

  5. Sebagai indikator teknis, strategi cenderung menghasilkan penyusutan palsu dan sinyal yang salah di sekitar tingkat teknis yang penting.

Risiko ini dapat dikurangi melalui parameter yang lebih halus, penyaringan sinyal dengan indikator lain, penyesuaian ukuran posisi, dll.

Arahan Optimasi

Strategi Mala Adaptive Moving Average dapat ditingkatkan dalam hal berikut:

  1. Meningkatkan perhitungan periode dan parameter untuk kelancaran alami, misalnya, memperkenalkan metode statistik untuk pemodelan harga yang lebih baik.

  2. Filter sinyal dengan volatilitas, volume dan fundamental untuk meningkatkan akurasi.

  3. Mengoptimalkan pengaturan parameter dan kontrol slippage untuk mengurangi biaya perdagangan dan meningkatkan ketahanan.

  4. Memperkenalkan pembelajaran mesin dan algoritma genetik untuk optimasi parameter dinamis.

  5. Mengembangkan kombinasi dengan sistem trend dan mean-reversion berdasarkan input dan output yang berbeda untuk meningkatkan profitabilitas.

Kesimpulan

Strategi Mala Adaptive Moving Average menggunakan analisis gelombang sinus untuk menghasilkan sinyal perdagangan, secara otomatis beradaptasi dengan perubahan pasar melalui penyesuaian parameter dinamis, membuatnya cukup kuat dan dapat diterapkan secara luas. Dibandingkan dengan strategi rata-rata bergerak adaptif lainnya, strategi ini menunjukkan kepraktisan dan stabilitas yang lebih tinggi.


/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 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/
// © dongyun

//@version=4
strategy("自适应移动平均的MESA系统", overlay=true)

fastlimit = input(0.5,'')
slowlimit = input(0.05,'')

smooth = 0.0
detrender = 0.0
I1 = 0.0
Q1 = 0.0
JI = 0.0
JQ = 0.0
I2 = 0.0
Q2 = 0.0
Re = 0.0
Im = 0.0
period = 0.0
smoothperiod = 0.0
phase = 0.0
deltaphase = 0.0
alpha = 0.0
MAMA = 0.0
FAMA = 0.0
price = 0.0

price := (high + low)/2
PI = 2 * asin(1)

if (bar_index > 5)
	smooth := (4*price + 3*price[1] + 2*price[2] + price[3])/10
	detrender := (.0962*smooth + .5769*nz(smooth[2]) - .5769*nz(smooth[4]) - .0962*nz(smooth[6]))*(.075*nz(period[1]) + .54)

	// compute InPhase and Quadrature components
	Q1 := (.0962*detrender + .5769*nz(detrender[2]) - .5769*nz(detrender[4]) - .0962*nz(detrender[6]))*(.075*nz(period[1]) + .54)

	I1 := nz(detrender[3])

	// advance the pulse of i1 and q1 by 90 degrees
	JI := (.0962*I1 + .5769*nz(I1[2]) - .5769*nz(I1[4]) - .0962*nz(I1[6]))*(.075*nz(period[1]) + .54)
	JQ := (.0962*Q1 + .5769*nz(Q1[2]) - .5769*nz(Q1[4]) - .0962*nz(Q1[6]))*(.075*nz(period[1]) + .54)

	//phase addition for 3-bar averaging 
	I2 := I1 - JQ
	Q2 := Q1 + JI

	//smooth the i and q components before applying
	I2 := .2*I2 + .8*nz(I2[1])
	Q2 := .2*Q2 + .8*nz(Q2[1])

	// hymodyne discriminator
	Re := I2*I2[1] + Q2*nz(Q2[1])
	Im := I2*Q2[1] + Q2*nz(I2[1])
	Re := .2*Re + .8*nz(Re[1])
	Im := .2*Im + .8*nz(Im[1])

	if (Im != 0 and Re != 0)
		period := 2 * PI/atan(Im/Re)

	if (period > 1.5 * nz(period[1]))
		period := 1.5*nz(period[1])

	if (period < .67*nz(period[1]))
		period := .67*nz(period[1])

	if (period < 6)
		period := 6

	if (period > 50)
		period := 50

	period := .2*period + .8*nz(period[1])
	smoothperiod := .33*period + .67*nz(smoothperiod[1])

	if (I1 != 0)
		phase := (180/PI) * atan(Q1/I1)

	deltaphase := nz(phase[1]) - phase

	if (deltaphase < 1)
		deltaphase := 1

	alpha := fastlimit/deltaphase
	if(alpha < slowlimit)
		alpha := slowlimit

	MAMA := alpha*price + (1 - alpha)*nz(MAMA[1])
	FAMA := .5*alpha*MAMA + (1 - .5*alpha)*nz(FAMA[1])

	if (FAMA < MAMA)
		strategy.entry("Long", strategy.long)
	else
		if (FAMA > MAMA)
			strategy.entry("Short", strategy.short)


Lebih banyak