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

 
Je comprends ce qu'est _Digits_.
Mais comment obtenir cette valeur pour une autre paire de devises ?
Pouvez-vous me le dire ?
 
User_mt5:
Je comprends ce qu'est _Digits_.
Comment l'obtenir pour une autre paire de devises ?
S'il vous plaît, aidez-moi.

SYMBOL_DIGITS

Nombre de chiffres après le point décimal

int

 
Bonjour !!! Pouvez-vous me dire comment enregistrer la structure complétée

MqlTradeRequest mrequest ? ??

Peut-être existe-t-il une fonction dans MQL5 ? Je veux comprendre pourquoi je reçois ce message 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alerte : La demande de placement d'un ordre de vente a échoué - code d'erreur:4756


//--- собираем все вместе
   if(Sell_Condition_1 && Sell_Condition_2)
     {
      if(Sell_Condition_3 && Sell_Condition_4)
        {
         // есть ли в данный момент открытая позиция на продажу?
         if(Sell_opened)
           {
            Alert("Уже есть позиция на продажу!!!");
            return;    // не добавлять к открытой позиции на продажу
           }
         mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
         mrequest.price = NormalizeDouble(latest_price.bid,_Digits);           // последняя цена Bid
         mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
         mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
         mrequest.symbol = _Symbol;                                            // символ
         mrequest.volume = Lot;                                                // количество лотов для торговли
         mrequest.magic = EA_Magic;                                            // Magic Number
         mrequest.type= ORDER_TYPE_SELL;                                       // ордер на продажу
         mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
         mrequest.deviation=100;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
           {
            Alert("Ордер Sell успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Sell не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
     }
   return;
  }

 
Kira27:
Bonjour !!! Pouvez-vous me dire comment enregistrer la structure complétée

MqlTradeRequest mrequest ? ??

Peut-être existe-t-il une fonction dans MQL5 ? Je veux comprendre pourquoi je reçois ce message 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alerte : La demande de placement d'un ordre de vente a échoué - code d'erreur:4756


https://www.mql5.com/ru/forum/327894

Et voici la transcription : ici
Ошибка 4756
Ошибка 4756
  • 2019.12.06
  • www.mql5.com
Всем добрый день. Помогите пожалуйста разобраться. При добавлении эксперта в маркет, во время тестирования выходит это - -- NEW_ORDER(): lot=0...
 
Pouvez-vous me dire
comment supprimer par programme la boîte de dialogue d' alerte de la fenêtre ?
 
Veuillez me dire comment interpréter cette ligne de code : CParabolicStop *SARTrailing[] ;
CNRTRStop *NRTRTrailing[] ; Je comprends que CParabolicStop et CNRTRStop sont des classes, * pointeur, tableaux SARTrailing[] et NRTRTrailing[] Mais que signifient ces chaînes ? L'article de ce conseiller https://www.mql5.com/en/articles/134 il est dit que c'est --- Comment dois-je comprendre cela ? Et où sont créés exactement ces tableaux ? Puis-je vraiment charger des classes dans des tableaux, ou des objets de classes ? Et à quoi cela sert-il en termes pratiques ?
//+------------------------------------------------------------------+
//|                                          Sample_TrailingStop.mq5 |
//|                                        MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#include <Sample_TrailingStop.mqh> // подключение класса трейлинга

//--- input parameters
input double   SARStep     =  0.02;    // Шаг Parabolic
input double   SARMaximum  =  0.02;    // Максимум Parabolic
input int      NRTRPeriod  =  40;      // Период NRTR
input double   NRTRK       =  2;       // Коэффициент NRTR

string Symbols[]={"EURUSD","GBPUSD","USDCHF","USDJPY"};

CParabolicStop *SARTrailing[];
CNRTRStop *NRTRTrailing[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ArrayResize(SARTrailing,ArraySize(Symbols));  // изменение размера в соответствии с количеством используемых символов
   ArrayResize(NRTRTrailing,ArraySize(Symbols)); // изменение размера в соответствии с количеством используемых символов   
   for(int i=0;i<ArraySize(Symbols);i++)
     { // для всех символов
      SARTrailing[i]=new CParabolicStop(); // создание экземпляра класса CParabolicStop
      SARTrailing[i].Init(Symbols[i],PERIOD_CURRENT,false,true,true,5,15+i*17,Silver,Blue); // инициализация экземпляра класса CParabolicStop 
      if(!SARTrailing[i].SetParameters(SARStep,SARMaximum))
        { // установка параметров экземпляра класса CParabolicStop 
         Alert("trailing error");
         return(-1);
        }
      SARTrailing[i].StartTimer(); // запуск таймера
      //----
      NRTRTrailing[i]=new CNRTRStop(); // создание экземпляра класса CNRTRStop
      NRTRTrailing[i].Init(Symbols[i],PERIOD_CURRENT,false,true,true,127,15+i*17,Silver,Blue); // инициализация экземпляра класса CNRTRStop 
      if(!NRTRTrailing[i].SetParameters(NRTRPeriod,NRTRK))
        { // установка параметров экземпляра класса CNRTRcStop 
         Alert("trailing error");
         return(-1);
        }
      NRTRTrailing[i].StartTimer(); // запуск таймера         
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].Deinit();
      NRTRTrailing[i].Deinit();
      delete(SARTrailing[i]);
      delete(NRTRTrailing[i]);
     }

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].DoStoploss();
      NRTRTrailing[i].DoStoploss();
     }

  }
//+------------------------------------------------------------------+

void OnTimer()
  {
   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].Refresh();
      NRTRTrailing[i].Refresh();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam
                  )
  {

   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].EventHandle(id,lparam,dparam,sparam);
      NRTRTrailing[i].EventHandle(id,lparam,dparam,sparam);
     }
  }
//+------------------------------------------------------------------+

Et si vous n'êtes pas dur, veuillez préciser où il est écrit que cet astérisque est un pointeur * dans la documentation. Je l'ai vu une fois, mais j'ai déjà parcouru un manuel et je ne le trouve pas. ((((

Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Основное правило трейдера - дай прибыли расти, обрезай убытки! В статье рассматривается один из основных технических приемов, позволяющий следовать этому правилу - перемещение уровня защитной остановки (уровня Stoploss) вслед за растущей прибылью позиции, другими словами - скользящий стоп или трейлинг стоп (trailingstop). Приводится пошаговая процедура создания класса для трейлинг стопа на индикаторах SAR и NRTR, который каждый желающий сможет за 5 минут встроить в своего эксперта или использовать независимо для управления позициями на своем счете.
 

Bonjour, est-il possible et comment créer un algorithme d'ouverture et de fermeture d'une transaction sans utiliser d'indicateurs ?

Par exemple, prenez deux lignes, une ligne de tendance est ascendante et la seconde est également descendante, mettez-les l'une sur l'autre, il y a un point d'intersection entre les deux lignes, supposons qu'il soit à 15-30 dans le temps, alors comment faire pour que l'ordre soit automatiquement ouvert au même moment pour commencer dans n'importe quelle direction, comment faire pour que l'algorithme trouve ces points et ouvre une position? J'aimerais obtenir des précisions et connaître votre avis.

Peut-on créer un EA basé sur un tel T3 ?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Bonjour ! !! Une question comme celle-ci ? J'ai besoin de rassembler dans des tableaux, les manipulations de l'indicateur sur différents timeframes, mais il s'avère que
Fractal=iFractals(Symbol(),tik);

ne peut pas être fait de cette façon( Bizarre, pourquoi les nombres premiers peuvent être utilisés dans ce paramètre, mais pas une variable avec une constante numérique ?
void OnTick()
  {
   for(int tik =1; tik <= 6; tik++)
     {
      Fractal=iFractals(Symbol(),tik);   // Вот эта tik переменная вызывает ошибку при компиляции

      switch(tik)
        {
         case 1:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_W1),FractalUP_W1);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_W1),FractalDown_W1); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_W1,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_W1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 2:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalUP_D1);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalDown_D1); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_D1,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_D1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 3:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_H4),FractalUP_H4);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_H4),FractalDown_H4); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_H4,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_H4,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 4:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_H1),FractalUP_H1);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_H1),FractalDown_H1); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_H1,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_H1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 5:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_M30),FractalUP_30);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_M30),FractalDown_30); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_30,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_30,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 6:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_M15),FractalUP_15);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_M15),FractalDown_15); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_15,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_15,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;

        }
     }
 
Kira27:
Bonjour ! J'ai une question. J'ai besoin de rassembler les gestionnaires d'indicateurs sur différents horizons temporels dans des tableaux, mais il s'avère que
ne peut pas le faire( C 'est étrange, pourquoi puis-je utiliser des nombres premiers dans ce paramètre, mais pas une variable avec une constante numérique ?

Parce qu'il doit y avoir un calendrier

handle=iFractals(Symbol(),tf);

Identifiant

Description

PERIOD_CURRENT

Période actuelle

PERIOD_M1

1 minute

PERIODE_M2

2 minutes

PERIOD_M3

3 minutes

PERIOD_M4

4 minutes

PERIOD_M5

5 minutes

PERIOD_M6

6 minutes

PERIODE_M10

10 minutes

PERIOD_M12

12 minutes

PERIOD_M15

15 minutes

PERIOD_M20

20 minutes

PERIODE_M30

30 minutes

PERIOD_H1

1 heure

PERIOD_H2

2 heures

PERIOD_H3

3 heures

PERIOD_H4

4 heures

PERIOD_H6

6 heures

PERIOD_H8

8 heures

PERIOD_H12

12 heures

PERIOD_D1

1 jour

PERIODE_W1

1 semaine

PERIOD_MN1

1 mois

 
Kira27:
J'ai besoin de rassembler les poignées d'indicateurs sur différents délais dans des tableaux, mais il s'avère que
ne peut pas être fait de cette façon( Je me demande pourquoi vous pouvez utiliser des nombres premiers dans ce paramètre, mais pas des variables avec des constantes numériques
?

La poignée de l'indicateur dans MQL5 DOIT ÊTRE CRÉÉE UNE SEULE FOIS !!! Et cela doit être fait dans OnInit() !!!