다단계 수익률 전략

저자:선함, 2019-09-25 16:24:31, 업데이트: 2023-11-07 20:44:48

img

요약

스탠리 크롤은 그의 책 크롤 오브 퓨처스 트레이딩 전략에서 그의 수익을 얻는 방법은 세 부분으로 나뉘어 있다고 언급했습니다. 목표 가격에 도달하면 지점의 3분의 1이 닫히고; 장기 저항 및 지원 가격 범위가 깨지면 지점의 3분의 1이 닫히고; 지점의 마지막 3분의 1은 스톱 손실이 유발 될 때까지 트렌드를 따라갈 것입니다.

이 문서에서 공유하는 전략은 이 원리에 기반합니다. 이동 평균선은 트렌드의 방향으로 사용됩니다. 폐쇄 가격, 가장 높은 가격 및 가장 낮은 가격 사이의 관계는 포지션을 여는 신호로 사용됩니다. 가격 트렌드가 크게 변하지 않았다는 전제 하에, 비율에 따라 대량으로 적극적으로 이익을 취합니다.

왜 우리는 손해를 멈추고 이익을 취해야 할까요?

거래 세계에서 오래된 말이 있습니다: "모든 사람이 포지션을 어떻게 열어야하는지 알고, 프로만이 포지션을 어떻게 닫아야하는지 알고 있습니다". 이 단어들이 암시하는 바와 같이, 시장에서 어떻게 빠져나가는 것이 거래의 핵심 요소입니다. 왜냐하면 포지션을 열 때 시장 트렌드가 시작되는지 판단할 필요가 있기 때문입니다. 그러나 시장에 뛰어들면 트렌드가 돌고 있는지 아닌지 판단해야하며 항상 위험을 통제해야합니다. 많은 거래자가 롤러 코스터 시장을 경험했다고 믿습니다. 당신은 기차에 뛰어 들어가서 작은 이익 또는 손실로 끝났습니다.

간단히 말해서, 포지션을 닫는 것은 두 가지 상황 이외에 아무것도 아닙니다: 수익을 취하고 손실을 중지하십시오. 예를 들어, 운이 좋다면, 가격은 구매 후 상승하기 시작합니다. 이 시점에서, 당신은 이익을 취하는 문제를 고려해야합니다. 그렇지 않으면 우리는 단지 look에서 돈을 벌 수 있습니다, 올바른 장소에서 이익을 취하지 않았고, 마침내 그것을 잃을 수 있습니다. 운이 좋지 않으면, 가격은 구매 직후 떨어지기 시작할 것입니다. 이 시점에서, 당신은 포지션을 열기 전에 중지 손실을 고려하거나 중지 손실 옵션을 고려해야합니다. 그렇지 않으면 작은 손실은 큰 손실을 축적 할 것입니다.

통계적 관점에서, 대부분의 손실 포지션은 미래 시장에서 비용 가격으로 돌아갈 것입니다. 그러나, 큰 역동 트렌드의 작은 확률을 발견하면 이전 모든 이익 또는 심지어 전체 펀드를 잃을 수 있습니다. 따라서, 우리의 소매 투자자에게, 우리는 큰 이익을 얻을 수 있습니다. 우리는 작은 이익을 얻을 수 있습니다; 우리는 작은 손실을 수행 할 수 있습니다, 그러나 우리는 결코 큰 돈을 잃을 수 없습니다. 한마디로: 손실을 멈추는 것은 당신을 살아있게하고 이익을 얻는 것은 당신을 더 잘 살게합니다.

전략 논리

직관적으로 수익을 취할 때, 시장 가격 움직임의 큰 파동이 발생할 수 있으며, 우리는 그 중 작은 금액만을 벌 수 있습니다. 실패한 거래는 아니지만, 마음가짐에서 일종의 후회가있을 것입니다. 따라서이 전략은 다단계 수익을 취하는 방법을 사용할 것입니다. 즉, 부동의 이익이 5%에 도달하면, 첫 번째 레벨의 활성 수익 모드가 활성화됩니다. 부동의 이익의 가장 높은 지점에서 100%를 철수하면, 수익을 취하고 닫을 수 있습니다. 부동의 이익이 10%에 도달하면, 두 번째 레벨의 활성 수익 모드가 활성화됩니다. 부동의 이익의 가장 높은 지점에서 50%를 철수하면, 수익을 취하고 닫을 수 있습니다. 부동의 이익이 20%에 도달하면, 세 단계의 활성 수익 취지는 활성화됩니다. 부동의 이익이 가장 높은 지점에서 20%를 철수하면, 부동의 수익 모드가 활성화됩니다. 이 전략은 큰 수익을 얻는 방법일 뿐 아니라, 부동의 수익이 증가 할 때만 작동합니다.

  • 상단 레일을 정의합니다.

  • 하부 레일을 정의합니다.

  • 이동 평균을 정의합니다.

  • 오픈된 긴 포지션: 닫기 가격은 상위 레일보다 높고 상위 레일은 이동 평균보다 높습니다.

  • 코트 포지션 오픈: 폐쇄 가격은 하부 레일보다 낮고 하부 레일은 이동 평균보다 작습니다.

  • 긴 포지션 종료: 종료 가격은 하위 트랙보다 낮거나 종료 가격은 이동 평균보다 낮습니다.

  • 마이너 포지션 클로즈: 클로즈 가격은 상부 레일보다 높거나 클로즈 가격은 이동 평균보다 높습니다.

  • 레벨 1 긴 포지션 취득: 포지션 개척 후 가장 높은 가격은 개시 가격 곱하기 첫 번째 수준의 시작 수익보다 높거나 같으며, 가장 낮은 가격은 포지션 개척 후 가장 높은 가격 빼기 부동 수익 곱하기 첫 번째 레벨 취득 수익 트리거 값보다 낮거나 같습니다.

  • 레벨 2 긴 포지션 영업 수익: 포지션 개척 후 가장 높은 가격은 개척 가격 곱하기 두 번째 수준의 영업 시작 가격보다 높거나 같으며, 가장 낮은 가격은 포지션 개척 후 가장 높은 가격 미제 변동 수익 곱하기 두 번째 레벨 영업 수익 트리거 값보다 낮거나 같습니다.

  • 레벨 3 긴 포지션에서 수익을 얻는다: 포지션을 열고 나서 가장 높은 가격은 열기 가격 곱하기 세 번째 레벨의 수익 시작 값보다 높거나 같으며, 가장 낮은 가격은 포지션을 열고 나서 가장 높은 가격보다 낮거나 같고, 변동 수익을 빼고 세 번째 레벨의 수익을 취하는 트리거 값으로 곱하면

  • 레벨 1 단위 포지션 영업이익: 포지션 개척 후 가장 낮은 가격은 개척 가격 곱하기 첫 번째 수준의 영업이익 시작 값보다 작거나 같으며, 가장 높은 가격은 포지션 개척 후 가장 낮은 가격 더하기 변동 수익 곱하기 첫 번째 레벨 영업이익 시작 값보다 크거나 같습니다.

  • 레벨 2 단위 포지션 영업이익: 포지션 개척 후 가장 낮은 가격은 개척 가격 곱하기 두 번째 수준의 영업 시작 가격보다 작거나 같으며 가장 높은 가격은 포지션 개척 후 가장 낮은 가격 더하기 변동 수익 곱하기 두 번째 레벨 영업이익 트리거 값보다 크거나 같습니다.

  • 레벨 3 단위 포지션 취득: 포지션 개척 후 가장 낮은 가격은 개척 가격 곱하기 세 번째 수준의 시작 수익보다 작거나 같으며 가장 높은 가격은 포지션 개척 후 가장 낮은 가격 더하기 변동 수익 곱하기 세 번째 레벨 취득 트리거 값보다 크거나 같습니다.

  • 긴 포지션 스톱 로스: 종료 가격은 오픈 가격 곱하기 스톱 로스 인수보다 작거나 같습니다.

  • 쇼트 포지션 스톱 로스: 종료 가격은 시작 가격 곱하기 스톱 로스 인수보다 작거나 같습니다.

전략 코드

위의 전략 논리를 바탕으로 FMZ 퀀트 플랫폼에서 이 전략을 구현할 수 있습니다.fmz.com> 로그인 > 대시보드 > 전략 라이브러리 > 새로운 전략 > 오른쪽 상단쪽의 드롭다운 메뉴를 클릭하여 내 언어를 선택하여 전략을 작성하기 시작하고 아래 코드에 있는 댓글에 주의를 기울일 수 있습니다.

첫째, 전략에서 사용해야 하는 매개 변수: 평균 라인 길이, 스톱 손실 범위, 수익 매개 변수 등은 모두 테스트 디버깅과 최적화를 촉진하기 위해 외부 매개 변수로 정의됩니다.

/ / Define parameters
LENGTH := 100; // moving average parameter
STOP_LOSS := 3; // Stop Loss range

// Define the take profit parameter
STARTPER1 := 5; // Level 1 tracking take profit, start from profit reaches 5%
STOPPER1 := 100; // Level 1 tracking take profit, profit retracement 100% triggers it
STARTPER2 := 10; // Level 2 tracking take profit, start from profit reaches 10%
STOPPER2 := 50; // Level 2 tracking take profit, profit retracement 50% trigger it
STARTPER3 := 20; // Level 3 tracking take profit, start from profit reaches 20%
STOPPER3 := 20; // Level 3 tracking take profit, profit retracement 20% trigger

다음으로, 오늘의 가격과 어제의 가격, 그리고 어제의 가격 변동에 기초한 가격 범위를 설정합니다. 이 가격 범위와 이동 평균과의 상대적 위치 관계를 통해, 구매 및 판매 오픈 포지션 신호가 잘 추적 될뿐만 아니라 충격 기간에 오픈 포지션의 수와 철수의 규모를 줄일 수 있습니다.

/ / Define the upper and lower intervals
NN := BARSLAST(DATE <> REF(DATE, 1)) + 1; // current number of cycles
TODAY_OPEN := VALUEWHEN(NN = 1, O); // Opening price of the day
TODAY_HIGH := HHV(H, NN); // The highest price of the day
TODAY_LOW := LLV(L, NN); // lowest price of the day
YESTERDAY_HIGH := REF(TODAY_HIGH, NN); // Yesterday's highest price
YESTERDAY_LOW := REF(TODAY_LOW, NN); // yesterday's lowest price
BAND := YESTERDAY_HIGH - YESTERDAY_LOW; // Yesterday amplitude
UPPERLINE : TODAY_OPEN + BAND; // upper line
LOWERLINE : TODAY_OPEN - BAND; // lower line
MYMA:MA(CLOSE, LENGTH); // Moving average

다음으로, 그것은 포지션을 열고 닫는 논리 코드입니다. 닫기 가격이 상부 레일보다 크고 상부 레일은 이동 평균보다 크면 긴 포지션을 열고 닫기 가격이 하위 레일보다 낮고 하위 레일은 이동 평균보다 작을 때 짧은 포지션을 열고 닫기 포지션 조건은 오픈 포지션 조건과 바로 반대입니다. 닫기 가격이 하위 레일보다 작거나 닫기 가격이 이동 평균보다 작을 때 긴 포지션을 닫습니다. 닫기 가격이 상부 레일보다 크거나 닫기 가격이 이동 평균보다 크면 짧은 포지션을 닫습니다.

// open the position
C > UPPERLINE AND UPPERLINE > MYMA, BK; // Open long position
C < LOWERLINE AND LOWERLINE < MYMA, SK; // Open short position

// close the position
C < LOWERLINE OR C < MYMA, SP; // Close long position
C > UPPERLINE OR C > MYMA, BP; // Close short position

마지막으로, 우리는 이 기사에서 언급 한 스톱 로스 및 취리 부분입니다. 이윤을 취하기 위해 긴 위치 또는 짧은 위치 여부에 관계없이 세 단계로 나뉘어 있습니다. 각 단계는 현재 시장 가격 변동과 수익성에 따라 자동으로 조정됩니다. 이 조정은 외부 매개 변수에 설정되어 있으며, 다른 시장 조건과 품종 상태에 따라 세밀한 조정을 수행 할 수 있습니다.

스톱 손실은 또한 우리가 고려해야 할 전략의 일부입니다. 왜냐하면 어떤 포지션을 개설함으로써 돈을 벌 수 없기 때문입니다. 때로는 시장이 우리의 기대에 반대하므로 스톱 손실은 절대적으로 필요합니다. 이 기사의 스톱 손실은 간단하고 폭력적입니다. 즉, 부동 손실이 특정 수준에 도달하면 모든 포지션은 닫힐 것입니다.

// long position take profit
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER1) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER1, SP;  // level 1
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER2) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER2, SP;  // level 2
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER3) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER3, SP;  // level 3

// short position take profit
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER1) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER1, BP;  // level 1
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER2) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER2, BP;  // level 2
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER3) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER3, BP;  // level 3

// stop loss
C <= BKPRICE * (1 - STOP_LOSS * 0.01), SP;  // long position
C >= SKPRICE * (1 + STOP_LOSS * 0.01), BP;  // short position

또한, 우리는 또한 주문 위임 방법을 설정, 또한 신호 필터링, 더 완전한 처리를 만들기 위해.

// Set the order commission method
SETSIGPRICETYPE(BK,NEW_ORDER);
SETSIGPRICETYPE(SK,NEW_ORDER);
SETSIGPRICETYPE(BP,NEW_ORDER);
SETSIGPRICETYPE(SP,NEW_ORDER);

// Set the signal filtering method
AUTOFILTER;

전략 백테스트

시험 환경

  • 거래 품종: 철강 인덱스
  • 시간: 2015년 2월 22일 ~ 2019년 9월 18일
  • 주기: 1시간
  • 슬리핑: 포지션 개장 및 종료 가격에 2피프
  • 수수료: 보통 교환 기준의 2배

img

성과 보고

img

기금 곡선

img

복사 전략

설정하지 않고 전체 전략 소스를 복사하기 위해 클릭합니다https://www.fmz.com/strategy/166753


관련

더 많은