Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 96

 
Vadim Podoprigora:

Bonjour !

S'il vous plaît, aidez-moi à écrire un EA.

L'essence de l'Expert Advisor : ouvre 4 ordres de 1 lot.

2 à vendre : usdchf ; eurusd ;

2 à acheter : gbpusd ; usdjpy ;

Lorsque vous atteignez un profit total de 5 pips, fermez toutes les transactions. Et recommencer.

4 lots au total ?

Et s'il n'y a pas de profit ?

 
Vadim Podoprigora:

Bonjour !

S'il vous plaît, aidez-moi à écrire un EA.

L'essence de l'Expert Advisor : ouvre 4 ordres de 1 lot.

2 à vendre : usdchf ; eurusd ;

2 à acheter : gbpusd ; usdjpy ;

Lorsque vous atteignez un profit total de 5 pips, fermez toutes les transactions. Et recommencer à zéro.

Il n'est pas nécessaire de répéter votre question dans plusieurs fils de discussion.

Veuillez contacter Freelance.

 
Andrey Sokolov:

Salutations.

Pouvez-vous me dire comment écrire la condition pour que l'action soit exécutée à l'ouverture d'une nouvelle bougie sur le graphique actuel ?

https://www.mql5.com/ru/articles/159
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 

Bonjour, aidez-moi à comprendre les tableaux !

Je dois remplir un tableau avec l'indicateur MASD. Si je comprends bien, il y a des données : l'indice de la barre, la valeurMODE_MAIN, la valeurMODE_SIGNAL, c'est-à-dire que le tableau devrait être de type tridimensionnel ( a [] [] []), ou quoi? Si vous pouvez donner un exemple.

 

Sergey, avez-vous déjà utilisé ce code vous-même ?

L'article est généralement bon, mais c'est...

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

très dangereux. Pour que cela fonctionne, vous devez, comme le recommande le batteur, "secouer" l'historique périodiquement. Je n'ai pas précisé à quel endroit.

En général, après beaucoup de souffrance, j'ai conclu qu'il est préférable d'utiliser la fonction CopyRates()

Les messages concernant les erreurs éventuelles sont remplis par chacun d'entre nous si nous le voulons.

bool newBar()
{
static datetime timeLastBar;
  MqlRates mqlRates[];
   int s = 0;
    do
     {
      s++;
     }
    while(CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, mqlRates) < 0 && s < 7);
   bool ret = timeLastBar != mqlRates[0].time;
   if(ret)
    timeLastBar = mqlRates[0].time;
   return(ret);
}/*******************************************************************/
 
Alexey Viktorov:

Sergey, avez-vous déjà utilisé ce code vous-même ?

L'article est généralement bon, mais c'est...

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

très dangereux. Pour que cela fonctionne, vous devez, comme le recommande le batteur, "secouer" l'historique périodiquement. Le lieu n'a pas été précisé.

Alexey, dis-moi, quand as-tu rencontré des erreurs en l'utilisant ? Vous en avez déjà eu un ?

J'utilise moi-même cette méthode et je n'ai pas rencontré de problème. Eh bien, peut-être que je dois encore le faire ?

J'aimerais avoir des explications - pour ainsi dire... :)

Où le batteur a-t-il dit ça ?

 
Artyom Trishkin:

Alexei, dis-moi, quand as-tu rencontré des erreurs avec cette utilisation ? L'avez-vous déjà fait ?

Parce que j'utilise moi-même cette méthode et que je n'ai pas encore rencontré de problème. Eh bien, peut-être que je dois encore le faire.

J'aimerais avoir des explications - pour ainsi dire... :)

Où Drubashka a-t-il dit une telle chose ?

https://www.mql5.com/ru/forum/89213

Il y a huit pages de chamailleries. Et pas seulement drubashka, mais Slawa dit que

Slawa:

Où voyez-vous un comportement inadéquat de cette fonction ? Avez-vous lu attentivement la documentation?

Renvoie des informations sur l'état des données historiques. Ne met pas à jour les informations, n'initie pas l'échange de données. Il suffit de rendre ce qui est là pour le moment.

 
Artyom Trishkin:

Alexei, dis-moi, quand as-tu rencontré des erreurs avec cette utilisation ? L'avez-vous déjà fait ?

Parce que j'utilise moi-même cette méthode et que je n'ai pas encore rencontré de problème. Eh bien, peut-être que je dois encore le faire.

J'aimerais avoir des explications - pour ainsi dire... :)

Où le batteur a-t-il dit ça ?

Et voilà le tressaillement.

Vladimir Karputov:
Cela n'a pas fonctionné sur un symbole dans un terminal (sur l'échelle de temps M15) - je suis sûr à 99% que le problème est qu'en utilisant une autre échelle de temps, je dois "secouer" l'historique tout le temps. Je pense que c'est mieux de le faire par CopyTime().
Le problème n'est pas résolu par le chat par le lieu de causalité.
 
Artyom Trishkin:

Alexei, dis-moi, quand as-tu rencontré des erreurs avec cette utilisation ? L'avez-vous déjà fait ?

Pour autant que je me souvienne, il se peut qu'il ne renvoie pas ce qui est attendu si le TF est plus grand que le TF actuel.
 
Bonjour, j'ai une question sur MT5.

Par exemple, dans le terminal MT5 il y a quelques Expert Advisors (MACD Sample et Moving Averages), mais si vous voulez changer le handle de l'indicateur dans le code de ces Expert Advisors et mettre un TF spécifique, par exemple PERIOD_H4, au lieu de "_Period", alors dans le test par les prix ouverts du TF plus élevé, l'erreur de chargement de l'indicateur suivant se produit : cannot load indicator 'MACD' [4805] and as a result : tester stopped because OnInit failed. Quelles sont vos opinions ? Peut-être que je fais quelque chose de mal ? Est-il possible de coder le conseiller expert de manière à ce qu'il soit testé pour les prix ouverts de n'importe quel TF ?

J'ai essayé d'utiliser l'indicateur comme un indicateur personnalisé, l'erreur est la même.

Merci d'avance pour vos commentaires.

int OnInit(void)
{
//--- préparer la classe de commerce pour contrôler les positions si le mode de couverture est actif.
ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) ;
ExtTrade.SetExpertMagicNumber(MA_MAGIC) ;
ExtTrade.SetMarginMode() ;
//--- Indicateur de moyenne mobile
ExtHandle=iMA(_Symbol,PERIOD_H4,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE) ;
si(ExtHandle==INVALID_HANDLE)
{
printf("Erreur lors de la création de l'indicateur MA") ;
return(INIT_FAILED) ;
}
//--- ok
return(INIT_SUCCEED) ;
}