Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1694

 
Aleksei Stepanenko #:

Ich weiß nicht, warum das so gemacht wird, es ist im Grunde eine boolesche Funktion.

Es geht ungefähr so:

In enum beginnen die Elemente mit Null, also Ok=0 , AllocError=1

d.h. GetRepeat gibt entweder 0 oder 1 zurück

bzw. ! GetRepeat ist eine Negation des Rückgabewerts

0 ist falsch, 1 ist wahr.


Es ist leicht, sich den Kopf zu zerbrechen

Genau!)) Danke, Alexey!

 
Gern geschehen :)
 

Guten Tag!!!

Hier ist eine Funktion, die den Durchschnittspreis einer Reihe von Aufträgen berechnet und in einem Diagramm anzeigt. Nach dem Schließen des Gitters werden die horizontalen Linien, die die Durchschnittslinie anzeigen, nicht gelöscht.

Bitte helfen Sie uns, eine Funktion zu schreiben, die diese Zeilen löscht, nachdem das Auftragsnetz geschlossen wurde. Ich danke Ihnen!!!

//+----------------------------------------------------------------------------+
//| Расчет среденй цены (0)-buy (1)-sell ()-all                                |
//+----------------------------------------------------------------------------+
double GetAveragePrice(int ot=-1)
  {
   double order_lots = 0, order_price = 0, avg_price = 0;
     {
      for(int i = OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType()==ot||ot<0)
                 {
                  order_lots += OrderLots();
                  order_price += OrderOpenPrice() * OrderLots();
                 }
              }
           }
        }
     }
   avg_price = NormalizeDouble(order_price / order_lots, Digits);

   if(ObjectFind(0,"AveragePriceLine"+IntegerToString(ot))!=0)
      ObjectCreate(0,"AveragePriceLine"+IntegerToString(ot),OBJ_HLINE, 0, 0, avg_price);
   else
      ObjectSetDouble(0,"AveragePriceLine"+IntegerToString(ot),OBJPROP_PRICE,avg_price);
   if(ot==0)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrLime);
   if(ot==1)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrMagenta);
   return(avg_price);
  }

 
EVGENII SHELIPOV #:

Guten Tag!!!

Hier ist eine Funktion, die den Durchschnittspreis einer Reihe von Aufträgen berechnet und in einem Diagramm anzeigt. Nach dem Schließen des Gitters werden die horizontalen Linien, die die Durchschnittslinie anzeigen, nicht gelöscht.

Bitte helfen Sie uns, eine Funktion zu schreiben, die diese Zeilen löscht, wenn das Auftragsnetz geschlossen ist. Ich danke Ihnen!!!

Dies ist nicht der richtige Ort dafür.

void OnTick()
  {
//---
   if(ObjectFind(0,"AveragePriceLine"+0)==0&&CountTrade(0)<1)//для бай
     {ObjectDelete(0,"AveragePriceLine"+0);}
   if(ObjectFind(0,"AveragePriceLine"+1)==0&&CountTrade(1)<1)//для селл
     {ObjectDelete(0,"AveragePriceLine"+1);}

   .....

  }
 
MakarFX #:

Dies ist nicht der richtige Ort dafür.

Makar, wie binden Sie dies in void OnTick()

 
MakarFX #:

Dies ist nicht der richtige Ort dafür.

Danke, Makar, ein bisschen Feilen und schon ist es gut.

 

Bitte beraten Sie mich.

Der Expert Advisor legt die Start- und Endzeit von Eröffnungsaufträgen fest. Ich möchte, dass diese Zeit auf dem Diagramm angezeigt wird. Ich habe es noch nicht geschafft. Hier ist der Code. Ich möchte Sie um Hilfe bitten!

//-------------------------------------------------------------------+  Команда на открытие первых ордеров в сетке
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
   ObjectCreate(0, "Начало торговли", OBJ_VLINE,0,0, StartTime);
   ObjectSetInteger(0, "Начало торговли",OBJPROP_COLOR, clrBlue);
   ObjectCreate(0,"Окончание торговли", OBJ_VLINE, 0, 0, StopTime);
   ObjectSetInteger(0, "Окончание торговли", OBJPROP_COLOR, clrBlue);
     {
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }
 
EVGENII SHELIPOV #:

Bitte beraten Sie mich.

Der Expert Advisor legt die Start- und Endzeit von Eröffnungsaufträgen fest. Ich möchte, dass diese Zeit auf dem Diagramm angezeigt wird. Ich habe es noch nicht geschafft. Hier ist der Code. Ich möchte Sie um Hilfe bitten!

Anzeigen der Variablen StartTime und StopTime
 
MakarFX #:
Anzeigen der Variablen StartTime und StopTime
extern string               TIME                           = "Настройки времени";
extern int                  UseHour                        = 1;         // Торговля в установленное время "0"-ВЫКЛ, "1"-ВКЛ
extern int                  StartTime                      = 1;         // Начало торговли
extern int                  StopTime                       = 19;        // Окончание торговли
 
EVGENII SHELIPOV #:
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
     {
      if(ObjectFind(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE))!=0)
        {
         ObjectCreate(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StartTime*3600),0);
         ObjectSetInteger(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
         ObjectCreate(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StopTime*3600),0);
         ObjectSetInteger(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
        }
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }
Grund der Beschwerde: