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

 
Artyom Trishkin:

Les questions sont des réponses étranges difficiles par le courant de pensée faisant ressortir quelque chose d'impossible à garder dans la bouillie du courant de pensée s'il vous plaît....

Et dans quelle langue communiquez-vous ?

 
Alexey Viktorov:

Quelle est la langue dans laquelle vous communiquez ?

Dans une langue que le questionneur comprend, je pense :)
 

Bonjour, pourriez-vous m'indiquer où je peux obtenir un SCRIPT gratuit pour trader une fausse rupture de niveau ?

 
barmaley1:

Bonjour, pourriez-vous m'indiquer où je peux obtenir un SCRIPT gratuit pour trader une fausse rupture de niveau ?

Le script ne sera d'aucune aide.

 

Bonjour les gars, pourriez-vous me conseiller ?

Chaque fois que j'ouvre un ordre, je dois me souvenir de certaines des données de l'ordre ouvert pour pouvoir travailler avec lui plus tard.

Je pense que j'ai besoin de sauvegarder tout ça dans une structure :

- prix d'entrée

- si le SL a été déplacé vers le seuil de rentabilité.

- le prix de pointe pour le calcul d'un renversement


À chaque tick, vous devez effectuer des calculs pour chacun des ordres ouverts.

Veuillez m'indiquer comment le faire correctement.

 
Decromor:

Bonjour, pourriez-vous me conseiller ?

Chaque fois que j'ouvre un ordre, je dois me souvenir de certaines des données de l'ordre ouvert pour pouvoir travailler avec lui plus tard.

Je pense que j'ai besoin de sauvegarder tout ça dans une structure :

- prix d'entrée

- si le SL a été déplacé vers le seuil de rentabilité.

- le prix de pointe pour le calcul d'un renversement


À chaque tick, vous devez effectuer des calculs pour chacun des ordres ouverts.

Veuillez m'indiquer comment le faire correctement.

En fait, vous l'avez décrit vous-même)

Dans le code, cela ressemblerait à ceci

   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS))          
         continue;
         
      if (OrderSymbol() != Symbol())
         continue;  
      
      if (m_nMagicNumber != OrderMagicNumber()) 
         continue;

      if (OrderType() == OP_BUY)
         if (!SaveOrderInfo(m_stBuySeries))
            return false;

      if (OrderType() == OP_SELL)
         if (!SaveOrderInfo(m_stSellSeries))
            return false;
   }

m_nMagicNumber - ID des ordres du conseiller expert,

m_stBuySeries et m_stSellSeries - structures qui stockent des données sur tous les ordres du type spécifié trouvés. Par exemple, vous pouvez les décrire de la manière suivante :

struct SeriesInfo
{
   int            nLastOrderTicket;                                                                // Тикет последнего открытого ордера
   int            nOrdersCnt;

   double         fSeriesTotalProfit;
   double         fVolumeSumm;
   double         fMinOrdersPrice;
   double         fMaxOrdersPrice;
   datetime       dtLastOrderTime;                                                                 // Время открытия последнего ордера
   OrderInfo      starrOrderInfo[];   
   
   bool           Init()
   {  
      nOrdersCnt = 0;
      nLastOrderTicket = 0;
      fSeriesTotalProfit = 0.0;
      fVolumeSumm = 0.0;
      fMinOrdersPrice = DBL_MAX;
      fMaxOrdersPrice = 0.0;
      dtLastOrderTime = 0;
      return ArrayResize(starrOrderInfo, 0, 100) == 0;
   }
};

La fonction SaveOrderInfo pour de telles structures serait la suivante :

bool SaveOrderInfo(SeriesInfo &stSeriesInfo)
{
   // Проверка возможности добавления ордера в серию
   int nTotal = ArraySize(stSeriesInfo.starrOrderInfo);
   if (ArrayResize(stSeriesInfo.starrOrderInfo, nTotal + 1, 100) < 0)
   {
      Alert(MQLInfoString(MQL_PROGRAM_NAME), (TerminalInfoString(TERMINAL_LANGUAGE) == "Russian")? ": нехватка памяти для записи данных об очередном ордере. Эксперт отключен." : 
                                                                                                   ": unable to allocate the memory for next order. Expert is turned off.");
      return false;
   }
   
   // Запись ордера
   stSeriesInfo.starrOrderInfo[nTotal].nType = OrderType();
   stSeriesInfo.starrOrderInfo[nTotal].nTicket = OrderTicket();
   stSeriesInfo.starrOrderInfo[nTotal].fVolume = OrderLots();
   stSeriesInfo.starrOrderInfo[nTotal].fTP = OrderTakeProfit();
   stSeriesInfo.starrOrderInfo[nTotal].fSL = OrderStopLoss();
   stSeriesInfo.starrOrderInfo[nTotal].fOpenPrice = OrderOpenPrice();
   stSeriesInfo.starrOrderInfo[nTotal].fProfit = OrderProfit() + OrderSwap() + OrderCommission();
   stSeriesInfo.starrOrderInfo[nTotal].dtOpenTime = OrderOpenTime();
   
   stSeriesInfo.fSeriesTotalProfit += stSeriesInfo.starrOrderInfo[nTotal].fProfit;
   stSeriesInfo.fVolumeSumm += stSeriesInfo.starrOrderInfo[nTotal].fVolume;
   stSeriesInfo.fMinOrdersPrice = MathMin(stSeriesInfo.fMinOrdersPrice, OrderOpenPrice());
   stSeriesInfo.fMaxOrdersPrice = MathMax(stSeriesInfo.fMaxOrdersPrice, OrderOpenPrice());
   
   if (OrderOpenTime() > stSeriesInfo.dtLastOrderTime)
   {
      stSeriesInfo.dtLastOrderTime = OrderOpenTime();
      stSeriesInfo.nLastOrderTicket = OrderTicket();
   }
   
   return true;
}
 

légèrement hors sujet.

https://www.finam.ru/profile/tovary/aluminum/export/?market=24

J'ai le dossier.

J'essaie d'en faire un symbole.

le résultat est décevant.

Merci.

 
Ihor Herasko:

En gros, vous l'avez décrit vous-même))

Dans le code, cela ressemblerait à ce qui suit :

m_nMagicNumber - ID des ordres du conseiller expert,

m_stBuySeries et m_stSellSeries - structures qui stockent des données sur tous les ordres du type spécifié trouvés. Par exemple, vous pouvez les décrire de la manière suivante :

La fonction SaveOrderInfo pour de telles structures serait la suivante :

Merci beaucoup pour cette aide si détaillée !

 

Bonjour !

Les gars, pouvez-vous me dire le code sur la façon de lier un EA à un seul compte (pour la dernière mise à jour).

Merci beaucoup.

 
Aleksandr Lishchenko:

Bonjour !

Les gars, pouvez-vous me dire le code sur la façon de lier un EA à un seul compte (pour la dernière mise à jour).

Merci beaucoup.

Simple :

if (AccountInfoInteger(ACCOUNT_LOGIN) != <номер счета>)
   return;