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

 
Mihail Matkovskij #:

J'ai tout écrit ci-dessus. Relisez attentivement les messages. Votre tâche n'est pas quelque chose de difficile. Si vous vous concentrez sur la tâche à accomplir et que vous ne vous chamaillez pas sur le forum, tout ira bien. Bonne chance.

"chamaillerie", c'est le professeur qui entre dans le salon de discussion. Je suis désolé, mais vous êtes plus un arrogant arrogant arrogant qu'un articulé articulé. Ça va passer, j'étais comme ça quand j'avais 13 ans.
 
Выше я всё написал

Ecrit quoi ? A propos du tableau ? J'ai fait ça en premier, ou vous voulez parler de la définition d'un indicateur ? Ou peut-être sur la façon d'ouvrir deux ordres et de mettre le TF du premier dans le second ? Une solution si simple qui mène à un tas de problèmes secondaires.

 
Nerd Trader #:
"bicker" - le professeur est entré dans la salle de chat. Désolé, mais vous mettez votre ego en avant plus que vous n'écrivez sur le sujet. Ça va passer, j'étais comme ça quand j'avais 13 ans.

Il ne s'agit pas de mon importance ou de quoi que ce soit d'autre, il s'agit de l'importance de la connaissance de la programmation, que vous n'avez pas. Si vous étiez à l'université et que vous vous comportiez comme ça en classe, le professeur vous réprimanderait ou vous mettrait dehors. C'est là que vous lui parliez de votre ego... ? :)

Vous n'avez pas de connaissances non pas parce que vous êtes un débutant mais parce que vous êtes ignorant... Lorsque quelqu'un vous dira une fois de plus qu'un EA est différent d'un indicateur, vous continuerez à dire votre "quelle est la différence". :)

J'ai écrit : "L'indicateur ouvre les transactions" et "Le robot a besoin d'une période de transaction". Personne ne répondrait même à une telle question, car elle manque de logique. Mais j'ai essayé d'y répondre. J'ai reçu beaucoup d'accusations et d'insultes. Est-ce que c'est au lieu de "Merci"... ?
 
Nerd Trader sur un serveur distant. Nous pourrions utiliser une prise de courant mais c'est encore difficile pour moi.

Cryptage en magik. J'ai décrit toute la procédure de cryptage et de décryptage dans les articles.

 
Artyom Trishkin #:

Cryptage en magik. J'ai décrit toute la procédure de cryptage et de décryptage dans des articles.

Donnez-moi le lien, il me faut environ 30 minutes pour le trouver à chaque fois) Bonne approche du cryptage.

 
Valeriy Yastremskiy #:

Donnez-moi le lien, il me faut environ 30 minutes pour le trouver à chaque fois) Bonne approche du codage.

Je ne m'en souviens pas moi-même :)

Je vais chercher 30 minutes aussi ...

 
Nerd Trader #:

Cela ne fonctionnera pas parce que le robot fonctionne sur un serveur distant, donc j'écris le TF dans le commentaire, ce serait bien, mais il est écrasé par le ticket lorsque vous fermez une partie du volume.

Faites un nombre magique individuel pour les ordres sur différents délais. Ce nombre ne change pas lors de la fermeture partielle.

//+-----------------------------------------------------------------------------+
//|  Описание : Автоматическая генерация магического номера                     |
//|             Generate Magic Number                                           |
//|             Магический номер генерируется в зависимости от инструмента      |
//|             и таймфрейма                                                    |
//+-----------------------------------------------------------------------------+
int GenerateMagicNumber(int mn)
  {
   int      GenerateMN = 0;
   int      SymNumber = 0;
   int      PMinuts = _Period;
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946
   if(StringFind(_Symbol,"BTC",0)>=0)  //1
      SymNumber = 5;
   if(StringFind(_Symbol,"ETH",0)>=0)  //2
      SymNumber = 8;
   if(StringFind(_Symbol,"BCH",0)>=0)  //3
      SymNumber = 13;
   if(StringFind(_Symbol,"LTC",0)>=0)  //4
      SymNumber = 21;
   if(StringFind(_Symbol,"XRP",0)>=0)  //5
      SymNumber = 34;
   if(StringFind(_Symbol,"SOL",0)>=0)  //6
      SymNumber = 55;
   if(StringFind(_Symbol,"LINK",0)>=0) //7
      SymNumber = 89;
   if(StringFind(_Symbol,"XLM",0)>=0)  //8
      SymNumber = 144;
   if(StringFind(_Symbol,"TRX",0)>=0)  //9
      SymNumber = 233;
   if(StringFind(_Symbol,"ATOM",0)>=0) //10
      SymNumber = 377;
   if(StringFind(_Symbol,"XMR",0)>=0)  //11
      SymNumber = 610;
   if(StringFind(_Symbol,"ADA",0)>=0)  //12
      SymNumber = 987;
   if(StringFind(_Symbol,"DOT",0)>=0)  //13
      SymNumber = 1597;
   if(StringFind(_Symbol,"DOGE",0)>=0) //14
      SymNumber = 2584;

   GenerateMN = (int)(SymNumber+PMinuts+mn);

   return (int)(GenerateMN);
  }
//--- End ---
 
Volodymyr Zubov #:

Créez un numéro magique individuel pour les ordres sur différents délais. Ce chiffre ne change pas en cas de fermeture partielle.

Et pourquoi crypter le symbole dans le numéro magique s'il est déjà lisible à partir de l'ordre/la position ? Et pourquoi de telles valeurs pour le SymNumber ?

 
Volodymyr Zubov #:

Créez un numéro magique individuel pour les ordres sur différents délais. Ce nombre ne change pas lors d'une fermeture partielle.

Merci pour StringFind. Mais ce serait beaucoup plus facile pour moi.

int GenerateMagicNumber(int mn)
  {
   int      GenerateMN = 0;
   int      PMinuts = _Period;

   GenerateMN = (int)(PMinuts+mn);

   return (int)(GenerateMN);
  }

Et j'obtiendrais le symbole de l'ordre plus tard en utilisant OrderSymbol().

 

Bonjour !

Si je reçois un signal (par exemple, Achat), je dois ouvrir un ordre opposé (Vente) une fois que les conditions du lot sont remplies.

J'ai construit le code :

// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();
         
         if((bSignalBuy() == true)&&(GetLotSize()>LotControl))
         vOrderOpenSell();
// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
  
         if((bSignalSell() == true)&&(GetLotSize()>LotControl))
         vOrderOpenBuy();
     }

mais quand une condition se produit

(GetLotSize()>LotControl)

Mais dans ce cas, deux ordres opposés sont ouverts simultanément. Comment puis-je le "réparer" ?