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

 
Valerius:


Versuchen Sie, Zitate zu aktualisieren. Service - Kursarchiv - Wählen Sie Ihr Währungspaar - Download.

Wenn das nicht hilft, installieren Sie den Metatrader neu.


Ich habe mehrmals versucht, neu zu installieren und sogar ein neues Konto zu eröffnen.... Es hat nicht funktioniert. Womit könnte das zusammenhängen?

Ich danke Ihnen.

 
sidovi:


Ich habe es mehrmals mit einer Neuinstallation versucht und sogar ein neues Konto eröffnet.... Es hat nicht funktioniert. Womit könnte das zusammenhängen?

Ich danke Ihnen.


Haben Sie alle Dateien im MetaTrader-Installationsordner vor der Installation gelöscht?

Und haben Sie es mit dem Zitatarchiv versucht?

 
a196012a:

Alle größeren Aufträge werden nur mit einem Volumen von 0,3 Lots eröffnet. Alle Aufträge mit geringerem Volumen, die als Reaktion auf einen SL-Schluss mit einem Volumen von 0,3 Lots eröffnet werden, werden mit einem Volumen von 0,1 Lot eröffnet. Nur 0,1 und 0,3. Es gibt keine weiteren Bände.

Wenn Sie eine 0,3-Lot-Order über den SL schließen, merken Sie sich bitte die Stunde, in der die Order als Antwort auf die Schließung der Order (d.h. die 0,1-Lot-Order) eröffnet wurde.

Ich danke Ihnen für Ihre Hilfe.

Könnten Sie mir bitte sagen, wo ich die Option einstellen kann, eine Nachricht an meine E-Mail-Adresse zu senden, wenn ich eine Antwort auf meinen Beitrag erhalte?

Nochmals herzlichen Dank.


Und was brauchen Sie eigentlich, einen Algorithmus oder die geschriebene Funktion selbst?
 
a196012a:

Wir danken Ihnen für Ihr Feedback.

Ich brauche entweder den Algorithmus oder die Funktion.

Die Hauptsache ist, dass der Code den Wert der Stunde behält, nachdem ich eine 0,3 SL-Order geschlossen habe

Ich weiß nicht, wie ich diese Aktion genau codieren soll.

Wenn ein Auftrag mit einem Volumen von 0,3 am SL geschlossen wird

{
A2= Wert für die Stunde, in der der Auftrag mit einem geringeren Volumen als Reaktion auf den Abschluss des Auftrags eröffnet wurde
}

===================================================================================================

Wenn mehrere Aufträge mit einem Volumen von 0,1 bei SL auf SINGLE TICK schließen

{

einen separaten Auftrag mit einem Volumen von 0,3 zum Schlusskurs von JEDEM geschlossenen Auftrag eröffnen

}

===================================================================================================

Wenn mehrere Aufträge mit einem Volumen von 0,3 auf einem SL in EINEM TIKE geschlossen werden

{

Erinnern Sie sich an den Wert der Eröffnungsstunde von JEDEM relevanten Auftrag mit einem Volumen von 0,1

}

Ich habe einen funktionierenden Code zum Öffnen und Schließen von Aufträgen geschrieben (siehe erster Beitrag)

Ich bin mir nicht sicher, welchen Code ich einfügen muss, um 0,1 Zeit für das Öffnen der Bestellung zu sparen.

Ich weiß nicht, wie ich die Eröffnung von Aufträgen kodieren und mir den Wert der Eröffnungsstunde merken kann, falls mehrere Aufträge auf einen Tick geschlossen werden.

Wenn im Zusammenhang mit der Verwirklichung meiner Idee, den Code zu ändern ich geschrieben habe - ich habe nichts dagegen, wenn Sie es ändern.

DAS LETZTE ZIEL MEINES PROGRAMMS IST ES, SICH DEN WERT DER ERSTEN STUNDE EINZUPRÄGEN. Alle anderen Vorgänge (einschließlich der Eröffnungsaufträge) sind diesem Endziel untergeordnet und haben einen Hilfscharakter.

Wenn ich wüsste, wie man ohne sie auskommt, hätte ich sie nicht in den Code aufgenommen.

Nochmals vielen Dank.


Hier ist ein Beispiel für ein Programm. Bitte sehen Sie es sich an. Darin sind einige Kommentare enthalten.

extern int MagicNumber=123;

datetime time;
//=================================================================
void start()
{
int er,se;

if(prov_open_orders()) //Проверяем, есть ли открытые ордера
 {
  se=sear();//Ищем последний ордер, который закрылся по стопу. Если последний ордер закрылся по профиту
            //то просто возвращается нулевое значение
            //Если Последний ордер закрылся по по стопу, то ищем ордер с лотом 0.1 и возвращаем
           //его время открытия. В переменной time будет время открытия ордера с лотом 0.1
  if(se==1)
   {
    if(OrderType()==OP_BUY && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Bid+400*Point,Bid-200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
  if(se==2)
   {
    if(OrderType()==OP_SELL && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_BUY,0.3,Ask ,3,Ask-400*Point,Ask+200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
 }

return;
}

//========================
bool prov_open_orders()
{
for(int is=OrdersTotal()-1; is >= 0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            return(false); // есть открытые ордера (любые)
           }
         }
      }
   }
return(true);
}

//=================================================================
datetime SearTim(int s)
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType()==OP_SELL && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
          if(OrderType()==OP_BUY && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
         }
      }
   }
return(NULL);
}

//=================================================================
int sear()
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderProfit()>0)
           {//Если  закрылся по профиту то просто ухоим из цикла.
              return(0);
           }
          if(OrderType()==OP_SELL && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(2);
           }
          if(OrderType()==OP_BUY && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(1);
           }
         }
      }
   }
return(0);
}
 
Valerius:


Haben Sie alle Dateien in dem Ordner, in dem Metatrader installiert ist, vor der Installation gelöscht?

Und haben Sie es mit dem Zitatarchiv versucht?


Ja, 0 Ergebnis :((
 
sidovi:

Ja, 0 Ergebnis :((


Dann müssen Sie Ihr DC um Unterstützung bitten...

Das ist das erste Mal, dass ich das sehe.

 
Valerius:


Wenden Sie sich dann nur an Ihr DC, um Unterstützung zu erhalten...

Das ist das erste Mal, dass ich das sehe.


Glauben Sie, dass es einen Dienst in Windows 10 gibt, der dies beeinflusst?
 
sidovi:

Glauben Sie, dass es einen Dienst in Windows 10 gibt, der dies beeinflusst?

Nein, gibt es nicht.
 
Victor Nikolaev:

Nein, es gibt keine.

Dankeschön
 
a196012a:

Herzlichen Dank für Ihre Hilfe

Ich lerne gerade die Grundlagen der Programmierung anhand von Kovalevs Tutorial und den darin beschriebenen Funktionen.

Ich bin in Ihrem Code auf einige Funktionen gestoßen, die ich weder in meinen Büchern noch in Code Base gesehen habe

Hier sind die Funktionen, die ich nicht kenne

sear();

SearTim(se);

prov_open_orders()

Ich wäre Ihnen sehr dankbar, wenn Sie mir sagen könnten, wo ich darüber lesen kann.

Genau in diesem Code.