Questions des débutants MQL5 MT5 MetaTrader 5 - page 1431

 

Bonjour !

Comment effectuer un redécoupage forcé des graphiques (analogue à la fonction - clic droit sur le graphique - "Rafraîchir").

Le code ci-dessous ne fonctionne pas, la mise à jour ne se fait pas.


void OnStart()
  {
   long currChart, prevChart = ChartFirst();
   int z = 0, limit = 100;
   while(z < limit && !IsStopped())
     {
      currChart = ChartNext(prevChart);
         ChartRedraw(currChart);
      if(currChart == 0)
         break;
      prevChart = currChart;
      z++;
     };
   ChartRedraw(0);
  }
 

Je souhaite télécharger des Expert Advisors gratuits pour MQL5. Je vais sur Expert Advisors, puis sur Free Expert Advisors. Question : puis-je utiliser tous les Expert Advisors de la section "free" sur mon compte réel ou y a-t-il des restrictions ?

Si un Expert Advisor indique "déjà acheté", il peut être placé sur un compte réel ou non ?

 
mikhail2929 Кравченко compte réel ou y a-t-il des restrictions ? Si un Expert Advisor indique sur lui

"déjà acheté", il peut être placé sur un compte réel ou non ?

Si vous avez téléchargé un Expert Advisor gratuit et qu'il est indiqué qu'il a déjà été acheté, vous pouvez l'utiliser. La question est différente : quelle est sa fiabilité ? Pour cela, avant de l'utiliser sur un compte réel, il est préférable de le tester !

Cordialement, Vladimir.

 
MrBrooklin #:

Si un Expert Advisor gratuit a été téléchargé et que des informations indiquent qu'il a déjà été acheté, vous pouvez l'utiliser. La question est différente : quelle est sa fiabilité ? Pour cela, avant de l'utiliser sur un compte réel, il est préférable de tester l'Expert Advisor !

Cordialement, Vladimir.

Merci Vladimir. Je comprends que les tests et l'optimisation sont nécessaires. C'est-à-dire que tous les Expert Advisors placés dans la section "free" peuvent être téléchargés et installés pour fonctionner sur un compte réel sans restrictions. Ai-je bien compris ?

 
Bonjour, je cherche de l'aide, lors de l'écriture d'un Expert Advisor MT5, j'utilise la classe CTrade pour modifier les TP et SL. Le problème est que la position est initialement définie TP et SL après TP est modifié mais SL devrait rester en place, lors de l'implémentation il s'est avéré comme ceci :
 for(int i = 0; i <= PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }

TP_Buy et TP_Sell sont comptés correctement. Dans le testeur, cela donne l'erreur 4756. CTrade::OrderSend : modify position #4 GBPUSD (sl : 1.35950, tp : 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl : 1.35950, tp : 1.34860 -> sl : 1.35950, tp : 1.34860 [Invalid stops]. Si je comprends bien, il s'agit d'une erreur de paramétrage du SL, l'erreur est probablement due au fait que le SL se trouve au même endroit. Mais c'est ce dont j'ai besoin. Dans le manuel de CTrade, il est écrit que "si le changement n'est pas nécessaire, la valeur précédente". Comment surmonter l'erreur, s'il vous plaît dites-moi.

 
mikhail2929 Кравченко #:

Merci Vladimir. Je comprends que des tests et des optimisations sont nécessaires. C'est-à-dire que tous les Expert Advisors placés dans la section "free" peuvent être téléchargés et installés pour travailler sur un compte réel sans restrictions. Ai-je bien compris ?

Je pense avoir déjà répondu à votre question. Oui, vous avez bien compris.

Cordialement, Vladimir.

 
rexMetaL écriture d'un Expert Advisor MT5, j'utilise la classe CTrade pour modifier les TP et SL. Le problème est que la position est initialement définie TP et SL après TP est modifié mais SL devrait rester en place, lors de la mise en œuvre il s'est avéré que :

TP_Buy et TP_Sell sont comptés correctement. Dans le testeur, cela donne l'erreur 4756. CTrade::OrderSend : modify position #4 GBPUSD (sl : 1.35950, tp : 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl : 1.35950, tp : 1.34860 -> sl : 1.35950, tp : 1.34860 [Invalid stops]. Si je comprends bien, il s'agit d'une erreur de paramétrage du SL, l'erreur est probablement due au fait que le SL se trouve au même endroit. Mais c'est ce dont j'ai besoin. Dans le manuel de CTrade, il est écrit que "si le changement n'est pas nécessaire, la valeur précédente". Comment surmonter l'erreur, s'il vous plaît dites-moi.

Bonjour !

Tout d'abord, enlevez le signe égal dans la boucle pour que ce soit comme ceci :

for(int i = 0; i < PositionsTotal(); i++)

Je n'ai pas regardé votre code plus en détail.

Cordialement, Vladimir.

 
MrBrooklin #:

Bonjour !

Tout d'abord, supprimez le signe égal dans la boucle :

Je n'ai pas regardé votre code plus en détail.

Cordialement, Vladimir.

Rien n'a changé, le problème se situe spécifiquement dans SL/TP.
 for(int i = 0; i < PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }
 
MrBrooklin #:

Bonjour !

Tout d'abord, supprimez le signe égal dans la boucle, de manière à ce qu'elle se présente comme suit :

Je n'ai pas regardé votre code plus loin.

Cordialement, Vladimir.

Merci pour votre temps, le problème a été résolu en arrondissant simplement les SL/TP par instrument. L'erreur était due au fait que les SL/TP étaient extraits de l'indicateur.

Je vous remercie de votre attention.

 
mikhail2929 Kravchenko #:

Merci Vladimir. Je comprends que les tests et l'optimisation sont nécessaires. C'est-à-dire que tous les Expert Advisors placés dans la section "free" peuvent être téléchargés et installés pour fonctionner sur un compte réel sans restrictions. Ai-je bien compris ?

Il est préférable de ne pas le faire :)