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

 
Vladimir Karputov:

Ein Indikator hierfür muss einen Parameter für die Eingangsfarbe haben. Das heißt, es sollte ein benutzerdefinierter Indikator sein.

DANKE! aber wenn ich keinen Zugang zum Quellcode habe, ist es nicht machbar?

 
Tango_X:

DANKE, aber wenn ich keinen Zugang zum Quellcode habe, ist es nicht umsetzbar?

Ja, Sie müssen entweder Open Source oder eine fertige Implementierung haben.

 
Vladimir Karputov:

Ja, Sie brauchen entweder einen offenen Quellcode oder eine fertige Implementierung.

Wenn ich im Testgerät die Farbe clrNONE einstelle, wird die Farbe immer noch angezeigt! ClrNONE funktioniert also nicht in der Testversion? Ich kann es nicht im wirklichen Leben überprüfen - es ist Wochenende...

Wenn ich eine beliebige Farbe anstelle von clrNONE einstelle, wird diese Farbe angezeigt, aber der leere Wert = funktioniert nicht... merkwürdig...
 
Aleksey Mavrin:

Antwort: auch das Makro immer wieder neu laden)

Aber es ist besser, einfach den +-Operator für Strings zu verwenden und alles in Strings zu konvertieren, dann braucht man keine Funktions- (und Makro-) Version mit vielen Parametern

Danke. Ich wusste nicht, dass das Makro neu geladen werden kann.

 
pivomoe:

Ich danke Ihnen. Ich wusste nicht, dass das Makro neu geladen werden kann.

Tippfehler - reload, nicht reload)

 

die Beispiele am Ende dieses Hilfeabschnitts aussortierthttps://www.mql5.com/ru/docs/constants/structures/mqltraderequest

auf dem Metacquot-Server ist alles in Ordnung

Auf einem anderen Server habe ich nach der Analyse der Fehlercodes von Handelsanfragen herausgefunden, dass das Problem beim Ausfüllen des Feldes MqlTradeResult liegt:

request.type_filling = ORDER_FILLING_IOC;

eine Forensuche hat keine eindeutige Lösung gefunden - wie kann man die Servereinstellungen für das Feld MqlTradeResult programmatisch bestimmen

ENUM_ORDER_TYPE_FILLING       type_filling;     // Тип ордера по исполнению 


UPD: eine funktionierende Lösung gefundenhttps://www.mql5.com/ru/forum/168912/page2#comment_4062864

@fxsaber danke!

 
Könnten Sie mir bitte sagen, wie ich die Fibo-Ebenen für die automatische Erstellung festlegen kann?
 
VVT:
Bitte sagen Sie mir, wie ich die Fibo-Ebenen für die automatische Erstellung festlegen kann

Beispiel imFibonaci RR-Code-

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long chart_id=ChartID();
   datetime time1=ChartTimeOnDropped();
   double price1=ChartPriceOnDropped();
   if(ObjectFind(chart_id,InpFiboName)<0)
      FiboLevelsCreate(chart_id,InpFiboName,0,time1,price1,time1+InpAddSecond,price1-InpStopLoss*Point(),InpColor);
   else
     {
      ObjectDelete(chart_id,InpFiboName);
      ChartRedraw(chart_id);
      FiboLevelsCreate(chart_id,InpFiboName,0,time1,price1,time1+InpAddSecond,price1-InpStopLoss*Point(),InpLevelsColor);
     }
//---
   int               levels   = 6;                                                                    // number of level lines
   double            values[6]= {1.0,0.0,2.0,3.0,4.0,5.0};                                            // values of level lines
   color             colors[6];                                                                       // color of level lines
   for(int i=0; i<6; i++)
      colors[i]=InpLevelsColor;
   ENUM_LINE_STYLE   styles[6];                                                                       // style of level lines
   for(int i=0; i<6; i++)
      styles[i]=InpLevelsStyles;
   int               widths[6]= {2.0,2.0,2.0,2.0,2.0,2.0};                                            // width of level lines
   string            texts[6] = {"BREAK EVEN","STOP LOSS","TP1 1.1","TP2 2.1","TP3 3.1","TP4 4.1"};   // text of level lines
//---
   FiboLevelsSet(levels,values,colors,styles,widths,texts,chart_id,InpFiboName);
  }


können für die Ebenen eingestellt werden: Anzahl der Zeilen, Zeilenwert, Zeilenfarbe, Zeilenstil, Zeilenbreite, Zeilentext.

 
int OnInit()
  {
//---
   ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

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

/***********************OnChartEvent function************************/
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                 )
  {
   if(id == CHARTEVENT_OBJECT_CREATE)
     {
      I++;
      string result[];      //  массив для получения строк
      StringSplit(sparam, ' ', result); //  получим из имени созданного объекта подстроки
      ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); //  получим время создания объекта
      string newName = result[0]+" "+result[1]+" "+string(I); //  сформируем новое имя объекта
      ObjectSetString(0, sparam, OBJPROP_NAME, newName);  //  переименуем объект

      //----------------------------------------------------------------------------------------
      double   Level_0= ObjectGetDouble(
                                0,          // идентификатор графика
                                newName,              // имя объекта
                                OBJPROP_PRICE,           // идентификатор свойства
                                0     // модификатор свойства
                             );


      double   Level_1= ObjectGetDouble(
                                0,          // идентификатор графика
                                newName,              // имя объекта
                                OBJPROP_PRICE,           // идентификатор свойства
                                1     // модификатор свойства
                             );
      //------------------------------------------------------------------------------------------------------
      if(Level_0 > Level_1)
        {
         ObjectSetInteger(0,newName,OBJPROP_COLOR,clrDeepSkyBlue);
        }
      else
        {
         ObjectSetInteger(0,newName,OBJPROP_COLOR,clrYellow);
        }
     }/******************************************************************/
  }

Hallo, können Sie mir sagen, warum beim Debuggen des Codes die Linien je nach Koordinatenwerten in beiden Farben neu eingefärbt werden, wenn man Schritt für Schritt vorgeht? Und werfen EA auf Diagramm, Linien Bedingung if(Level_0 > Level_1) ist nie wahr?
 
Kira27:

Könnten Sie mir sagen, warum beim Debuggen, wenn der Code Schritt für Schritt übergeben wird, die Linien je nach Koordinatenwerten in beiden Farben neu gezeichnet werden? Und werfen EA auf dem Chart, die Linie Bedingung if(Level_0 > Level_1) ist nie wahr?

Es ist sehr wahrscheinlich, dass nach der Umbenennung eines Objekts noch nicht auf dieses zugegriffen werden kann. Sie können versuchen, ChartRedraw nach der Umbenennung einzufügen. Wenn das nicht funktioniert, müssen Sie die Sequenz auf eine andere Weise aufbauen.

ps; Eine andere Möglichkeit: erst mit sparam Name übermalen und dann umbenennen.