말라의 적응적 이동 평균 전략

저자:차오장, 날짜: 2023-12-07 11:08:18
태그:

img

전반적인 설명

말라 적응 이동 평균 전략 (Mala Adaptive Moving Average Strategy) 은 존 에일러스가 개발한 MESA 적응 이동 평균 지표에 기반한 양적 거래 전략이다. 이 전략은 상거래 결정을 내리기 위해 시노스 파도를 사용하며, 낮은 가격에서 구매하고, 높은 가격에서 판매한다. 매개 변수들의 슬라이딩 조정으로 시노스 파도는 서로 다른 제품과 시장 환경에 적응할 수 있다.

전략 논리

말라 적응 이동 평균 전략은 거래 신호를 생성하기 위해 시노스 파동 생성기를 사용합니다. 시노스 파동은 회전 벡터 (파소르라고 불리는) 에 의해 수직 축에 던지는 그림자에 의해 결정됩니다. 벡터가 360도 회전하면 한 사이클이 완료됩니다. 벡터가 한 각을 통과하면 구매 신호가 생성되고 다른 각을 통과하면 판매 신호가 생성됩니다. 따라서 거래 결정은 시간 영역의 파동 형태 특성보다는 주파수 영역의 각을 기준으로 정의되며, 다른 선물 계약과 시장 조건에서 전략을 더 견고하게 만듭니다.

구체적으로, 전략은 먼저 시너지 파동의 두 구성 요소를 매끄럽게하고, 그 다음 시너지 파동의 두 구성 요소를 계산합니다. 인-페이지 구성 요소 I와 사각형 구성 요소 Q. 이 두 구성 요소는 최종 Re와 Im를 얻기 위해 단계 이동으로 중첩되고 필터링됩니다. Re와 Im는 시너지 파동의 주파수 정보를 반영합니다. 기간 기간은 atan ((Im/Re) 에서 도출 될 수 있습니다. 예상 기간 범위에 따라 매끄러운 기간 기간이 결정됩니다. 기간 및 단계 정보가 거래 신호를 생성하는 MAMA 및 FAMA 곡선을 결정합니다. 파라미터 알파는 기간 및 단계 변화율 델타 파세에 따라 특정 범위 내에서 동적으로 조정되며 지표가 시장 조건의 변화에 적응 할 수 있습니다.

이점 분석

말라 적응형 이동 평균 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 시누스 파동과 단계를 거래 신호로 사용하면 전략이 더 견고해지며 시간 영역의 파동 형태 특성에 영향을받지 않습니다.

  2. 기간과 매개 변수들의 적응력은 시장 변화에 강한 적응력을 가능하게 합니다.

  3. MAMA와 FAMA 곡선은 가격 특성에 전적으로 의존하며, 트렌드 반전을 적시에 포착합니다.

  4. 전략의 민감도는 다른 거래 스타일에 맞게 매개 변수 조정을 통해 조정할 수 있습니다.

  5. 명확하고 간단한 논리는 연구와 교육에 대한 이해, 수정 및 응용을 용이하게합니다.

위험 분석

말라 적응적인 이동 평균 전략은 또한 다음과 같은 위험을 안고 있습니다.

  1. 시노스 곡선 기간과 단계에 따라, 비정상적인 가격 왜곡은 잘못된 신호를 생성할 수 있습니다.

  2. 기간 평가에 설정된 단단한 경계는 기간 변화의 원활성을 불충분하게 만듭니다.

  3. 단계 잠금 및 주점 주위의 기간 잠금은 곡선의 변동으로 이어지며 최적의 입구와 출구를 놓칠 수 있습니다.

  4. 매개 변수와 곡선의 적응성은 시장 변동성이 심할 때 감소합니다.

  5. 기술 지표로서 전략은 중요한 기술 수준에서 잘못된 파업과 잘못된 신호를 생성하는 경향이 있습니다.

이러한 위험은 더 부드러운 매개 변수, 다른 지표와 신호 필터링, 위치 사이즈 조정 등을 통해 완화 될 수 있습니다.

최적화 방향

말라 적응형 이동 평균 전략은 다음 측면에서 개선 될 수 있습니다:

  1. 더 자연스러운 부드러움을 위해 기간 및 매개 변수 계산을 개선하십시오. 예를 들어 더 나은 가격 모델링을 위해 통계 방법을 도입하십시오.

  2. 정확도를 높이기 위해 변동성, 부피 및 기본 요소로 신호를 필터합니다.

  3. 매개 비용을 줄이고 안정성을 높이기 위해 매개 변수 설정 및 미끄러짐 제어 최적화.

  4. 동적 매개 변수 최적화를 위한 기계 학습과 유전 알고리즘을 도입합니다.

  5. 수익성을 높이기 위해 다른 입출입을 기반으로 추세와 평균 역전 시스템과의 조합을 개발하십시오.

결론

말라 적응 이동 평균 전략은 시노 파동 분석을 사용하여 거래 신호를 생성하고, 동적 매개 변수 조정을 통해 시장 변화에 자동으로 적응하여 상당히 견고하고 널리 적용됩니다. 다른 적응 이동 평균 전략에 비해 더 높은 실용성과 안정성을 보여줍니다. 그러나 기술 전략으로 중요한 기술 수준에 대한 잘못된 신호에 노출되어 보조 도구로 필터링 및 최적화를 필요로합니다. 지속적인 개선으로이 전략은 권장되는 적응 거래 시스템으로 변할 가능성이 있습니다.


/*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)


더 많은