2.4 FMZ Quant 플랫폼에서 거래 전략을 작성하는 방법

저자:선함, 2019-06-25 12:04:22, 업데이트: 2023-11-13 19:50:01

img

FMZ 퀀트 플랫폼에서 거래 전략을 작성하는 방법

요약

이전 섹션을 공부한 후, 우리는 마침내 양적 거래 전략을 작성할 준비가되었습니다. 이것은 수동 거래에서 양적 거래에 들어가는 가장 중요한 단계가 될 것입니다. 사실, 그것은 그렇게 신비하지 않습니다. 전략을 작성하는 것은 코드로 아이디어를 실현하는 것 이상의 것이 아닙니다. 이 섹션은 처음부터 양적 거래 전략을 구현할 것입니다.

준비 됐어

먼저, FMZ 퀀트의 공식 웹사이트를 열고 계정에 로그인합니다. 대시보드전략전략 추가을 클릭합니다. 코드를 작성하기 전에 프로그래밍 언어의 유형을 선택해야 합니다. 이 섹션에서 우리는 자바스크립트를 사용할 것입니다. 드롭다운 메뉴에서 선택하십시오. 또한, FMZ 퀀트 플랫폼 또한 파이썬, C ++ 및 시각 프로그래밍을 지원합니다.

전략 아이디어

이전 장에서는 이동 평균 전략을 소개했습니다. 즉: 가격이 지난 10 일간의 평균 가격보다 높으면 긴 포지션을 오픈하십시오. 가격이 지난 10 일간의 평균 가격보다 낮으면 짧은 포지션을 개설하십시오. 그러나 가격이 시장 상태를 직접 반영 할 수 있지만 여전히 많은 잘못된 돌파 신호가있을 것입니다. 따라서 우리는이 전략을 업그레이드하고 개선해야합니다.

먼저, 트렌드 방향을 판단하기 위해 더 큰 기간 이동 평균을 선택하십시오. 거짓 돌파 신호의 적어도 절반이 필터되었습니다. 큰 사이클 이동 평균은 느리지만 더 안정적입니다. 다음으로, 개설 포지션의 성공률을 높이기 위해 다른 조건을 추가합니다. 이 큰 사이클 이동 평균은 적어도 상승합니다. 마지막으로, 가격, 단기 이동 평균 및 장기 이동 평균 사이의 상대적 위치 관계는 완전한 거래 전략을 형성하는 데 사용됩니다.

img

전략 논리

위의 전략 아이디어로, 우리는 이 전략 논리를 구축하려고 할 수 있습니다. 여기서의 논리는 천체의 움직임을 계산하는 것이 아닙니다. 그것은 그렇게 복잡하지 않습니다. 그것은 단어로 이전 전략 아이디어를 표현하는 것 이상의 것이 아닙니다.

  • 오픈 롱 포지션: 현재 포지션이 없는 경우, 종료 가격은 단기 이동 평균보다 높고, 종료 가격은 장기 이동 평균보다 높고, 단기 이동 평균은 장기 이동 평균보다 높고, 장기 이동 평균은 상승하고 있습니다.

  • 오픈 쇼트 포지션: 현재 포지션이 없으며, 종료 가격은 단기 이동 평균보다 낮고, 종료 가격은 장기 이동 평균보다 낮고, 단기 이동 평균은 장기 이동 평균보다 낮고, 장기 이동 평균은 하락하고 있습니다.

  • 긴 포지션을 닫습니다: 현재 긴 포지션을 보유하고 있으며, 폐쇄 가격은 장기 이동 평균보다 낮거나, 단기 이동 평균은 장기 이동 평균보다 낮거나, 장기 이동 평균이 떨어지고 있습니다.

  • 클로즈 쇼트 포지션: 현재 쇼트 포지션을 보유하고, 종료 가격이 장기 이동 평균보다 높거나, 단기 이동 평균이 장기 이동 평균보다 높거나, 장기 이동 평균이 상승하는 경우

위는 전체 전략의 논리입니다. 이 전략의 텍스트 버전을 코드로 변환하면 시장 코팅을 획득하고 지표를 계산하고 포지션을 열고 닫는 명령을 두는 다음 세 단계를 포함합니다.

언어 전략

첫 번째 방법은 시장 코팅을 얻는 것입니다. 이 전략에서 우리는 단지 닫기 가격을 얻어야 합니다. M 언어에서 닫기 가격을 얻는 API는: CLOSE입니다.

다음 단계는 지표를 계산하는 것입니다. 이 전략에서, 우리는 두 가지 지표를 사용할 것입니다. 즉: 단기 이동 평균과 장기 이동 평균. 우리는 단기 이동 평균이 10 기간 이동 평균이고 장기 이동 평균이 50 기간 이동 평균이라고 가정합니다. 이 두 가지를 나타내는 코드를 어떻게 사용할 수 있습니까? 아래에 참조하십시오:

MA10:=MA(CLOSE,10); // Get the 10-cycle moving average of the latest K-line and save the result in variable MA10
MA50:=MA(CLOSE,50); // Get the 50-cycle moving average of the latest K-line and save the result in variable MA50

수동 거래에서, 우리는 50 기간 이동 평균이 상승하거나 하락하는지를 한눈에 볼 수 있지만, 그것을 코드로 표현하는 방법은 무엇입니까? 이동 평균이 상승하고 있는지 아닌지 판단하여 신중하게 생각하십시오. K 라인의 현재 이동 평균이 이전 K 라인의 이동 평균보다 크습니까? 또는 이전 두 K 라인보다 높습니까? 답이 예라면 이동 평균이 급락하고 있다고 말할 수 있습니다. 우리는 또한 같은 방법으로 하락을 판단 할 수 있습니다.

MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10

MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling

참고로 위의 코드 8 및 9 줄의 단어 AND은 논리 연산자입니다. 즉, and 조건의 양쪽이 사실이라면 문장 전체가 사실이고, 그렇지 않으면 거짓입니다.

마지막 단계는 주문을 하는 것입니다, 당신은 단지 FMZ Quant의 주문 API를 호출 해야만 논리 코드 후에 구매 및 판매 작업을 실행 합니다. 아래를 참조하십시오:

MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10

MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling

CLOSE>MA10 AND CLOSE>MA50 AND MA10>MA50 AND MA50_ISUP,BK; //open long position
CLOSE<MA10 AND CLOSE<MA50 AND MA10<MA50 AND MA50_ISUP,SK; //open short position
CLOSE<MA50 OR MA10<MA50,SP;//close long position
CLOSE>MA50 OR MA10>MA50,BP;//close short position

위의 13 및 14 라인, 또 다른 논리적 연산자인 단어 OR은 M 언어에서 or을 의미하며, 영어로 번역하면: 현재 K 라인 의 종료 가격이 현재 K 라인 의 50 기간 이동 평균보다 낮거나 현재 K 라인 10 기간 이동 평균이 현재 K 라인 50 기간 이동 평균보다 낮다면 값은 Yes로 계산됩니다. 즉시 주문을하십시오. 그렇지 않으면 계산은 no이며 아무것도하지 마십시오.

ANDOR은 모두 M 언어의 논리 연산자입니다.

  • AND은 모든 조건이 이고 마지막 조건이 일 때

  • OR은 조건 중 어느 하나만 yes일 때, 최종 조건은 yes입니다.

요약하면

위의 내용은 M 프로그래밍 언어를 사용하여 FMZ 퀀트 플랫폼에서 거래 전략을 작성하는 전체 과정입니다. 총 세 단계가 있습니다: 전략 아이디어를 가지고 전략 사고와 논리를 설명하기 위해 텍스트를 사용하여 마지막으로 코드를 사용하여 완전한 거래 전략을 구현합니다. 이것은 간단한 전략이지만 전략의 전략과 데이터 구조가 다르지만 구체적인 구현 프로세스는 복잡한 전략과 유사합니다. 따라서이 섹션에서 양적 전략 프로세스를 이해하는 한 FMZ 퀀트 플랫폼에서 양적 전략 연구와 연습을 수행 할 수 있습니다.

학교 밖 운동

  1. 이 섹션 에 나오는 전략 을 스스로 실행 하려고 노력 하십시오.

  2. 이 섹션의 전략에 근거하여, 스톱 로스 및 영업 영업 함수를 추가합니다.

다음 섹션에 대한 알림

양적 거래 전략의 개발에서 프로그래밍 언어는 무기와 같습니다. 좋은 프로그래밍 언어는 절반의 노력으로 두 배의 결과를 얻을 수 있습니다. 예를 들어, 양적 거래 세계에서 가장 일반적으로 사용되는 파이썬, C ++, Java, C #, EasyLanguage 및 M 언어의 12 개 이상이 있습니다. 전투장에서 싸울 때 어떤 무기를 선택해야합니까? 다음 섹션에서는 이러한 일반적인 프로그래밍 언어와 각 프로그래밍 언어의 특성을 소개 할 것입니다.


관련

더 많은