오류, 버그, 질문 - 페이지 2095

 

테스터의 새로운 확산 버그. 이는 시각적 모드와 일반 모드 모두에 존재합니다(전문가가 부풀려진 스프레드를 보기 때문).

기본 매개변수를 사용하여 표준 예제에서 MA Expert를 실행하여 확인할 수 있습니다.

일부 날짜의 경우 스프레드가 0:00에서 23:59까지 하루 종일 2-5에서 200 - 500으로 증가합니다. 2개의 DC에서 확인 - 분명히 문제는 따옴표가 아니라 테스터 자체에 있습니다.

다음은 2017년 10월 16일 날짜의 예입니다. 테스트는 2017년 10월 16일부터 실행해야 합니다. 배경에는 이 날짜에 대해 스크롤된 차트가 있는 터미널이 있습니다. 스프레드는 정상 범위에 있습니다.

다른 DC에 대한 또 다른 예

나는 스프레드를 통제하는 전문가를 만들고 그가 보는 것은 200-500입니다. 결과적으로 하루 종일 작업은 알고리즘에 따르지 않습니다.

또 다른 발견 날짜는 2017-09-19입니다. 저는 9월부터 오늘까지 테스트를 진행했습니다. 과대평가된 스프레드가 있는 날의 약 20-30%입니다. 2000으로 증가하는 것을 보았습니다.

SD로 보내드립니다.

추신. 대답했다. 새 빌드에서 수정됩니다.
 
elibrarius :

...

SD로 보내드립니다.

또한 이 질문에 대한 답변을 기다리고 있습니다.

개통, 개통: 2017.12.16 14:36, #1911211

 

MetaQuotes-Demo의 OrderSend가 멈춤 - 때로는 몇 초 동안 실행되고 때로는 스크립트를 제거하지 않습니다( 터미널을 닫아야 만).

 
TRADE_ACTION_CLOSE_BY에서 한 번에 여러 오류
 #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Bid SymbolInfoDouble ( _Symbol , SYMBOL_BID )
#define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )

void OnStart ()
{
   MqlTradeRequest Request = { 0 };
   MqlTradeResult Result;      
      
  Request.action = TRADE_ACTION_CLOSE_BY ;
  Request.position = OrderSend ( _Symbol , OP_SELL , 0.01 , Bid , 100 , 0 , 0 );
  Request.position_by = OrderSend ( _Symbol , OP_BUY , 1 , Ask , 100 , 0 , 0 );

  Request.symbol = _Symbol ; // Если убрать эту строку, то сообщения в логе изменятся

   Print ( OrderSend (Request, Result)); // false
}

결과

'7489613': instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': accepted instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': deal #176902665 sell 0.01 GBPUSD at 1.34334 done (based on order #193547458)
'7489613': order #193547458 sell 0.01 / 0.01 GBPUSD at 1.34334 done in 73.458 ms
'7489613': instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': accepted instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': deal #176902666 buy 1.00 GBPUSD at 1.34342 done (based on order #193547459)
'7489613': order #193547459 buy 1.00 / 1.00 GBPUSD at 1.34342 done in 76.044 ms
'7489613': failed close position #193547459 buy 0.99 GBPUSD by position #193547458 [Invalid request]


사실, 모든 것이 완벽하게 겹치지만 로그의 오류 메시지만 있고 OrderSend의 반환은 음수입니다. 소스 코드에서 강조 표시된 줄을 제거하면 로그에 완전히 부적절한 메시지가 표시될 수 있습니다.

 

ME 스타일러 버그 MT4/MT5

 #define f(x) x   //пробел вначале строки и перед конечным выражением
#define f(x) x     //стилизатор удалил пробел в начале строки. Пробел перед конечным выражением остался

 #define f(x) (x)   //пробел вначале строки и перед конечным выражением, ЗАКЛЮЧЕННЫМ В СКОБКИ
#define f(x)(x) //стилизатор удаляет не только пробел в начале строки, но и разделяющий пробел между аргументом и конечным выражением. 

//В итоге компилятор выдает ошибку во втором случае
//'(' - unexpected in macro definition

 

리얼 틱 M1. 테스터 데이터 창(비주얼 모드)에서 음수 스프레드를 사용하면 스프레드가 올바르지 않게 됩니다. 당신의 서버, 2017.10.23 01:00 및 01:01 분

나는 확산을 확인하는 전문가를 만들었습니다. 스프레드가 음수이면 EA는 잘못된 스프레드를 봅니다. 1만큼 증가합니다. 스크린샷에서 EA의 -1, 차트의 -2입니다. 스프레드가 양수이면 Expert Advisor에서 모든 것이 정확합니다.

실제 틱에 대한 스프레드는 시가에 대한 스프레드와 매우 다를 수 있습니다. 다음은 39pt의 차이가 있는 예입니다. 2017.10.23 00:53
개장 가격:


실제 틱 기준 :

두 모드 모두에 해당해야 하는 것 같았습니다...

 
elibrarius :

확산을 확인하는 전문가를 만들었습니다. 스프레드가 음수이면 EA는 잘못된 스프레드를 봅니다. 1만큼 증가합니다. 스크린샷에서 EA의 -1, 차트의 -2입니다. 스프레드가 양수이면 Expert Advisor에서 모든 것이 정확합니다.

스프레드를 계산할 때 코드에서 실수를 했다고 확신합니다. 찾을 수 없으면 코드를 보여주세요.

 

복사... 기능은 어떻게 되었나요? 시계열을 반환하는 데 사용되었지만 이제는 다음을 수행하지 않습니다.


원칙적으로 배열 인덱싱을 직접 확장하는 것은 어렵지 않지만 복사 후 시계열을 확장하는 함수를 사용한 이전 코드 ... 아마도 지금은 작동하지 않을 것입니다.
 
Konstantin :

복사... 기능은 어떻게 되었나요? 시계열을 반환하는 데 사용되었지만 이제는 다음을 수행하지 않습니다.


원칙적으로 배열 인덱싱을 직접 확장하는 것은 어렵지 않지만 복사 후 시계열을 확장하는 함수를 사용한 이전 코드 ... 아마도 지금은 작동하지 않을 것입니다.

처음에는 그랬고 인증서에 그것에 대해 기록되었습니다.


 
fxsaber :

스프레드를 계산할 때 코드에서 실수를 했다고 확신합니다. 찾을 수 없으면 코드를 보여주세요.

흠. 잘 찾으십시오)))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

void OnTick()
  {
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  }