보시다시피 takeprofit을 사용하지 않고 예제를 단순화했습니다. 오류는 확실히 손절매로 인해 발생하므로 이익실현이 필요하지 않습니다. 먼저 손절매가 0인(및 이익실현) 주문을 열고 나중에 OrderModify를 사용하여 손절매를 설정하려고 합니다. 그 전에 Mode_Stoplevel 및 Mode_Freezelevel을 확인 하고 필요한 경우 stoploss를 조정합니다. (초기에는 stoploss가 50이지만 Mode_Stoplevel이 75이기 때문에 아래 로그에서 조정이 발생합니다. 그런 다음 stoploss를 Mode_Stoplevel + 1로 설정하므로 76입니다.)
RaptorUK 및 SDC: MarketInfo(MODE_FREEZELEVEL)는 0을 반환합니다. Freezelevel이 문제라고 생각하지 않습니다. 로그 파일에 출력을 포함했습니다.
SDC: 확인하기 위해 OrderOpenPrice를 호출하기 전에 OrderSelect도 삽입했습니다. 로그에서 OrderSelect가 작동했음을 알 수 있습니다. 그렇지 않으면 코드가 지금까지 진행되지 않았을 것입니다(exit -1).
W로더: 나는 SDC의 간단한 예를 따랐다. 그러나 이제 위에서 볼 수 있듯이 stoploss를 설정할 때 pips 4/5 Digit 조정을 사용하여 확장했습니다. 손절매와 이익실현이 0으로 설정된 상태에서 먼저 주문이 시작된 다음 OrderModify로 손절매가 설정된 것을 볼 수도 있습니다. S/L 및 T/P가 0으로 설정된 아래 로그에서 볼 수 있듯이 주문은 성공적으로 시작되지만 OrderModify를 사용하여 다음 단계에서 S/L을 설정할 수 없습니다.
그러나 OrderModify는 실패합니다.
아래 코드는 지난 포스팅의 위 코드 다음에 실행한 코드입니다.
로그 목록:
#ESZ1,M5: 오프닝 포지션
#ESZ1,M5: 틱값: 12.50000000
#ESZ1,M5: 위치 크기: 1.00000000
#ESZ1,M5: 매도/입찰 1242.00000000/1241.75000000
#ESZ1,M5: 스프레드 0.25000000
#ESZ1,M5: 오픈 #13679252 1.00 구매 #ESZ1 at 1242.00 확인
#ESZ1,M5: 주문 13679252가 성공적으로 열렸습니다.
#ESZ1,M5: SL: 1241.25000000
#ESZ1,M5: TP: 1242.25000000
#ESZ1,M5: 오류=130
따라서 처음 열고 손절매를 설정해도 작동하지 않는 것 같습니다 :-/
스프레드는 0.25
#ESZ1,M5: 스프레드 0.25000000
알겠습니다. 에서 매수를 엽니다. . 1242.00 (문의)
#ESZ1,M5: 오픈 #13679252 1.00 구매 #ESZ1 at 1242.00 확인
#ESZ1,M5: 주문 13679252가 성공적으로 열렸습니다.
그런 다음 입찰 가격 + 2 * 스프레드 및 SL에서 TP로 수정하려고합니다. 입찰가 - 2 * 스프레드
#ESZ1,M5: SL: 1241.25000000
#ESZ1,M5: TP: 1242.25000000
FreezeLevel이 0.50이면 문제입니다. . 당신의 FreezeLevel은 무엇입니까?
같은 문제. 손절매 = 0 및 이익실현 = 0으로 주문이 잘 열립니다.
그러나 OrderModify는 실패합니다.
4/5 자리 중개인을 위해 조정하지 않습니다. 먼저 열지 않고 설정이 중지됩니다.
이전 에 답변 한 대로
예, 아마도 ECN 중개인과 거래하고 있을 것입니다. 제로 스탑으로 주문을 개설한 다음 50핍 SL 및 TP에 문제가 있으므로 주문이 열린 후 수정해야 합니다. 따라서 Raptor가 말한 것처럼 프리즈레벨과 스탑레벨을 확인하십시오. 사례
또한 OrderModify() 코드를 확인하십시오 .... 아마도 그렇게 작동하지만 OrderOpenPrice()를 수행하기 전에 OrderSelect()를 사용 하여 주문을 선택해야 한다고 생각합니다.
아아 #130은 여전히 밤에 나를 괴롭힌다 ;)
다음 시도는 다음과 같습니다.
보시다시피 takeprofit을 사용하지 않고 예제를 단순화했습니다. 오류는 확실히 손절매로 인해 발생하므로 이익실현이 필요하지 않습니다.
먼저 손절매가 0인(및 이익실현) 주문을 열고 나중에 OrderModify를 사용하여 손절매를 설정하려고 합니다.
그 전에 Mode_Stoplevel 및 Mode_Freezelevel을 확인 하고 필요한 경우 stoploss를 조정합니다. (초기에는 stoploss가 50이지만 Mode_Stoplevel이 75이기 때문에 아래 로그에서 조정이 발생합니다. 그런 다음 stoploss를 Mode_Stoplevel + 1로 설정하므로 76입니다.)
RaptorUK 및 SDC:
MarketInfo(MODE_FREEZELEVEL)는 0을 반환합니다. Freezelevel이 문제라고 생각하지 않습니다.
로그 파일에 출력을 포함했습니다.
SDC:
확인하기 위해 OrderOpenPrice를 호출하기 전에 OrderSelect도 삽입했습니다. 로그에서 OrderSelect가 작동했음을 알 수 있습니다. 그렇지 않으면 코드가 지금까지 진행되지 않았을 것입니다(exit -1).
W로더:
나는 SDC의 간단한 예를 따랐다. 그러나 이제 위에서 볼 수 있듯이 stoploss를 설정할 때 pips 4/5 Digit 조정을 사용하여 확장했습니다. 손절매와 이익실현이 0으로 설정된 상태에서 먼저 주문이 시작된 다음 OrderModify로 손절매가 설정된 것을 볼 수도 있습니다. S/L 및 T/P가 0으로 설정된 아래 로그에서 볼 수 있듯이 주문은 성공적으로 시작되지만 OrderModify를 사용하여 다음 단계에서 S/L을 설정할 수 없습니다.
전체 로그는 다음과 같습니다.
지속적인 도움에 진심으로 감사드리며 문제를 좁힐 수 있을 것 같습니다. :)
그렇다면 다른 무엇이 문제가 될 수 있습니까? 내가 시도할 수 있는 다른 것이 있습니까?
시노비
스프레드는 0.25
#ESZ1,M5: 스프레드 0.25000000
알겠습니다. 에서 매수를 엽니다. . 1242.00 (문의)
#ESZ1,M5: 오픈 #13679252 1.00 구매 #ESZ1 at 1242.00 확인
#ESZ1,M5: 주문 13679252가 성공적으로 열렸습니다.
그런 다음 입찰 가격 + 2 * 스프레드 및 SL에서 TP로 수정하려고합니다. 입찰가 - 2 * 스프레드
당신의 STOP_LEVEL 3 * 스프레드가 아닌가요? 정류장이 너무 가깝습니다. . .
예, 그래서 여기에서 stoplevel을 확인 합니다(위의 코드에서).
따라서 마지막 예에서 손절매는 76으로 설정되었으며 이는 3*Spread +1입니다.
충분히 멀리 떨어져 있어야 하지 않을까요?
이봐 랩터,
예, 그래서 여기에서 stoplevel을 확인합니다(위의 코드에서).
따라서 마지막 예에서 손절매는 76으로 설정되었으며 이는 3*Spread +1입니다.
충분히 멀리 떨어져 있어야 하지 않을까요?
여기 내가 한 일이 있습니다.
먼저 double을 가장 가까운 double로 반올림하는 사용자 정의 함수 를 작성했습니다.
그것은 당신이 기대하는 것을합니다. DoubleRound(1237.687360000)로 호출하면 1237.50을 반환합니다.
그런 다음 OrderModify를 호출하기 직전에 S/L에서 사용했습니다. 그리고 #ESZ1에 대해 0.25인 MODE_TICKVALUE를 사용했습니다.
그래서:
로그에서 반올림이 제대로 작동했음을 알 수 있습니다. 그러나 손절매는 여전히 거부되었습니다:/
다른 문제가 무엇인지 상상할 수 없습니다! 이 #130은 정말 끈질깁니다!!!
당신은 판매 를 열었습니다
#ESZ1,M5: 오픈 #13708089 1.00 판매 #ESZ1 1239.75 ok
그리고 그 아래 에 SL을 설정하려고 했습니다. . .
#ESZ1,M5: SL: 1237.50000000
#ESZ1,M5: 오류=130