Développeurs ! Est-ce que vous testez au moins ce que vous créez ? - page 9

 
Mikalas:

C-4 A mon avis, obtenir des informations opérationnelles est beaucoup plus

plus intéressant que l'histoire. Nous devons savoir deux choses sur l'instrument :

1. mandats.

2. Position

Il me semble qu'il est beaucoup plus important d'analyser les transactions, parce qu'elles sont au niveau le plus bas et que vous pouvez connaître les ordres et les positions grâce à elles, mais le contraire n'est pas vrai. Mais le contraire n'est pas vrai.

Dans votre cas, OnInit() est exécuté une fois au début du programme. Mais il ne doit y avoir qu'un seul bloc de contrôles. Il synchronise l'état de l'EA avec la situation actuelle. Et peu importe où les nouvelles données lui sont parvenues, de l'historique des ordres au moment de l'initialisation, de l'historique au moment de l'exécution ou de l'événement OnTradeTransaction. Le résultat doit être identique, car il n'y a qu'un seul bloc responsable, lui aussi.

 

Vasiliy - il s'agit d'un morceau de code "primitif".

C'est simple - vous prenez une commande et vous travaillez ensuite avec elle.....

my_order = temp_order;

Une ligne !

 
papaklass:

L'événement OnTradeTransaction est-il encore nécessaire sous sa forme actuelle ?

Il s'avère que ce n'est pas le cas, puisque nous devons toujours tirer des informations de l'histoire.
 

Mikalas:

Je viens de remarquer que le produit DOIT être testé (je le teste sur MON propre compte) !

Je suppose que c'est un hors-sujet.

Alors quoi, tu me donnes le magazine et le code ?

Je suis d'humeur à aider ici.

 
C-4:
Il s'avère que ce n'est pas le cas, puisque nous devons toujours tirer des informations de l'histoire.

Oh, mon Dieu ! Est-il valable dans l'histoire ?

papaklass voulait probablement dire que OnTradeTransaction renvoie des erreurs ?

 

sergeev ->Je suis d'humeur à aider ici.

Désolé, mais je n'ai pas besoin d'aide.

 
Mikalas:

sergeev ->Je suis d'humeur à aider ici.

Désolé, mais je n'ai pas besoin d'aide.

pourquoi faut-il que tu baves pendant 9 pages ?
 
Mikalas:

Vasiliy - il s'agit d'un morceau de code "primitif".

C'est simple - vous prenez une commande et vous travaillez ensuite avec elle.....

Une ligne !

Ce n'est pas une question d'une ligne ou de cent. Il s'agit de l'approche. A.k. Voici le code à titre d'exemple pour voir ce que je veux dire. Il est garanti de garder la trace des nouveaux ordres entrants avec ou sans événement TradeTransaction, qu'il s'agisse d'une initialisation ou d'un nouvel ordre entrant :

/*Какое бы событие не наступило, оно будет обработано OnRefresh()*/

OnInit()
{
    OnRefresh();
}

void OnTimer(void)
{
    OnRefresh();
}

void  OnTradeTransaction(
      const MqlTradeTransaction&    trans,
      const MqlTradeRequest&        request,
      const MqlTradeResult&         result
   )
{
     OnRefresh();
}

///
/// Следит за поступлением новых трейдов и ордеров.
///

void OnRefresh()
{
    HistorySelect(0, TimeCurrent());
    for(; ordersCountNow < HistoryOrdersTotal(); ordersCountNow++)
    {  
       printf(HistoryOrderGetTicket(dealsCountNow));
    }
}

///
/// Текущее количество ордеров.
///
int ordersCountNow;
 
papaklass:

C'est de ça que je parle.

Pourquoi ce OnTradeTransaction n'est-il pas séparé en événements distincts ?

- OnOrderCreate //émettre une commande ;

- OnOrderModify // modification d'une commande active ;

- OnOrderDelete //supprime la commande ;

- OnPositionOpen //ouverture de la position ;

- OnPositionModify //installation/modification des arrêts/changement du volume de la position;

- OnPositionClosed //Fermeture d'une position à l'aide d'un Stop Loss ou d'un ordre de marché ;

et ainsi de suite.

Avec cette approche, le trader s'abonne et traite les événements qui l'intéressent.

Je reçois tous les événements qui m'intéressent, il y a une division là !
 

C-4, sera traité, bien sûr, mais pourquoi avons-nous besoin de OnRefresh() ?

Tout est partagé dans OnTradeTransaction(). Je ne manque pas d'informations.

Raison: