Erreurs, bugs, questions - page 409

 
T-G:

Veuillez m'indiquer comment le code suivant fonctionnera sur mql5. Je ne comprends pas.

en fréquence comment obtenir l'heure actuelle ?
Voilà
//+------------------------------------------------------------------+
//|                                                       пример.mq5 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"

input int HourOpen=4;

MqlDateTime str;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   TimeToStruct(TimeCurrent(),str);

   if(str.hour==HourOpen)
     {
      // действие
     }
  }
//+------------------------------------------------------------------+
 
sergey1294:
Voir
TimeCurrent() a une surcharge, donc vous pouvez prendre le temps directement (en contournant TimeToStruct()), bien que votre version soit également correcte.
 

stringo:

Les graves problèmes sont donc causés par la mise en œuvre de cette option ?

void OnTrade(
             const string symbol,//символ, от которого (по которому) пришло торговое событие
             const uchar type,   //тип торгового события (изменения в ордерах, позициях или сделках)
             const ulong ticket  //тикет ордера или сделки, либо идентификатор позиции (в зависимости от второго параметра)
             );

Exactement. Le problème est que le commerce et la file d'attente des messages ne sont en aucun cas synchronisés. Un seul et même ticket peut recevoir plusieurs messages.

De plus, lorsque vous recevez le premier message de ce tas, vous ne savez rien de la disponibilité d'autres messages sur le même ticket. Vous vous êtes précipité pour traiter une modification de ticket, mais le ticket existe déjà, il est déjà dans l'historique des positions fermées. Que faire ? Inconnu.

Désormais, lorsqu'un événement commercial impersonnel se produit, vous pouvez immédiatement connaître l'état actuel des positions ouvertes et l'historique des transactions. Vous n'avez pas de numéro de ticket et vous ne pouvez vous référer qu'au statut actuel.

J'ai été injoignable pendant quelques jours.

Il existe peut-être différentes variantes d'utilisation des paramètres possibles de la fonctionOnTrade(), mais mon objectif est cette variante :

1. les commandes. A la réception du message suivant "de la pile", je découvre dans le ticket d'ordre si l'ordre se trouve dans la liste des ordres ouverts(OrderSelect) ou dans la liste des ordres historiques(HistoryOrderSelect). C'est-à-dire que j'obtiens les informations les plus récentes sur l'emplacement actuel d'une certaine commande, par rapport aux listes de commandes.

2. Positions. En recevant le message suivant "du tas", je découvre l'état de la position de ce symbole par son nom(PositionSelect). C'est-à-dire que j'obtiens également les informations les plus précises sur l'état actuel de la position.

Ensuite, je travaille avec les propriétés d'un symbole spécifique, si nécessaire.

J'essaie donc d'éviter l'utilisation excessive des contrôles cycliques.

 
Urain et sergey1294 merci pour la réponse rapide, maintenant je comprends.
 
AlexSTAL:
Qu'est-ce que ça dit ? Quels sont les symptômes ?

Rien ! J'essaie d'ouvrir un compte de démonstration (j'ai essayé différents DC).

revient

et ensuite ne peut pas créer un compte

 
papaklass:
Si vous êtes un trader de démonstration, il vous suffit de savoir si un stop loss ou un take profit est déclenché et sur quel instrument. Le reste des événements commerciaux sont exotiques et n'ont pas grand-chose à voir avec le commerce. IMHO. Par conséquent, s'il y avait un symbole dans la fonction OnTrade(), il serait possible de déterminer (par exemple, en comparant le solde actuel avec le précédent) ce qui a déclenché sl ou tp.
Je suis d'accord. Il faut au moins un symbole, et ensuite on trouvera ce que c'était.
desrenards:

Essayer d'ouvrir un compte de démonstration (j'ai essayé différentes sociétés de courtage)

arrive

J'ai essayé différentes sociétés de courtage et après cela, je ne peux pas ouvrir de compte.

Quand avez-vous téléchargé le terminal et où ? Une capture d'écran de la fenêtre suivante est souhaitable, car celle-ci n'est pas informative.
 

Aux développeurs de

Le fait que Win 2003 SP2 (en mode terminal) perde constamment des informations sur mon compte de trading est-il un bug ou a-t-il été conçu pour améliorer la sécurité ?

Plus précisément, si j'utilise alternativement la même copie du programme en mode normal et en mode terminal avec des comptes différents, les données du compte disparaissent de temps en temps. Apparemment, si vous travaillez simplement en mode terminal avec différents comptes, la situation sera similaire (je ne l'ai pas encore vérifié).

 
papaklass:
La plupart des traders ont besoin de savoir si un stop loss ou un take profit a été déclenché et sur quel instrument. Le reste des événements commerciaux sont exotiques et n'ont pas grand-chose à voir avec le commerce. IMHO. Par conséquent, s'il y avait un symbole dans la fonction OnTrade(), alors en comparant, par exemple, la valeur du solde actuel avec le précédent, vous pourriez déterminer si c'est sl ou tp qui s'est déclenché.
En "protection du ticket" :) Je préfère travailler avec des commandes en cours et suivre leur destin de la naissance à la retraite. De quel genre d'"exotisme sans grand rapport avec le commerce" s'agit-il ? Au contraire, c'est une exigence de temps pour suivre le sort des commandes par leur billetterie. - Il est nécessaire d'éviter de placer un deuxième ordre en suspens ou de dépasser le déclenchement d'un ordre qui a déjà été placé. Si nous disposons des paramètres décrits ci-dessus, nous pouvons déplacer le bloc de suivi du spot de l'ordre vers la fonction OnTrade().
 
papaklass:
La plupart des traders ont besoin de savoir si un stop loss ou un take profit a été déclenché et sur quel instrument. Le reste des événements commerciaux sont exotiques et n'ont pas grand-chose à voir avec le commerce. IMHO. Par conséquent, s'il y avait un symbole dans la fonction OnTrade(), vous pourriez déterminer (par exemple, en comparant le solde actuel avec le précédent) ce qui a déclenché sl ou tp.
Je vais le répéter une fois de plus. La question n'est pas close. Elle a été reportée jusqu'à ce que nous trouvions une solution acceptable. Les tâches les plus importantes n'ont pas encore été résolues.
 
Yedelkin:
Pour la défense du ticket :) Je préfère travailler avec des commandes en cours et suivre leur destin de la naissance à la retraite. Quel genre d'"exotisme peu pertinent pour le commerce" est-ce là ? Au contraire, c'est une exigence de temps pour suivre le sort des commandes par leur billetterie. - Il est nécessaire d'éviter de placer un deuxième ordre en suspens ou de dépasser le déclenchement d'un ordre qui a déjà été placé. Si nous disposons des paramètres décrits ci-dessus, nous pouvons déplacer le bloc de suivi du spot de l'ordre vers la fonction OnTrade().
Peut-être que le fait de donner des informations sur le nombre d'événements commerciaux encore en attente simplifiera les choses.
Raison: