Caractéristiques du langage mql5, subtilités et techniques - page 17

 
Combinateur:
Err pourquoi si elle n'est pas visible de toute façon ?

Ces paramètres peuvent être laissés de côté s'il n'est pas nécessaire d'afficher un indicateur.

Et la compatibilité avec l'ancien code ne sera pas compromise. Pendant le test, l'indicateur est toujours affiché.

 
Slawa:

Parce qu'il est impossible de définir les propriétés d'affichage (partie dessin) via la poignée de l'indicateur (partie calcul). Un bogue, c'est quand quelque chose est écrit d'une certaine façon, mais fonctionne d'une autre façon.

Une approche différente est nécessaire ici. Accès à l'indicateur par son nom court, comme dans le groupe de fonctions ChartIndicatorXXX. Quelque chose comme ChartIndicatorSetInteger(chart_id,sub_window,indicator_name,PROP_COLOR,mod,value)

Nous y avons déjà pensé, mais nous ne l'avons pas encore fait.

S'il est destiné aux indicateurs définis de manière programmatique, ne serait-il pas préférable de remplacer la mise en évidence par la poignée de l'indicateur ?
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Particularités du langage mql5, trucs et astuces

fxsaber, 2017.02.25 16:02

  static bool HistoryDealSelect( MqlTradeResult &Result )
  {
    if ((Result.deal == 0) && (Result.order != 0))
    {
      if (::HistorySelectByPosition(::HistoryOrderGetInteger(Result.order, ORDER_POSITION_ID)))
        for (int i = ::HistoryDealsTotal() - 1; i >= 0; i--)
        {
          const ulong DealTicket = ::HistoryDealGetTicket(i);

          if (Result.order == ::HistoryDealGetInteger(DealTicket, DEAL_ORDER))
          {
            Result.deal = DealTicket;

            break;
          }
        }
    }

    return(::HistoryDealSelect(Result.deal));
  }
  // Учтены MT5-нюансы: Result.deal == 0
  static bool OrderSendSync( const MqlTradeRequest &Request, MqlTradeResult &Result )
La synchronicité n'est plus pertinente. Seule la pièce responsable de la correction de Result.deal est mise en évidence.
 
fxsaber:
La synchronisation n'est plus pertinente. Seule la pièce responsable de la correction de Result.deal est mise en évidence.
Qu'est-ce que la "correction de l'affaire Result.deal" ?
 
Alexey Viktorov:
S'il s'agit d'indicateurs programmés, ne vaut-il pas mieux remplacer la mise en évidence par la poignée de l'indicateur ?
Pas mieux. Parce que c'est impossible sans changement d'architecture. J'ai décrit pourquoi en détail.
 
Artyom Trishkin:
Qu'est-ce que la "correction de l'affaire Result.deal" ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.02.23 15:34

Du conseil d'administration.

L'exécution du ticket d'échange résultant n'est pas garantie. Le fait qu'il se remplisse ou non dépend du mode d'exécution de l'instrument et des paramètres du serveur particulier.

Qui s'est couché pour un résultat non nul. Affaire - agir.

 
Roffild:

Ces paramètres peuvent être laissés de côté s'il n'est pas nécessaire d'afficher l'indicateur.

Si vous voulez l'afficher, vous pouvez mettre ces réglages dans les paramètres.
 
fxsaber:

Eh bien... Je vois que vous ne pouvez pas compter sur un résultat non nul. Alors que dit cette ligne ?

// Учтены MT5-нюансы: Result.deal == 0

Où sont-elles comptabilisées ?

 
Artyom Trishkin:

Eh bien... Je vois que vous ne pouvez pas compter sur un résultat non nul. Alors que dit cette ligne ?

Où sont-elles comptabilisées ?


Dans OrderSendSync, la fonction surchargée (voir ci-dessus) HistoryDealSelect est appelée.
 

fxsaber:

static bool OrderSendSync( const MqlTradeRequest &Request, MqlTradeResult &Result )

La synchronisation n'est plus pertinente. Seule la pièce responsable de la correction de Result.deal est mise en évidence.

Et laissez-moi vous demander pourquoi statique?
Raison: