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

 
Alexey Belyakov #:

Vérifié. Le deuxième cas est bon, mais il ne convient pas en raison de la nécessité de saisir manuellement chaque date dans la fenêtre, ce qui prend du temps. Cela devrait être simple... "ctrl-c, ctrl-v".

Dans le premier cas, pour une raison quelconque, il ne dessine pas 3 lignes, mais une seule, sur la bougie la plus récente. La raison n'est pas encore claire, je suis en train de l'étudier.

Le nom de la ligne doit être unique. Ce point m'a échappé

 

const string name="VLine,VLine2,VLine3", // nom de la ligne

J'ai fait en sorte que le nom de la ligne soit unique. Dans l'entrée aussi. Cela ne sert à rien.

 
Alexey Belyakov #:

const string name= "VLine,VLine2,VLine3", // nom de la ligne

J'ai fait en sorte que le nom de la ligne soit unique. Dans l'entrée aussi. Cela ne sert à rien.

datetime time1 = D'2021.11.15 00:00:00';
datetime time2 = D'2022.11.15 00:00:00';
datetime time3 = D'2023.11.15 00:00:00';
// в этом случае так делаем
VLineCreate(0, "InpName1", 0, time1, InpColor, InpStyle, InpWidth, InpBack, InpSelection, InpHidden);
VLineCreate(0, "InpName2", 0, time2, InpColor, InpStyle, InpWidth, InpBack, InpSelection, InpHidden);
VLineCreate(0, "InpName3", 0, time3, InpColor, InpStyle, InpWidth, InpBack, InpSelection, InpHidden);

Vous avez créé le nom au mauvais endroit, et pas comme ça).

 
Alexey Belyakov #:

const string name= "VLine,VLine2,VLine3", // nom de la ligne

J'ai fait en sorte que le nom de la ligne soit unique. Dans l'entrée aussi. Cela ne sert à rien.

Ici, exécutez sans paramètres d'entrée, copiez-le directement comme ceci et peut-être que cela deviendra plus clair.

//+------------------------------------------------------------------+
//| Создает вертикальную линию                                       |
//+------------------------------------------------------------------+
bool VLineCreate(const long            chart_ID = 0,      // ID графика
                 const string          name = "VLine",    // имя линии
                 const int             sub_window = 0,    // номер подокна
                 datetime              time = 0,          // время линии
                 const color           clr = clrRed,      // цвет линии
                 const ENUM_LINE_STYLE style = STYLE_SOLID, // стиль линии
                 const int             width = 1,         // толщина линии
                 const bool            back = false,      // на заднем плане
                 const bool            selection = true,  // выделить для перемещений
                 const bool            hidden = true)     // скрыт в списке объектов

  {
   ObjectCreate(chart_ID, name, OBJ_VLINE, sub_window, time, 0);
//--- установим цвет линии
   ObjectSetInteger(chart_ID, name, OBJPROP_COLOR, clr);
//--- установим стиль отображения линии
   ObjectSetInteger(chart_ID, name, OBJPROP_STYLE, style);
//--- установим толщину линии
   ObjectSetInteger(chart_ID, name, OBJPROP_WIDTH, width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID, name, OBJPROP_BACK, back);
//--- включим (true) или отключим (false) режим перемещения линии мышью
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger(chart_ID, name, OBJPROP_SELECTABLE, selection);
   ObjectSetInteger(chart_ID, name, OBJPROP_SELECTED, selection);

   return(true);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime time1 = D'2023.06.26 10:00:00';
   datetime time2 = D'2023.06.26 11:00:00';
   datetime time3 = D'2023.06.26 12:00:00';
//--- создадим вертикальную линию
   VLineCreate(0, "Name1", 0, time1, clrBlue, STYLE_DASHDOTDOT);
   VLineCreate(0, "Name2", 0, time2, clrGreen, STYLE_SOLID, 5);
   VLineCreate(0, "Name3", 0, time3);
  }
//+------------------------------------------------------------------+
 
Aleksandr Slavskii #:

Ici, exécutez-le sans paramètres d'entrée, copiez-le directement comme ceci et peut-être que cela deviendra plus clair.


Merci beaucoup ! C'est exactement ce dont j'ai besoin !

 

Voici les fonctions Achat/Vente dans la classe de trading CTrade

J'y spécifie un prix, mais la position est toujours ouverte par Ask/Bid.

Quel type de prix puis-je spécifier ici ?

 
Alexey Belyakov #:


Merci beaucoup ! C'est exactement ce dont j'ai besoin !

nom unique)

string  var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
     string NameLine="VLine_" +  "_"+var1;
 
deerhunter22 classe de négociation CTrade

Je spécifie un prix dans ces fonctions, mais la position est toujours ouverte par Ask/Bid.

Quel type de prix puis-je spécifier ici ?

Attention aux autres méthodes

   //--- additions methods
   bool              Buy(const double volume,const string symbol=NULL,double price=0.0,const double sl=0.0,const double tp=0.0,const string comment="");
   bool              Sell(const double volume,const string symbol=NULL,double price=0.0,const double sl=0.0,const double tp=0.0,const string comment="");
   bool              BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,
                              const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="");
   bool              BuyStop(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,
                             const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="");
   bool              SellLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,
                               const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="");
   bool              SellStop(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,
                              const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="");
 
Alexey Viktorov #:

Attention aux autres méthodes

Oui, je les connais, bien sûr, mais j'ai besoin d'autres choses.... Quoi qu'il en soit, le point est le suivant. J'ai récemment commencé à négocier sur binance et j'ai voulu le tester. Il y a aussi un courtier en cuisine avec beaucoup de cryptocurrencies, mais le spread interfère. Les cotations correspondent donc assez bien à celles de binance, surtout si l'on considère le prix (bid+ask)/2.

Ici, j'ai voulu maximiser la concordance, bien qu'il soit évidemment possible de négliger ces divergences.

 
deerhunter22 #:

Oui, je suis au courant, mais ce n'est pas ce que je cherche. Quoi qu'il en soit, la question est la suivante. J'ai récemment commencé à négocier sur binance et je voulais le tester. Il y a aussi un courtier en cuisine avec beaucoup de cryptocurrencies, mais le spread interfère. Et donc les cotations correspondent assez bien à celles de binance, surtout si l'on considère le prix (bid+ask)/2.

Ici, j'ai voulu maximiser la concordance, même s'il est bien sûr possible de négliger ces divergences.

Vous pouvez peut-être envisager de créer votre propre graphique. MQL5 le permet.