Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 199

 

Guten Abend.

Könnten Sie mir bitte sagen, wie ich die Schließung aller Positionen und das Löschen aller Aufträge am Ende der Handelswoche hinzufügen kann?

Ich danke Ihnen!

 
Antonius:

Guten Abend.

Könnten Sie mir bitte sagen, wie ich die Schließung aller Positionen und das Löschen aller Aufträge am Ende der Handelswoche hinzufügen kann?

Ich danke Ihnen!

Schreiben Sie ein solches Skript, und werfen Sie es auf das Diagramm, wenn Sie es schließen und alles löschen wollen. Das ist alles...

Bitte sehr!

 
artmedia70:

Schreiben Sie ein solches Skript, und werfen Sie es auf das Diagramm, wenn Sie es schließen und alles löschen wollen. Der Punkt ist...

Bitte!



Vielen Dank:) Klärung des Anliegens.

Wir müssen dem EA einen Code hinzufügen, der alle Aufträge und Positionen am Ende der Handelswoche schließt.

Könnten Sie bitte diesen Code schreiben?

 
Antonius:


Vielen Dank:) Klärung des Anliegens.

Wir müssen dem EA einen Code hinzufügen, der alle Aufträge und Positionen am Ende der Handelswoche schließt.

Könnten Sie bitte diesen Code schreiben?

Das kann ich tun. Kein Problem. Haben Sie jemals etwas selbst gemacht? In diesem Thread geht es nicht darum, kostenloses Material zu bekommen, sondern darum, Menschen zu helfen, die versuchen, selbst zu programmieren.
 
artmedia70:
Das kann ich tun. Kein Problem. Haben Sie jemals etwas selbst gemacht? In diesem Thread geht es nicht darum, etwas kostenlos zu bekommen, sondern darum, denjenigen zu helfen, die versuchen, selbst zu programmieren.


Überprüfen Sie es unter https://book.mql4.com/ru/trading/orderclose.

Habe bei Google und im Forum gesucht. Ich habe keine gefunden. Vielleicht schreibe ich die Anfrage falsch.

Ich dachte, ich frage mal im Thread für Neulinge.

 

Wie verschreibe ich?

Wenn Sie das Skript ausführen:

Es öffnet sich ein Fenster mit den Registerkarten "Allgemein" und "Eingabeparameter".

Ich muss ein Datum in die Eingabeparameter eingeben.

Ist es möglich, dass, wenn ich das Skript ausführe, ein Datumsfeld erscheint, ich das Datum eingebe, auf ok klicke und alles funktioniert?

Und kann ich dafür sorgen, dass sich das Skript das zuletzt eingegebene Datum merkt?

 
artmedia70:

Die Funktion, die die letzte geschlossene Position des Anschlags bestimmt, hat den Typ bool, während Sie versuchen, den Typ double zurückzugeben. Dementsprechend gibt sie entweder 0 oder 1 zurück.

Ich habe Ihnen gesagt, dass Sie die Übergabe einer Variablen per Referenz hinzufügen sollten:

Prüfen Sie jetzt zum Beispiel den letzten Buy:

Etwa so...


Ich danke Ihnen vielmals.
 
artmedia70:

Die Funktion, die die letzte geschlossene Position des Anschlags bestimmt, hat den Typ bool, während Sie versuchen, den Typ double zurückzugeben. Dementsprechend gibt sie entweder 0 oder 1 zurück.

Ich habe Ihnen gesagt, dass Sie die Übergabe einer Variablen per Referenz hinzufügen sollten:

Prüfen Sie jetzt zum Beispiel den letzten Buy:

Etwa so...


Ich habe alles getan, was Sie gesagt haben. Alle kompiliert...... aber Funktion funktioniert nicht beim Testen advisor..... alle Positionen advisor öffnet 0.1 lot.

double  Magic, Lot;

int start()
  {
        

  
 double Price=iOpen (Symbol (),0,0);
 

          
 int last_order_bar = 0;                                                                                                                        
 int ot = OrdersTotal();                                                                                                                        
                                                                                                                        
 if (ot>0) //если есть ордера в рынке                                                                                                                   
 {                                                                                                                      
   if (OrderSelect (ot-1,SELECT_BY_POS))                                                                                                                        
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )                                                                                                                       
         last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());                                                                                                             
 }                                                                                                                      
                                                                                                                        
 int last_hist_order_bar = 0;                                                                                                                   
 int oht = OrdersHistoryTotal();                                                                                                                        
                                                                                                                
 if (oht>0)                                                                                                                     
 {                                                                                                                      
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))                                                                                                                         
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)                                                                                                                        
         last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
                                                                                                        
        }

                                                                                                        
if (ot==0)

 if (Bid ==Price)
//=============================================================== 
  
if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))

//============================================================
                                                                           // задавать минимальное значение лота я не стал,мне кажется для тестера это не обязательно
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))                        
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{

Lot=0.1;        
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
   return(0);
  }
//============================================================  
bool isCloseLastPosByStop(string sy, int op, int mn, double ll)       //у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.
{
   double   pt;
   datetime t;                                                       //у вас тип переменной t был int - я сделал datetime
   int       dg, i, j=-1, k=OrdersHistoryTotal()-1;

   for (i=k; i>=0; i--) 
   {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
     {
         if (OrderMagicNumber()!=mn)   continue;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)        continue;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)           continue;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) 
         {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
      
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) 
   {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);      // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
      if (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
      { 
         ll=OrderLots();                              // записываем количество лотов в ордере, закрытом по стопу
         return(true);                                // возвращаем истину
         }
      }
      
   return(False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}

Bitte sagen Sie mir, was mein Fehler ist.

Ich verstehe diesen Punkt nicht - wie Sie richtig bemerkt haben, gibt die Funktion den Wert vom Typ bool zurück, aber im Funktionsaufruf, in dem die Funktion den Wert vom Typ bool setzen muss.

Sie haben vorgeschlagen, andere Werttypen anzugeben.

Ich danke Ihnen.

 
solnce600:

Ich habe alles getan, was Sie gesagt haben. Alles kompiliert...... aber die Funktion funktioniert nicht beim Testen der EA..... alle Positionen der EA öffnet 0,1 Lose.

Könnten Sie mir bitte sagen, was mein Fehler ist?

Ich verstehe diesen Moment nicht - wie Sie richtig bemerkt haben, gibt die Funktion einen Wert des Typs bool zurück, aber im Funktionsaufruf, in dem die Funktion einen Wert des Typs bool angeben sollte

Schlagen Sie vor, andere Arten von Werten anzugeben.

Ich danke Ihnen.


bool isCloseLastPosByStop(string sy, int op, int mn, double ll)       //у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.

Warum haben Sie sie entfernt? Hätten Sie es gelassen, hätte alles funktioniert.

 
Vinin:

Warum es entfernen. Wenn sie das getan hätten, hätte alles funktioniert.

Ich frage mich ....., was dieses Zeichen bedeutet.... Ich kann mich nicht erinnern, dass im Lehrbuch etwas darüber steht.
Grund der Beschwerde: