M 언어 거북 무역 전략 실행 (V 1.0)

저자:작은 꿈, 날짜: 2018-12-29 09:07:24
태그:거북이 무역MyLanguage

배경

1994년 코벨은 파이낸셜 월드의 한 호를 꺼내서 로버트슨, 코벨은 그가 명단에 25위에 있는 이름을 알아보지 못했던 것을 알아차렸다: R. 제리 파커, 그는 리처드 데니스 (Covel가 알아보지 못했던 다른 이름) 에 의해 거북으로 훈련되었다고 말했다. 파커는 훈련된 것으로 광고된 거북의 유일한 투자자였고, 투자자로서 코벨은 이 이야기를 흥미롭게 여겼다.

요약

리처드 데니스는 트레이더로서 2억 달러 이상을 벌었습니다. 그의 파트너인 윌리엄 에크하르트와 토론을 한 후, 두 주 동안 새로운 사람들을 트레이딩 과학에 훈련시켜서 각자에게 1백만 달러를 투자하도록 했습니다. 싱가포르의 거북이 사육 농장에 가서, "우리는 거북이를 키우는 것처럼 상인을 키울 것입니다".라고 말했습니다.

1,000명의 지원자 중 각자가 그들의 지능, 위험 관리 능력, 수학 능력을 테스트하기 위해 고심한 신청 과정을 거쳤지만, 선택된 거북이들은 매우 달랐습니다. 체코슬로바키아 출신 블랙 잭 마스터, 던전 앤 드래곤스 게임 디자이너, 복음주의 회계사, 하버드 MBA, 미국 공군 조종사이자 피아니스트 출신으로 4년 만에 1억 5천만 달러를 벌어들였습니다.

거래 규칙:

트렌드 신호를 포착하는 데, 거북이 거래법은 매우 중요한 기술 지표를 사용합니다. 돈치안 채널입니다. 이 채널은 익숙한 볼링거 밴드와 매우 유사합니다. 하지만 특정 계산의 관점에서 약간 다릅니다.

리처드 돈치안이 이 지표를 발명했다. 그것은 다른 색상의 세 곡선으로 구성된다. 지표는 기간 내에서 가장 높은 가격을 사용합니다 (일반적으로 20, 일부 플랫폼 시스템) 설정이 변경될 수 있고, 설정할 수 없는 경우도 있습니다) 그리고 가장 낮은 가격으로 시장 가격의 변동성을 표시하면, 채널이 좁으면 시장 변동성이 작은, 그렇지 않으면 채널 폭은 시장 변동성이 상대적으로 크다는 것을 의미합니다.

가격이 채널의 상단 트랙을 뚫을 때, 그것은 가능한 구매 신호입니다; 반대로, 그것은 낮은 트랙을 뚫을 때 가능한 판매 신호입니다.

돈치안 채널의 계산 방법은 다음과 같습니다.

상단 레일 = 최대 (최고, n), n 일 동안 가장 높은 가격의 가장 높은 값

하부 레일 = Min (최저 가격, n), 최저 가격의 최소 값 n 일

중간 레일 = (올라기 레일 + 하위 레일) / 2

이 전략은 금융 부문에서의 다인자 분석의 틀 안에서, 돌파구 이후의 가격 흐름을 예측합니다. 물론 이 요인의 효과는 엄격하게 검증되었고 Fama-프랑스 3인조 모델에 의해 보완되었으며 금융시장

물론, 우리는 더 합리적인 트렌드 브레이킹 지표를 최적화하고 사용할 수 있습니다.

그래서, 추진 요인은 공공 및 널리 사용 된 요인이기 때문에, 왜 거북이 무역 법은 군중에서 돋보일 수 있습니까? 대답은 간단합니다. 거북이 거래 규칙은 포지션 제어 및 스톱 로스에 대한 매우 엄격한 규칙을 정의합니다. 각 하나에 대해 살펴 보겠습니다.

    1. 포지션 N의 기본 단위

    거북이 규칙의 원칙은 작은 단위 (Unit) 를 정의하여 예상 가치 변동이 전체 순자산의 1%에 해당합니다. 이 작은 유닛의 자산을 사면 그 날 포지션의 시장 가치는 전체 순자산의 1% 이상 변하지 않습니다.

    이 작은 단위를 어떻게 정의할까요? 이 작은 단위가 가져올 수 있는 가치 변동을 어떻게 추정할까요? 먼저, 이 작은 단위의 가치 변동성을 예측하는 데 변동성 (volatility) 은 N라고 불립니다.) 거북이 전략은 역사적 가격 변동성을 통계적으로 평균하는 방법을 사용합니다. 구체적인 계산 공식은 다음과 같습니다.

    TrueRange = Max (최대, 최하, 최하, 최하)

    N = (지난 19일 N 값의 합 + 그 당시 TrueRange) / 20

    그 중에서도 높은 것은 하루의 가장 높은 가격을 나타냅니다. 낮은 것은 하루의 가장 낮은 가격을 나타냅니다. 그리고 PreClose는 전날의 폐쇄 가격을 나타냅니다. N의 값이 실제로 자산 가격의 최근 변동을 적절히 표현할 수 있다는 정의.

    따라서, 단위는 다음과 같이 계산되어야 합니다.

    단위 = (1%*Total_net) /N, Total_net는 자산의 총 순액입니다.

    유닛의 자산의 가격 변동성은 전체 순자산의 1%입니다.

    1. 포지션 개설 시점

    포지션 개설의 행동은 트렌드 돌파 신호를 생성하는 것입니다. 현재 가격이 상단 트랙을 돌파하면 구매 포지션을 생성합니다. 신호. 현재 가격이 하위 트랙 아래로 떨어지면, 그것은 짧은 위치 신호를 생성합니다 (암화폐 시장은 짧은 판매에 의해 지원됩니다!)

    초기 제작 크기 = 1 유닛

    1. 언제 더하는 지점이 있을까요?

    만약 보유 포지션이 긴 포지션이고 마지막 보유 포지션 (또는 추가 포지션) 에 따라 자산 가격이 0.5N 증가했다면, 긴 포지션의 단위를 추가합니다.

    만약 보유 포지션이 짧은 포지션이고 자산의 가격은 마지막 포지션 (또는 추가 포지션) 에 따라 0.5N 감소한 경우, 짧은 포지션의 단위를 추가합니다.

    우리는 거북이 전략이 실제로 위아래를 쫓는 전략이라는 것을 보았습니다.

    1. 동적 스톱 손실을 어떻게 할 수 있습니까?

    만약 보유 포지션이 긴 포지션이고 마지막 보유 포지션 (또는 추가 포지션) 에 따라 자산 가격이 2N로 떨어지면 모든 포지션에 대한 스톱 로스

    만약 보유 지점이 단위 지점이고, 자산의 가격이 마지막 보유 지점 (또는 추가 지점) 에 따라 2N 증가한 경우, 전체 지점이 폐쇄되어야 합니다.

    물론, 사용자는 파동적인 중지 손실 계획을 사용자 정의 할 수 있습니다. 예를 들어 0.5N 하락 부분 폐쇄 위치를 시작하기 위해, 서둘러 후 2N 하락을 기다리는 대신 그 영향의 비용은 결국 존재합니다.

    1. 어떻게 수익을 올릴까요? 이윤을 얻는 동력을 조정할 수 있나요?

    거북이 규칙에서는 이윤을 취하는 신호가 이렇게 생성됩니다.

    만약 보유 포지션이 긴 포지션이고 현재 자산 가격이 10번 치안 채널의 하단 트랙 아래로 떨어지면 모든 포지션이 닫힌다.

    만약 홀딩 포지션이 쇼트 포지션이고, 현재 자산 가격이 10번 치안 채널의 상단 트랙을 넘으면 모든 포지션이 닫힌다.

    물론, 사용자는 전체 순자산 / 초기 순자산> 1.5의 경우, 예를 들어, 동적 취득 계획을 사용자 정의 할 수 있습니다.

장점

거북이 거래법의 가장 큰 장점은 우리가 포지션 크기를 통제하는 효과적인 방법을 구축하는 데 도움이 된다는 것입니다.

단점

거북이 거래 시스템은 트렌드 추적 전략에 공통적인 문제가 있습니다. 그것은 부동 수익의 철수입니다. 추격하는 부동 수익은 급격한 하락으로 인해. 큰 트렌드에서 매우 강하고, 충격 시장에서 잘 수행하지 않습니다.

얘기는 그만해, 이 일을 해보자!

M 언어

개발 6 년 후, 그것은 수백만의 사용자로부터 피드백을 흡수했습니다. 그것은 성숙하고 안정적인 모델 개발 플랫폼입니다. 중국에서 널리 사용되는 프로그래밍 모델 개발 플랫폼입니다.

M 언어는 복잡한 알고리즘을 개별 함수로 포괄하고 small의 구조 모드를 채택하는 빌딩 블록 프로그래밍 개념을 옹호합니다. 문법은 간단하지만, 또한 특별한 프로그래밍 데이터 구조와 풍부한 금융 통계 함수 라이브러리로 논리적이고 복잡한 금융 응용 프로그램을 지원 할 수 있습니다.

M 언어의 함수 라이브러리는 자주 업데이트되며 새로운 기능을 지원하기 위해 고객의 새로운 요구 사항에 따라 언제든지 추가 할 수 있습니다. 아이디어와 새로운 응용 프로그램.

FMZ 퀀트는 M 언어의 문법 해석자를 구현했을 뿐만 아니라 자바스크립트와 같은 고위급 언어와 프로그래밍을 혼합할 수 있는 능력을 향상시켰다.

예를 들어:

// 여기서 FMZ Quant에서 모든 API 함수를 호출할 수 있습니다 scope.TEST = 함수 (obj) { obj.val * 100을 반환합니다. } 종료 가격: C

닫기 가격은 100배로 확대됩니다: TEST©

이전 폐쇄 가격은 100 배 확대됩니다: TEST ((REF ((C, 1)); // 마우스는 백테스트 K 라인에 이동하고 변수 값이 표시됩니다.

img
img


(*backtest
start: 2018-11-01 00:00:00
end: 2018-12-19 00:00:00
period: 1d
exchanges: [{"eid":"Futures_BitMEX","currency":"XBT_USD"}]
args: [["ContractType","XBTUSD",126961]]
*)

// this demonstration mainly uses the Turtle Trading Rules to demonstrate the method of writing "position management, maximum position control and other fund management".
// only the demonstration key content statement is annotated, other statements please consult customer service
//This model is only used to demonstrate the use of this strategy, and enters the market accordingly, at your own risk.

TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));// True volatility
ATR:MA(TR,26); // Find a simple moving average of the true amplitude in 26 cycles, shown in the figure
ZOOM:=IFELSE(ISCONTRACT('@Futures_(?!CTP).*'), CLOSE, 1); // Compatible with cryptocurrency futures as margin
LOT:=((MONEYTOT*0.01*ZOOM)/(UNIT*ATR))*ZOOM;// Calculate the number of one hand based on 1% of equity
TC..IFELSE(ISCONTRACT('@Futures.*'), INTPART(LOT), LOT); // Compatible futures and spot ISCONTRACT starts with @ to indicate matching exchange name, support
MTC..4*TC; // Total position
HH^^HV(H,20); // Attached to the main image display
LL^^LV(L,20); // Attached to the main image display
CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,BK(TC);// The latest price exceeds the highest value of 20 cycles, the first time to buy long, the quality is TC hands
CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0,SK(TC); // The latest price fell below the lowest value of 20 cycles, the first time to sell short, the quality is TC hands 
C>=BKPRICE+0.5*ATR&&BKVOL<MTC&&ISLASTBK,BK(TC);// The price has increased by 0.5 times ATR on the basis of the last holding position, and when the number of hands does not exceed 4 times of TC, buy long the adding position of TC hands
C<=SKPRICE-0.5*ATR&&SKVOL<MTC&&ISLASTSK,SK(TC);// The price fell 0.5 times ATR on the basis of the last holding position, and when the number of hands does not exceed 4 times of TC, sell short the adding position of TC hand.
C<=(BKPRICE-2*ATR)&&BKVOL>0,SP(BKVOL);// The latest price is less than the opening price minus 2 times of ATR, stop loss and close position
C>=(SKPRICE+2*ATR)&&SKVOL>0,BP(SKVOL); // The latest price is greater than the opening price plus 2 times of ATR, stop loss and close position
CROSSUP(H,HV(H,10))&&SKVOL>0,BP(SKVOL);// The highest price up-cross the highest price of 10 cycles, closing the position
CROSSDOWN(L,LV(L,10))&&BKVOL>0,SP(BKVOL); // The lowest price down-cross the lowest price of 10 cycles, closing position
TRADE_AGAIN(10);

관련

더 많은