커뮤니티

수식 문의

프로필 이미지
gt
2014-06-26 18:06:02
134
글번호 76149
답변완료
1. 피라미딩 진입이 A => B => C => D => E 순서로 되어 있다고 할때, D와 E를 알 수 있는 방법이 없는지요? 피라미딩 진입이 아닐 경우 아래 코드와 같이 하면 되는 듯 한데, 피라미딩시는 어떻게 할 수 없는지요? if (IsEntryName("D", 1) == TRUE) AND (IsEntryName("E", 0) == TRUE) then 청산 2. 피라미딩 A=>B=>C 순서로 진입되었다고 할때, 최종진입한 C를 기준으로 M1이 M3를 2번 크로스다운하면 청산하고자 하는데 원하는데로 나오질 않습니다. 검증부탁드리겠습니다. VARS: CNT(0); VARS: MMDxELCheck(0); VARS: MMD.xELGetReady(FALSE); if (MARKETPOSITION == 1) then { if (CURRENTCONTRACTS > CURRENTCONTRACTS[1]) then { CNT = 0; } if ( (MMDxELCheck == 0) AND (CNT == 0) AND (CROSSDOWN(M1, M3)) ) then { MMDxELCheck = 1; } if ( (MMDxELCheck == 1) AND (CROSSUP(M1, M3)) ) then { MMDxELCheck = 2; } if ( (MMDxELCheck == 2) AND (CROSSDOWN(M1, M3 - PRICESCALE)) ) then { MMDxELCheck = 3; } if ( (MMDxELCheck == 3) AND (M1 < M3) ) then { MMD.xELGetReady = TRUE; } if ( (MMD.xELGetReady == TRUE) AND (CROSSUP(M1, M3)) ) then { MMD.xELGetReady = FALSE; MMDxELCheck = 0; } } if (MARKETPOSITION == 0) then { CNT = 0; MMDxELCheck = 0; MMD.xELGetReady = FALSE; } 3. 그리고 위식에서 (아래 코드 참조) 다시 크로스업하면 MMD.xELGetReady = FALSE; 로 해주는데, 이게 아닌 다음 크로스 다운시 MMD.xELGetReady = TRUE; 로 해주고자 할때 어떻게 식을 변경해야 할지 모르겠습니다. 정리하면 M1이 M3를 크로스업하면 취소시키는게 아니라 다음 크로스다운시 청산이 진행됩니다. 즉 M1이 M3를 3번 크로스시 청산하고자 합니다. if ( (MMD.xELGetReady == TRUE) AND (CROSSUP(M1, M3)) ) then { MMD.xELGetReady = FALSE; MMDxELCheck = 0; } 4. 피라미딩 진입이 A => B => C => D => E 순서로 되어 있다고 할때, E를 기준으로 최대수익범위가 10틱 미만이고, 수익이 -1틱이 되었을때 모두 청산하고자 합니다. 다시 설명하자면 E진입이 7틱까지 수익을 냈다가 -1틱으로 손실전환되면 청산합니다. 수식 부탁드립니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-06-26 18:34:56

안녕하세요 예스스탁입니다. 1. 함수중에 가장 최근에 진입의 명칭을 리턴하는 함수가 있습니다. LatestEntryName(0) 파라미딩 상태에도 가장 최근 추가된 진입명을 리턴합니다. 위함수로 처리하시면 됩니다. if MarketPosition == 1 and (LatestEntryName(0) == "D" or LatestEntryName(0) == "E") Then 2. 아래와 같이 간단히 작성하시면 됩니다. 최종 진입이후에 crossdown이 2번 발생하면 청산입니다. VARS: CNT(0); if (MARKETPOSITION == 1) then { if (CURRENTCONTRACTS > CURRENTCONTRACTS[1]) then CNT = 0; if CROSSDOWN(M1, M3) Then cnt = cnt+1; if cnt == 2 Then exitlong(); } Else CNT = 0; 만약 진입이 3회이상 누적된 경우에만 청산이 나오게 하시려면 아래조건와 같이 조건을 추가하시면 되며 if cnt == 2 and MaxEntries == 3 Then exitlong(); 3회이상 피라미딩이 되고 최종 진입이 C일때만 청산이 되게 하시려면 아래와 같이 if 조건을 만드시면 만드시면 됩니다. if cnt == 2 and MaxEntries == 3 and LatestEntryName(0) == "C" Then exitlong(); 3. 해당 부분은 위식에서 cnt == 3으로만 변경하시면 됩니다. 4. VARS: CNT(0),HH(0); if (MARKETPOSITION == 1) then { //최종 진입이후의 최고가 if (CURRENTCONTRACTS > CURRENTCONTRACTS[1]) then HH = H; if H > HH Then HH = H; //최종진입이후의 최고가가 최종진입의 진입가 대비 10틱 이하이고 //최종진입가 대비 1틱이하의 시세 발생하면 청산 if HH <= LatestEntryPrice(0)+PriceScale*10 Then ExitLong("bx",AtStop,LatestEntryPrice(0)-PriceScale); } 즐거운 하루되세요 > gt 님이 쓴 글입니다. > 제목 : 수식 문의 > 1. 피라미딩 진입이 A => B => C => D => E 순서로 되어 있다고 할때, D와 E를 알 수 있는 방법이 없는지요? 피라미딩 진입이 아닐 경우 아래 코드와 같이 하면 되는 듯 한데, 피라미딩시는 어떻게 할 수 없는지요? if (IsEntryName("D", 1) == TRUE) AND (IsEntryName("E", 0) == TRUE) then 청산 2. 피라미딩 A=>B=>C 순서로 진입되었다고 할때, 최종진입한 C를 기준으로 M1이 M3를 2번 크로스다운하면 청산하고자 하는데 원하는데로 나오질 않습니다. 검증부탁드리겠습니다. VARS: CNT(0); VARS: MMDxELCheck(0); VARS: MMD.xELGetReady(FALSE); if (MARKETPOSITION == 1) then { if (CURRENTCONTRACTS > CURRENTCONTRACTS[1]) then { CNT = 0; } if ( (MMDxELCheck == 0) AND (CNT == 0) AND (CROSSDOWN(M1, M3)) ) then { MMDxELCheck = 1; } if ( (MMDxELCheck == 1) AND (CROSSUP(M1, M3)) ) then { MMDxELCheck = 2; } if ( (MMDxELCheck == 2) AND (CROSSDOWN(M1, M3 - PRICESCALE)) ) then { MMDxELCheck = 3; } if ( (MMDxELCheck == 3) AND (M1 < M3) ) then { MMD.xELGetReady = TRUE; } if ( (MMD.xELGetReady == TRUE) AND (CROSSUP(M1, M3)) ) then { MMD.xELGetReady = FALSE; MMDxELCheck = 0; } } if (MARKETPOSITION == 0) then { CNT = 0; MMDxELCheck = 0; MMD.xELGetReady = FALSE; } 3. 그리고 위식에서 (아래 코드 참조) 다시 크로스업하면 MMD.xELGetReady = FALSE; 로 해주는데, 이게 아닌 다음 크로스 다운시 MMD.xELGetReady = TRUE; 로 해주고자 할때 어떻게 식을 변경해야 할지 모르겠습니다. 정리하면 M1이 M3를 크로스업하면 취소시키는게 아니라 다음 크로스다운시 청산이 진행됩니다. 즉 M1이 M3를 3번 크로스시 청산하고자 합니다. if ( (MMD.xELGetReady == TRUE) AND (CROSSUP(M1, M3)) ) then { MMD.xELGetReady = FALSE; MMDxELCheck = 0; } 4. 피라미딩 진입이 A => B => C => D => E 순서로 되어 있다고 할때, E를 기준으로 최대수익범위가 10틱 미만이고, 수익이 -1틱이 되었을때 모두 청산하고자 합니다. 다시 설명하자면 E진입이 7틱까지 수익을 냈다가 -1틱으로 손실전환되면 청산합니다. 수식 부탁드립니다. 감사합니다.