오류 #130 유효하지 않은 손절매에 대한 도움이 필요합니다.

 
친애하는 포럼,

포럼에서 많은 사람들이 이 오류로 어려움을 겪는 것을 보았습니다.
다른 스레드를 이해했기 때문에 오류는 다음으로 인해 발생할 수 있습니다.
a: 손절매 값을 현재 가격에 너무 가깝게 설정
b: 0 뒤의 잘못된 자릿수

에 관하여:
내가 이해한 대로. MarketInfo(Symbol(), MODE_STOPLEVEL))는 손절매에 필요한 최소 거리를 제공해야 합니다.
다음은 실패한 거래의 예입니다.

시장 정보:
날짜: 2011/9/15 16:31
기호: #ESU1
정지 수준: 75.00000000
포인트: 0.01000000
눈금 크기: 0.25000000
틱 값: 12.50000000
숫자: 2.00000000

따라서 최소 거리는 정지 레벨 * 지점이어야합니다. 맞습니까? 그래서 0.75
실패한 주문은 다음과 같습니다.
2011.09.15 16:32:07 '393930': 주문 매도 18.00 #ESU1 1201.00 sl: 1202.35 tp: 0.00 실패 [잘못된 S/L 또는 T/P]
오류: 130 / 잘못된 중지

stoploss는 오프닝에서 1.35 떨어져 있습니다. 그래서 잘해야합니다. 숫자(b)도 일치합니다.
왜 이 오류가 발생합니까?

또한 이 오류는 재현하기 어렵습니다. 가끔 나타납니다. 때로는 그렇지 않습니다.
때로는 여러 번 차례로 나타납니다.

어떤 아이디어?
미리 감사드립니다!

시노비
 
이 오류가 발생한 정확한 시간의 스프레드는 무엇입니까?
 

ur 코드에서 오류 사례를 수행하고 RefreshRates()를 사용할 수 있습니다.

나는 그것을 직접하는 방법을 모르지만 아마도 당신은 이와 같이 할 수 있습니다.

if(거래==위조)

{

정수 오류 코드 = GetLastError();

if (오류 코드=130)

{

새로 고침 비율();

}

}

다시 이 코드가 올바르지 않을 수 있으므로 수행 방법을 Google에서 확인해야 합니다.

또한 NormalizeDouble 함수 를 사용하여 숫자를 반올림하지 않은 경우에도 마찬가지입니다.

 
35806 :

ur 코드에서 오류 사례를 수행하고 RefreshRates()를 사용할 수 있습니다.

그게 어떻게 도움이 될까요?
 
RaptorUK :
그게 어떻게 도움이 될까요?

일시적인 문제일 수 있습니다. 그는 대소문자를 구분하므로 요금을 새로 고치면 해결할 수 있다고 말했습니다.
 
35806 :

일시적인 문제일 수 있습니다. 그는 대소문자를 구분하므로 요금을 새로 고치면 해결할 수 있다고 말했습니다.
우리는 어떤 코드도 보지 못했습니다. . . 그가 사전 정의된 변수를 사용하지 않는다면 얼마나 많은 RefreshRates도 도움이 되지 않을 것입니다.
 

진실.

 
당신의 생각에 감사드립니다.

랩터, 나는 위의 거래에 대한 스프레드를 모릅니다. 코드에 로그 출력을 추가했습니다. 다음에 오류가 발생하면 확산을 알려드릴 수 있습니다.
하지만 왜 확산이 중요한지 말해 줄 수 있습니까? 손절매를 결정할 때 속도를 어떻게 고려해야 합니까?

예를 들어 다음과 같이 주문을 보냅니다.
int 티켓 = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, 녹색);

따라서 주문을 보낼 때 사용하는 사전 정의된 변수는 다음과 같습니다.
SLIPPAGE와 TAKEPROFIT은 모두 0입니다.
EXPERT_ID는 고유한 매직 넘버입니다.
position_size는 정수입니다(예: 3).
initial_stop은 내 손절매이며, 이는 (위의 예의 경우) 입찰가 - 위험입니다.
리스크는 (MODE_STOPLEVEL * Point)보다 큰 값이며, 첫 번째 포스트에서 거래하는 경우입니다. 위험도: 1.35
 
shinobi :
당신의 생각에 감사드립니다.

랩터, 나는 위의 거래에 대한 스프레드를 모릅니다. 코드에 로그 출력을 추가했습니다. 다음에 오류가 발생하면 확산을 알려드릴 수 있습니다.
그런데 왜 전파가 중요한지 말씀해 주시겠습니까? 손절매를 결정할 때 속도를 어떻게 고려해야 합니까?


미래를 위해 로그에 인쇄를 추가하는 것을 잘했습니다 :-)

나는 항상 Spread 가 고려되어야 하는 부분과 그렇지 않은 부분에 대해 오랫동안 열심히 생각해야 합니다. . 나는 그것이 염려되는 멘탈 블록이 있는 것 같다. . . 그러나 나는 이것이 맞다고 생각합니다.

Buy at Ask, SL은 Bid에서 발생하므로 스프레드는 이미 OpenPrice에 반영되어 있습니다. Sell 의 경우 에는 다른 문제 입니다 . . 당신은 Bid에 판매하고 당신의 SL은 Ask 가격에 의해 취해질 것입니다. . . 물가는 어디에 있습니까? 글쎄 그것은 당시의 확산에 달려 있습니다. . . 나는 이것이 옳다고 생각합니다. 그것에 대해 생각하고 그것이 의미가 있는지 확인하십시오. . . 내가 틀렸다면 바로잡을 수 있어 더욱 기쁩니다. . . :-)

 
int ticket = OrderSend ( Symbol (), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL , EXPERT_ID, 0 , Green );
EA는 4/5자리 브로커, TP, SL 및 슬리피지를 조정해야 합니다. ECN 중개인에서는 개설한 다음 중지를 설정해야 합니다.
 //++++ These are adjusted for 5 digit brokers.
int      pips2points;     // slippage  3 pips    3=points    30=points
double   pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int      Digits .pips;     // DoubleToStr(dbl/pips2dbl, Digits.pips)
int      init(){
     if ( Digits % 2 == 1 ){       // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262
                pips2dbl    = Point * 10 ; pips2points = 10 ;   Digits .pips = 1 ;
    } else {    pips2dbl    = Point ;    pips2points =   1 ;   Digits .pips = 0 ; }
     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//---- These are adjusted for 5 digit brokers.
     /* On ECN brokers you must open first and THEN set stops
    int ticket = OrderSend(...)
    if (ticket < 0)
       Alert("OrderSend failed: ", GetLastError());
    else if (!OrderSelect(ticket, SELECT_BY_POS))
       Alert("OrderSelect failed: ", GetLastError());
    else if (!OrderModify(OrderTicket()...)
       Alert("OrderModify failed: ", GetLastError());
     */
 
35806 :

일시적인 문제일 수 있습니다. 그는 대소문자를 구분하므로 요금을 새로 고치면 해결할 수 있다고 말했습니다.
AFAIK RefreshRates()는 오류 130 과 관련이 없습니다.