Erreurs, bugs, questions - page 733

 
maintenant vérifié - les autres événements sonores ne fonctionnent pas non plus.
 

Je constate une situation étrange dans le fonctionnement des méthodes d'ouverture de position dans la classe CTrade (PositionOpen,Buy,Sell) - le conseiller expert ouvre effectivement une position (je peux le voir dans le terminal), mais ces méthodes renvoient false, _LastError=4756 (échec de l'envoi d'une demande de transaction). Alors que CTrade.ResultRetcode()=10008 (Ordre placé).

Est-ce que j'ai raté quelque chose dans le fonctionnement des serveurs Alpari de nos jours ou est-ce un bug ?

 
blef:

maintenant vérifié - les autres événements sonores ne fonctionnent pas non plus.

Les sons du terminal sont-ils activés ?

 
Oui - activé, la même chose se produit sur le serveur ROBOFOREX.
 
maintenant tous les événements sonores fonctionnent ==> sur les terminaux MQ et ROBOFOREX.
 

Je crée une EA, je l'exécute sur un graphique et j'ouvre une position manuellement :

void OnTrade()
  {
//---
   if(OrdersTotal()!=0)
     {
      OrderSelect(OrderGetTicket(0));
      Print("Есть ордера OrdersTotal()=",OrdersTotal()," ",
            EnumToString((ENUM_ORDER_STATE)OrderGetInteger(ORDER_STATE))
            );
     }
   else
     {
      OrderSelect(OrderGetTicket(0));
      Print("Нет ордеров OrdersTotal()=",OrdersTotal()," ",
            EnumToString((ENUM_ORDER_STATE)OrderGetInteger(ORDER_STATE))
            );
     }
  }

Je lance l'EA sur un graphique, j'ouvre manuellement une position et je me lance dans les tirages :

2012.05.02 16:27:10     Template Trades (EURUSD,M15)    Нет ордеров OrdersTotal()=0 ORDER_STATE_STARTED
2012.05.02 16:27:10     Template Trades (EURUSD,M15)    Нет ордеров OrdersTotal()=0 ORDER_STATE_STARTED
2012.05.02 16:27:10     Template Trades (EURUSD,M15)    Нет ордеров OrdersTotal()=0 ORDER_STATE_STARTED

Comment est-il possible que je reçoive un événement "trader" mais aucun ordre, mais que je reçoive un événement de type "aucun ordre" démarré et toujours.

Je pense que cette merde ne marche pas.

 
Et vous vérifiez le résultat de l'exécution
OrderSelect(OrderGetTicket(0));

Quel est l'intérêt de demander le statut d'une commande inexistante ? Et que retournera le second formulaire dans ce cas ?

bool  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  property_id, // идентификатор свойства
   long&                long_var          // сюда примем значение свойства
   );
 
Rosh:

Et vous vérifiez le résultat de l'exécution

Quel est l'intérêt de demander le statut d'une commande inexistante ? Et que retournera le second formulaire dans ce cas ?

Je savais que tu prendrais cette voie de l'analyse du code.

Et pourquoi ne vous préoccupez-vous pas de savoir s'il y a un ordre, puisque l'événement trader s'est déclenché (au moins l'un d'entre eux doit être pour fixer un ordre), et que OrdersTotal() dit qu'il n'y a pas d'ordre ?

 
Urain:

Je savais que tu prendrais cette voie de l'analyse du code.

Et pourquoi ne pas se soucier de savoir s'il y a un ordre, puisque l'événement trades s'est déclenché (au moins l'un d'entre eux doit être par la mise en place d'un ordre), mais que OrdersTotal() dit qu'il n'y a pas d'ordre ?

Peut-être que PositionTotal() est nécessaire ?
 

Voici l'erreur qui s'est affichée lorsque les classes ont été connectées

L'argent a bien fermé, mais pas l'or.

Если проблема в проскальзывании, то не подскажите как его задавать?
if (myposition.Select(_Symbol))
{
 // закрыть открытую позицию по этому символу
 // величина проскальзывания была установлена ранее 
 mytrade.PositionClose(_Symbol);
}