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

 
Valeriy Yastremskiy:

Flags kontrollieren entweder die Anzahl der Ordertypen oder, falls ein Ticket vorhanden ist, die Schließungszeit der Marktorder, wenn diese ungleich Null ist, ist die Order geschlossen und das Order Opening Flag ist falsch.

Und wie programmatisch?
 
AIGUL SALMANOVA:
Wie wird dies programmatisch durchgeführt?
 if(OrderSelect(Ticket, SELECT_BY_TICKET)==true)
        {
         if(OrderCloseTime()==0)              // Если наш рыночный ордер не закрыт
           {
            if(flagAlert == true)
               Alert("Наш рыночный ордер жив, Модифицируем его если нужно ", Text,Ticket,". Ждём ответ..");

            ModifyTral(); // Модифицируем если нужно
           }
         if(OrderCloseTime()!=0)              // Если наш рыночный ордер закрылся
           {
            OpnOr=false;                     // Флаг открытия рыночного ордера после его закрытия делаем ЛОЖЬ
            Ticket=0;                          // Тикет ордера рыночного, он может быть только один
           
            Alert("Наш рыночный ордер закрылся. Работа Советника продолжается ","Прибыль/убыток = ",OrderProfit(),
                  " Своп = ", OrderSwap(), " Комиссия = ", OrderCommission());
            return;
           }
        }
      else
        { Alert("OrderSelect() нашего рыночного ордера вернул ошибку - ",GetLastError()); return;}
     }

Zur Abrechnung eines Tickets.

Bei der Eröffnung einer Bestellung muss das Ticket gespeichert werden.

 Alert("Попытка открыть Buy Ожидание ответа..","SL = ",SL,"TP = ",TP,"Lts = ",Lts);
            Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,slippage,SL,TP,"QstrBuy",Magic,0,Blue);//Открытие Buy
            if(Ticket>0) // Получилось :)
              {
               Alert(Symbol(),"Открыт ордер Buy по цене ",Ask,"Ticket = ",Ticket);}
 
Valeriy Yastremskiy:

Um ehrlich zu sein, ist es nicht klar, wonach Sie suchen. Schreiben Sie in Formeln, wie Sie verstehen, was ausgegeben wird und was Sie brauchen.

Sie benötigen die Zeit in Millisekunden zwischen den letzten 4 Ticks. Werte aktualisieren, wenn ein neues Häkchen erscheint.

Der Indikator schreibt den Zeitpunkt des letzten Ticks(GetTickCount()) in den Puffer.

Der Expert Advisor übernimmt Werte aus dem Indikator und berechnet die Zeitdifferenz.

double buf1=iCustom(Symbol(),0,"time",0,1);
double buf2=iCustom(Symbol(),0,"time",0,2);
double buf3=iCustom(Symbol(),0,"time",0,3);
double buf4=iCustom(Symbol(),0,"time",0,4);
double delta1=buf1-buf2;
double delta2=buf2-buf3;
double delta3=buf3-buf4;
Alert(delta1,"   ",delta2,"   ",delta3);

Es scheint zu zählen, aber Alert zeigt Werte wie auf dem Bild an.

Ich verstehe nicht, warum.


 
prom18:

Benötigt die Zeit in Millisekunden zwischen den letzten 4 Ticks. Aktualisiert die Werte, wenn ein neuer Tick auftritt.

Der Indikator schreibt den Zeitpunkt des letzten Ticks (GetTickCount()) in den Puffer.

Der Expert Advisor übernimmt Werte aus dem Indikator und berechnet die Zeitdifferenz.

Es scheint zu zählen, aber Alert zeigt Werte wie auf dem Bild an.

Ich verstehe nicht, warum.


Weil Sie die Dokumentation nicht gelesen haben

Die Hilfe für GetTickCount sagt, dass es ein Integer-Zählerüberlauf ist

 
Maxim Kuznetsov:

weil Sie die Dokumentation nicht gelesen haben.

Die GetTickCount-Referenz sagt, dass es sich um einen Integer-Überlauf handelt.

Sie meinen uint? Warum taucht es in der Meldung auf? Ich habe es nicht dort hingelegt.

 
prom18:

Sie meinen uint? Warum taucht es in der Meldung auf? Ich habe es nicht dorthin geschrieben.

In der ersten Alerte geben Sie eine falsch (ohne Berücksichtigung von Überläufen) berechnete Differenz aus,

der zweite Alert, bei dem ein großer Integer-Wert im Code gesucht wird, ist in diesem Fragment nicht vorhanden :-)

 

Das ist das Problem, es steht nicht im Code.

Der gesamte Indikatorcode.

#property  indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua
double x[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,x);
   SetIndexDrawBegin(0,0);
   SetIndexLabel(0,"x");
   SetIndexShift(0,0);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   uint b=GetTickCount();
   x[0]=b;
   Alert(b);
   for(int j=ArraySize(x)-1;j>=1;j--){x[j]=x[j-1];}
   return(0);
  }
//+------------------------------------------------------------------+

Der gesamte EA-Code.

#property copyright ""
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   uint buf1=iCustom(Symbol(),0,"time",0,1);
   uint buf2=iCustom(Symbol(),0,"time",0,2);
   uint buf3=iCustom(Symbol(),0,"time",0,3);
   uint buf4=iCustom(Symbol(),0,"time",0,4);
   uint delta1=buf1-buf2;
   uint delta2=buf2-buf3;
   uint delta3=buf3-buf4;
   Alert(delta1,"   ",delta2,"   ",delta3);  
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
prom18:

Das ist das Problem, es steht nicht im Code.

Der gesamte Indikatorcode.

Alles davon.

Schauen Sie, was sonst noch drin ist.

time.mq4 - vielleicht sendet es Alarme

 
prom18:

Das ist das Problem, es steht nicht im Code.

Der gesamte Indikatorcode.

Der gesamte EA-Code.

Im Indikator, in der Alert-Struktur. Die 5. Zeile von untenAlert(b);

uint b=GetTickCount();
   x[0]=b;
   Alert(b);

Offenbar ist dies die Anzahl der Millisekunden seit dem Start des Systems)

 

Wie kann ich den Status der Schnellhandelsschaltflächen verfolgen?

Das heißt, ob sie in der Karte vorhanden sind oder nicht.

Können Sie eine Funktion oder eine andere Methode vorschlagen?

Grund der Beschwerde: