Questions des débutants MQL4 MT4 MetaTrader 4 - page 93

 
seny:

Aidez-moi, voici un exemple

Ça marche comme ça...

mais pas comme ça...

comment écrire dans le tampon via la variable k ?

double k=0 ;
 
Alekseu Fedotov:
double k=0 ;

Cela n'aide pas ! pas dans le corps du code, pas dans l'initialisation, pas dans le démarrage...

 
seny:

ça marche comme ça... et pas comme ça...

Pour comprendre, il faut simplifier. Comparez deux expressions : 100/10/10 = 1 et k=10/10 100/k = 100 mais si k=10*10, alors c'est correct.

 
Salutations. Pourriez-vous me dire comment faire pour que la timeline s'étende vers le futur lorsque le décalage de la timeline est activé ?
 
Andrey Sokolov:
Salutations. Pourriez-vous me dire comment étendre la ligne de temps pour le futur lorsque le décalage du graphique est activé ?

Tu ne peux pas. Vous pouvez uniquement dessiner vous-même les lignes verticales - elles indiquent l'heure en bas.

 

Bonjour. Pouvez-vous me dire comment rédiger une condition selon laquelle : si un ordre ouvert est fermé à TakeProfit - supprimer tous les ordres au marché restants ; sinon (fermé à Stop Loss) - placer le même ordre exact (avec les mêmes Stop Loss et Take Profit) comme un ordre en attente.

 
6737998:

Bonjour. Pouvez-vous me dire comment rédiger une condition selon laquelle : si un ordre ouvert a été clôturé avec un profit, il faut supprimer tous les ordres au marché restants ; sinon (clôturé avec un stoploss), il faut placer le même ordre exact (avec les mêmes stoploss et takeprofit) en tant qu'ordre en attente.


Je vous l'ai dit dans un autre fil - travaillez avec l'histoire et écrivez les opérateurs dont vous avez besoin pour le faire.

 

Ou vous pouvez écrire un article dans la section "Articles" sur un phénomène de forex,
et en bas de l'article, une publicité pour un indicateur payant du marché, un indicateur qui peut être utilisé pour étudier ce phénomène. ?

 

Bonjour à tous, j'ai rencontré un problème...

La tâche consiste à modifier de manière interactive un EA sur un graphique. Je n'envisage pas une option avec plusieurs graphiques et plusieurs EA.

Je sais qu'il est possible d'utiliser ChartApplyTemplate et que cela fonctionne, mais parfois il renvoie une réponse erronée au motif qu'il ne peut pas placer une commande dans la file d'attente.

Qu'est-ce que cette file d'attente, où puis-je me renseigner à ce sujet ou comment puis-je effacer cette file d'attente, puisque ma tâche doit être prioritaire sur toutes les autres ?

Merci d'avance.

PS : Cela ne se produit pas avec le changement manuel de modèle. Peut-être qu'alors, par le biais de winAPI, essayez... Il faut creuser, je n'ai jamais travaillé avec ça.

ChartApplyTemplate - Chart Operations - MQL4 Reference
ChartApplyTemplate - Chart Operations - MQL4 Reference
  • docs.mql4.com
ChartApplyTemplate - Chart Operations - MQL4 Reference
 
Vasili Taucci:

Bonjour à tous, j'ai rencontré un problème...

La tâche consiste à modifier de manière interactive un EA sur un graphique. Je n'envisage pas une option avec plusieurs graphiques et plusieurs EA.

Je sais qu'il est possible d'utiliser ChartApplyTemplate et que cela fonctionne, mais parfois il renvoie une réponse erronée au motif qu'il ne peut pas placer une commande dans la file d'attente.

Qu'est-ce que cette file d'attente, où puis-je me renseigner à ce sujet ou comment puis-je effacer cette file d'attente, puisque ma tâche doit être prioritaire sur toutes les autres ?

Merci d'avance.

PS : Cela ne se produit pas avec le changement manuel de modèle. Peut-être qu'alors, par le biais de winAPI, essayez... Il faut creuser, je n'ai jamais travaillé avec ça.

Jetez un coup d'oeil à ça. C'est pour MT5, mais le principe est tout à fait similaire pour MT4. Lorsque vous utilisez ChartApplyTemplate vous avez besoin d'une synchronisation obligatoire, ce que je fais dans le ticket comme suit

  static bool TemplateApply( const long Chart_ID, const string &Str, const bool Sync = true )
  {
    string TmpStr = Str;

    const bool SyncFlag = (Sync && Chart_ID && (Chart_ID != ::ChartID()) && !::IsStopped());

    if (SyncFlag)
    {
      const color ColorStopLevel = (color)::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL);

      if ((bool)(ColorStopLevel >> 24))
        ::ChartSetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, ColorStopLevel & 0xFFFFFF);

      const int NewColorStopLevel = (int)EXPERT::StringBetween(TmpStr, EXPERT_STOPLEVEL, STRING_END) | (0x01 << 24);

      TmpStr = Str;
      EXPERT::StringReplace(TmpStr, EXPERT_STOPLEVEL, STRING_END, EXPERT_STOPLEVEL + (string)NewColorStopLevel + STRING_END);
    }

    short Data[];
    const bool Res = ::StringToShortArray(TmpStr, Data, 0, ::StringLen(TmpStr)) &&
                     ::FileSave(FILENAME, Data) && ::ChartApplyTemplate((ulong)Chart_ID, FILENAME);

    if (Res && SyncFlag)
    {
      long Value;

      while ((!::IsStopped() && ::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, 0, Value) && (!(bool)((int)Value >> 24))))
        ::Sleep(0);

      ::ChartSetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, (int)Value & 0xFFFFFF);
    }

    return(Res);
  }
Expert
Expert
  • votes : 12
  • 2017.08.28
  • fxsaber
  • www.mql5.com
Библиотека чтения/записи параметров произвольных советников.
Raison: