Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1465

 
Alexey Belyakov #:

Geprüft. Der zweite Fall ist gut, aber er ist nicht geeignet, da jedes Datum manuell in das Fenster eingegeben werden muss, was zeitaufwändig ist. Es sollte einfach sein... "ctrl-c, ctrl-v".

Im ersten Fall werden aus irgendeinem Grund nicht 3 Linien gezeichnet, sondern nur eine, und zwar bei der letzten Kerze. Warum, ist noch nicht klar, ich gehe der Sache nach.

Der Zeilenname sollte eindeutig sein. Diesen Punkt habe ich übersehen

 

const string name="VLine,VLine2,VLine3", // Zeilenname

Ich habe den Zeilennamen eindeutig gemacht. Auch in der Eingabe. Hilft aber nicht.

 
Alexey Belyakov #:

const string name="VLine,VLine2,VLine3", // Zeilenname

Ich habe den Zeilennamen eindeutig gemacht. Auch in der Eingabe. Hilft aber nicht.

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);

Sie haben den Namen irgendwo an der falschen Stelle gemacht, und nicht so).

 
Alexey Belyakov #:

const string name="VLine,VLine2,VLine3", // Zeilenname

Ich habe den Zeilennamen eindeutig gemacht. Auch in der Eingabe. Hilft aber nicht.

Hier, ohne Eingabeparameter ausführen, direkt so kopieren und vielleicht wird es dann klarer.

//+------------------------------------------------------------------+
//| Создает вертикальную линию                                       |
//+------------------------------------------------------------------+
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 #:

Führen Sie es hier ohne Eingabeparameter aus, kopieren Sie es direkt so und vielleicht wird es dann klarer.


Vielen herzlichen Dank! Genau das, was ich brauche!

 

Hier sind die Buy/Sell-Funktionen in der Handelsklasse CTrade

Ich gebe darin einen Preis an, aber die Position wird immer noch mit Ask/Bid eröffnet.

Welche Art von Preis kann ich hier angeben?

 
Alexey Belyakov #:


Ich danke Ihnen vielmals! Genau das, was ich brauche!

einzigartiger Name)

string  var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
     string NameLine="VLine_" +  "_"+var1;
 
deerhunter22 Handelsklasse CTrade

Ich gebe darin einen Preis an, aber die Position wird immer noch mit Ask/Bid eröffnet.

Welche Art von Preis kann ich hier angeben?

Achten Sie auf andere Methoden

   //--- 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 #:

Achten Sie auf andere Methoden

Ja, ich kenne sie natürlich, aber ich brauche sie für andere Dinge.... Wie auch immer, der Punkt ist dieser. Ich habe vor kurzem mit dem Handel auf Binance begonnen und wollte es testen. Es gibt auch einen Küchenmakler mit einer Menge Kryptowährungen, aber der Spread stört. Und so stimmen die Kurse ziemlich gut mit den Binance-Kursen überein, vor allem wenn man den Preis (Bid+Ask)/2 betrachtet.

Hier wollte ich die Übereinstimmung zu maximieren, obwohl natürlich wird es möglich sein, diese Diskrepanzen zu vernachlässigen.

 
deerhunter22 #:

Ja, ich weiß davon, aber das ist nicht das, was ich will. Wie auch immer, der Punkt ist dieser. Ich habe vor kurzem begonnen, Handel auf Binance und wollte es zu testen. Es gibt auch einen Küchenmakler mit einer Menge Kryptowährungen, aber der Spread stört. Und so stimmen die Kurse ziemlich gut mit denen von binance überein, vor allem wenn man den Preis (Bid+Ask)/2 betrachtet.

Hier wollte ich die Übereinstimmung maximieren, obwohl es natürlich möglich sein wird, diese Diskrepanzen zu vernachlässigen.

Vielleicht können Sie versuchen, Ihr eigenes Diagramm zu erstellen. MQL5 erlaubt das.

Grund der Beschwerde: