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

 
Yurij Kozhevnikov:

Lesvariables statiques ne sont pas réinitialisées lors du changement des paramètres d'entrée, de la période du graphique, etc.

N'y a-t-il pas une sorte d'astuce d'oreille pour les réinitialiser de force ? Plus long chemin grossièrement imaginé, n'y a-t-il pas un chemin simple et court ?

Initialiser à oninit et ne pas les rendre statiques. Soudain,

 
Merci. Un sourire vaut toujours mieux qu'un regard négatif.
 
Bonjour, le serveur du MT5 d'AMP Global est en panne. Rescanner le réseau n'aide pas. Le fait de se reconnecter n'aide pas non plus.
Dossiers :
 

Salud !

Que signifient "fichier ex4 invalide (7)" et "échec de l'initialisation globale" ?

 
Yurij Kozhevnikov:
Merci. Un sourire est toujours mieux qu'un négatif.
Je ne me souviens pas avoir dit quoi que ce soit de négatif qui n'était pas intentionnel, mais peu importe.

MQL n'est pas tout à fait (pas du tout) C plus. Les membres statiques de la classe ou les variables ne doivent pas se trouver dans les fonctions. Ils causent beaucoup de problèmes et ces problèmes sont ensuite difficiles à localiser.

Seulement au plus haut niveau, dans une EA spécifique, en réfléchissant bien.
 

Salut ! !!

  1. Il existe un tableau de valeurs - 500 MA pour chaque barre.

Comment calculer les harnais qui en résultent ?:

- Quand vous changez de direction ?

On m'a conseillé de me plonger dans les cartes Kohonen, eh bien, je n'ai pas réussi à m'y retrouver !

 
Top2n:

Bonjour !!!

  1. Il existe un tableau de valeurs - 500 MA pour chaque barre.

Comment calculer les harnais qui en résultent ?:

- Quand vous changez de direction ?

On m'a conseillé de me plonger dans les cartes Kohonen, mais je n'ai pas réussi à m'y retrouver !

quelles sont vos mA ?

Si c'est un SMA, vous pouvez probablement vous en sortir avec l'arithmétique de l'école. Il suffit de se souvenir de la formule :-)

 

Salud !
Il existe un code qui traduit un stop en Breakeven (pour les ventes, par exemple) :

if(PositionGetDouble(POSITION_SL)>PositionGetDouble(POSITION_PRICE_OPEN) && ask()<PositionGetDouble(POSITION_PRICE_OPEN)-BreakEven) {
                     //Comment("Modify sell");
                     MqlTradeRequest request;
                     MqlTradeResult  result;
                     ulong  position_ticket  = PositionGetTicket(i);// тикет позиции
                     string position_symbol  = PositionGetString(POSITION_SYMBOL); // символ
                     int    digits           = (int)SymbolInfoInteger(position_symbol,SYMBOL_DIGITS); // количество знаков после запятой

                     double sl               = PositionGetDouble(POSITION_PRICE_OPEN);  // Stop Loss позиции

                     double tp               = PositionGetDouble(POSITION_TP);  // Take Profit позиции
                     ENUM_POSITION_TYPE type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);  // тип позиции
                     ZeroMemory(request);
                     ZeroMemory(result);
                     request.action          = TRADE_ACTION_SLTP; // тип торговой операции
                     request.position        = position_ticket;   // тикет позиции
                     request.symbol          = position_symbol;     // символ
                     request.sl              = NormalizeDouble(sl,digits);                // Stop Loss позиции
                     request.tp              = tp;                // Take Profit позиции
                     request.magic = Magic;

                     //--- вывод информации о модификации
                     PrintFormat("BreakEven POSITION_TYPE_SELL Modify #%I64d %s %s",position_ticket,position_symbol,EnumToString(type));
                     //--- отправка запроса
                     if(!OrderSend(request,result))
                        PrintFormat("BreakEven POSITION_TYPE_SELL OrderSend error %d",GetLastError());  // если отправить запрос не удалось, вывести код ошибки
                     //--- информация об операции
                     PrintFormat("BreakEven POSITION_TYPE_SELL retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
                  }

Si la ligne de définition de l'arrêt se situe au niveau du prix ouvert comme suit :

double sl               = PositionGetDouble(POSITION_PRICE_OPEN);  // Stop Loss позиции

alors ok, il transfère l'arrêt sans aucun problème.

Mais comment puis-je ajouter ici pour que ce ne soit pas au prix d'ouverture, mais en dessous :

double sl               = PositionGetDouble(POSITION_PRICE_OPEN)-SymbolInfoDouble(_Symbol,SYMBOL_POINT);  // Stop Loss позиции

ou :

double sl               = PositionGetDouble(POSITION_PRICE_OPEN)-1.0;  // Stop Loss позиции (для РТС например и других фондовых штуковин)

Puis, immédiatement, les problèmes surgissent. Dit, ce sont de mauvais arrêts :

2020.07.29 13:06:24.127 Trades  '723763': failed modify #16003799 sell 1 RTS-9.20 sl: 126900, tp: 124470 -> sl: 126379, tp: 124470 [Invalid stops]

Bien que vous puissiez déplacer les mains et en dessous du stop. Veuillez me conseiller sur la manière de résoudre ce problème.

 

Bonjour à tous !


Je suis un débutant - je viens de me connecter au courtier "ouverture" - j'ai installé MT5 sur mon iPhone, je ne peux pas me connecter à mon compte de trading. Mon iPhone nécessite un certificat. Mon courtier m'a également envoyé le certificat. Je ne sais pas comment l'installer sur l'iPhone. Pouvez-vous me dire comment l'installer ? Merci d'avance !

Dossiers :
 
Bonjour, comment peut-on définir une condition dans OnTimer ? Le Time[0] TimeCorrect peut-il être comparé ?