Erreurs, bugs, questions - page 2095

 
elibrarius:

...

Envoi à SD.

J'attends également une réponse à cette question :

Ouvert, Commencé : 2017.12.16 14:36, #1911211

 

OrderSend sur MetaQuotes-Demo se bloque - parfois fonctionne pendant quelques secondes, parfois le script ne peut pas être supprimé (seulement en fermant le terminal).

 
Plusieurs erreurs dans 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
}

Résultat

'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]


En fait, tout se recoupe parfaitement, mais seuls les journaux contiennent des messages erronés, et le retour de OrderSend est négatif. Si vous supprimez la ligne mise en évidence dans la source, vous pouvez voir un message complètement inadéquat dans les journaux.

 

ME Styler bug MT4/MT5

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

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

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

 

De vrais tics M1. Lorsque l'écart est négatif dans la fenêtre de données du testeur (mode vis.), l'écart devient incorrect. Votre serveur, 2017.10.23 01:00 et 01:01 minutes

J'ai créé un conseiller expert qui vérifie l'écart. Lorsque le spread est négatif, le conseiller expert voit le mauvais spread, - augmenté de 1. La capture d'écran montre -1 dans l'EA, -2 sur le graphique. Si l'écart est positif, tout est correct dans Expert Advisor.

L'écart sur les ticks réels peut être très différent de l'écart sur le prix d'ouverture. Voici un exemple avec une différence de 39 pts. 2017.10.23 00:53
Sur les prix d'ouverture :


Sur les
vrais tics :

J'ai pensé que quelque chose devait correspondre dans les deux modes...

 
elibrarius:

J'ai créé un conseiller expert qui vérifie l'écart. Lorsque le spread est négatif, le conseiller expert voit le mauvais spread - augmenté de 1. La capture d'écran montre -1 dans le conseiller expert, -2 sur le graphique. Lorsque l'écart est positif, tout est correct dans Expert Advisor.

Je suis sûr que vous avez fait une erreur dans le code en calculant l'écart. Si vous ne le trouvez pas, veuillez montrer le code.

 

Qu'est-il arrivé aux fonctions Copie... ? ? auparavant, ils renvoyaient les séries chronologiques, mais maintenant ils ne le font plus :


En principe, il n'est pas difficile d'étendre l'indexation des tableaux par elle-même, mais l'ancien code où j'utilisais des fonctions qui étendaient les séries temporelles après la copie... ne fonctionnera probablement pas maintenant
 
Konstantin:

Qu'est-il arrivé aux fonctions Copie... ? Avant, ils renvoyaient les séries chronologiques, mais plus maintenant :


Fondamentalement, il n'est pas difficile d'étendre l'indexation des tableaux par vous-même, mais le code précédent où j'ai utilisé des fonctions qui étendent les séries temporelles après la copie... ne fonctionnera probablement pas maintenant

C'était le cas à l'origine et c'est écrit dans l'aide.


 
fxsaber:

Je suis sûr que vous avez fait une erreur dans le code lors du calcul de l'écart. Si vous ne le trouvez pas, montrez-moi le code.

Hm. Trouvez-le ))))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

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

 
elibrarius:

Hmm. Eh bien trouvez-le ))))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

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

Alors, qui vous a dit que le champ du spread de la barre actuelle est égal au spread actuel ou, par exemple, au minimum ?

UtilisezSymbolInfoTick, les barres sont un rudiment historique.