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

 
Vladimir Karputov:

ENUM_TRADE_REQUEST_ACTIONS

Identifiant

Description

TRANSACTION_ACTION_DEAL

Placez un ordre de transaction pour une exécution immédiate avec les paramètres spécifiés (ordre de marché).

ACTION_COMMERCIALE_EN_ATTENTE

Placer un ordre de transaction pour l'exécution dans des conditions spécifiées (ordre en attente).

Exemple de l'opération TRADE_ACTION_PENDING pour placer un ordre en attente :

#property description "Example of placing pending orders"
#property script_show_inputs
#define  EXPERT_MAGIC 123456                             // MagicNumber of the expert
input ENUM_ORDER_TYPE orderType=ORDER_TYPE_BUY_LIMIT;   // order type
//+------------------------------------------------------------------+
//| Placing pending orders                                           |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- declare and initialize the trade request and result of trade request
   MqlTradeRequest request={0};
   MqlTradeResult  result={0};
//--- parameters to place a pending order
   request.action   =TRADE_ACTION_PENDING;                             // type of trade operation
   request.symbol   =Symbol();                                         // symbol
   request.volume   =0.1;                                              // volume of 0.1 lot
   request.deviation=2;                                                // allowed deviation from the price
   request.magic    =EXPERT_MAGIC;                                     // MagicNumber of the order
   int offset = 50;                                                    // offset from the current price to place the order, in points
   double price;                                                       // order triggering price
   double point=SymbolInfoDouble(_Symbol,SYMBOL_POINT);                // value of point
   int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);                // number of decimal places (precision)
   //--- checking the type of operation
   if(orderType==ORDER_TYPE_BUY_LIMIT)
     {
      request.type     =ORDER_TYPE_BUY_LIMIT;                          // order type
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;        // price for opening 
      request.price    =NormalizeDouble(price,digits);                 // normalized opening price 
     }
   else if(orderType==ORDER_TYPE_SELL_LIMIT)
     {
      request.type     =ORDER_TYPE_SELL_LIMIT;                          // order type
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point;         // price for opening 
      request.price    =NormalizeDouble(price,digits);                  // normalized opening price 
     }
   else if(orderType==ORDER_TYPE_BUY_STOP)
     {
      request.type =ORDER_TYPE_BUY_STOP;                                // order type
      price        =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening 
      request.price=NormalizeDouble(price,digits);                      // normalized opening price 
     }
   else if(orderType==ORDER_TYPE_SELL_STOP)
     {
      request.type     =ORDER_TYPE_SELL_STOP;                           // order type
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;         // price for opening 
      request.price    =NormalizeDouble(price,digits);                  // normalized opening price 
     }
   else Alert("This example is only for placing pending orders");   // if not pending order is selected
//--- send the request
   if(!OrderSend(request,result))
      PrintFormat("OrderSend error %d",GetLastError());                 // if unable to send the request, output the error code
//--- information about the operation
   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
  }
//+------------------------------------------------------------------+
 
Vladimir Karputov:

ENUM_TRADE_REQUEST_ACTIONS

Identifiant

Description

TRANSACTION_ACTION_DEAL

Placez un ordre de transaction pour une exécution immédiate avec les paramètres spécifiés (ordre de marché).

ACTION_COMMERCIALE_EN_ATTENTE

Placer un ordre de transaction pour l'exécution dans des conditions spécifiées (ordre en attente).

Merci !

 
Vladimir Karputov:

Exemple de l'opération TRADE_ACTION_PENDING pour placer un ordre en attente :

Vladimir, tu ne peux pas l'écrire en russe ?
 
Artyom Trishkin:
Vladimir, tu ne peux pas l'écrire en russe ?

Tu ne peux pas. Parce que j'ai cité l'intégralité de la référence. Sinon, c'est peine perdue : tout le monde a un "ticket" et certains ont des "tickets". C'est pourquoi les fonctions, l'aide et les citations de l'aide sont en anglais.

 
Vladimir Karputov:

Tu ne peux pas. Parce que j'ai cité la référence complète. Sinon, c'est peine perdue : tout le monde a un "ticket" et certains ont des "tickets". C'est pourquoi les fonctions, la référence et les citations dans la référence sont en anglais.

Et ils ont des "tickets" juste parce qu'ils commencent à traduire avec google :)
Dans l'aide officielle russe, il y a des "tickets".
En forêt-da-drow juste à partir de traductions libres.
 

Bonjour à tous ! Je pense que la question s'adresse principalement aux professionnels (comme il s'avère). Cela fait une semaine et une seule question sur le code.

Par exemple - nous savons que la bougie M5 contient 5 bougies M1 (par exemple, 00:00, 00:01, 00:02, 00:03 et 00:04). De plus, nous ne considérerons que cette conjonction - c'est-à-dire que nous exécutons l'indicateur sur M1 et voulons voir les lectures de l'indicateur à partir de M5.

C'est-à-dire que pour afficher correctement les données du TF du milieu sur le TF du bas, je devrais passer en boucle les 5 barres du TF du bas au fur et à mesure qu'elles apparaissent. C'est-à-dire que la première barre apparaît à 00:00, puis 00:01 etc. jusqu'à 00:04 et après cela la suivante apparaît. Cela signifie que le cycle doit être de 0 à 4 - c'est le maximum, tandis que les trous dans l'historique ne sont pas considérés. Le problème est que j'obtiens le cycle de 0 à 5, et je n'ai pas assez de logique pour le faire jusqu'à 4 ! Croyez-moi, cela fait une semaine que je me débats avec ce problème et je vous demande vraiment de m'aider. Ci-dessous un code très tronqué où la boucle va à 5 au lieu de 4. Je veux que ce soit 4 !!!!!

#property copyright ""
#property link      ""
#property version   ""
#property indicator_chart_window

//+----------------------------------------------+
//| Входные параметры индикатора                 |
//+----------------------------------------------+
input ENUM_TIMEFRAMES TF=PERIOD_M5;
int LastCountBar;
datetime tt;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,    // количество истории в барах на текущем тике
                const int prev_calculated,// количество истории в барах на предыдущем тике
                const datetime &time[],
                const double &open[],
                const double& high[],     // ценовой массив максимумов цены для расчёта индикатора
                const double& low[],      // ценовой массив минимумов цены  для расчёта индикатора
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   datetime IndTime[1];
//--- объявления локальных переменных
   int limit,bar;
//--- индексация элементов в массивах как в таймсериях
   ArraySetAsSeries(time,true);
//--- расчёт стартового номера first для цикла пересчёта баров
   if(prev_calculated>rates_total || prev_calculated<=0) // проверка на первый старт расчёта индикатора
     {
      limit=100; // стартовый номер для расчёта всех баров
      LastCountBar=limit;
     }
   else
      limit=LastCountBar+rates_total-prev_calculated; // стартовый номер для расчёта новых баров

//--- основной цикл расчёта индикатора
   for(bar=limit; bar>=0; bar--)
     {
      //--- копируем вновь появившиеся данные в массив IndTime
      if(CopyTime(Symbol(),TF,time[bar],1,IndTime)<=0)
         return(0);
         
      if(time[bar]>=IndTime[0] && time[bar+1]<IndTime[0])
        {
         LastCountBar=bar;
         //--- Далее проводим вычисления индикатора МТФ ...............
         Print(bar," ",IndTime[0]);
         //---
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Comment ajouter une fenêtre d'édition de la vue en liste ?

https://www.mql5.com/en/docs/standardlibrary/controls/clistview

J'ai la bibliothèque ci-dessus. Je veux ajouter une boîte d'édition avec une étiquette dans cette liste. Pouvez-vous me dire comment je peux faire cela ? J'ai essayé, mais ça ne marche pas.

Documentation on MQL5: Standard Library / Panels and Dialogs / CListView
Documentation on MQL5: Standard Library / Panels and Dialogs / CListView
  • www.mql5.com
//|                                             ControlsListView.mq5 | //|                        Copyright 2017, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| defines                                                          |  INDENT_LEFT                         (11)      ...
 
Artyom Trishkin:
Et ils ont des "tickets" juste parce qu'ils commencent à traduire avec google :)
Dans la référence officielle russe "tickety-boo".
Into the woods-da-drova juste à partir de traductions libres.
OK, j'avoue : je me suis fait avoir. Réponse rapide et pas de changement de langue de l'aide 😎.
 
La question est la suivante. Puis-je ouvrir 2 tableaux (ou plus) en appuyant sur un bouton de manière à ce qu'ils soient positionnés verticalement et occupent également tout l'écran ?
 
Vladimir Karputov:
OK, j'avoue : je me suis fait avoir. Réponse rapide et pas de changement de langue de l'aide 😎.

Copie cela ;)