[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 104

 

Die Nummer des Monatstages wird dem Bestellkommentar hinzugefügt. Wie kann ich berechnen, wie viele (geschlossene) Aufträge es im Laufe des Tages mit dem Kommentar dieses Tages gab?

Ich weiß nicht, wie man das macht.

Kommentar = Tag();

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("order count = ",f,");
return(f);
}

 
An serega393
Ist Ihr Kommentar hinter der Funktion eine Zeichenkette oder eine ganze Zahl?
Die Funktion scheint richtig zusammengesetzt zu sein. Legen Sie einen Ausdruck aller eingehenden Variablen ein, um ein klares Bild zu erhalten.
 
serega393 писал(а) >>

Die Nummer des Monatstages wird dem Bestellkommentar hinzugefügt. Wie kann ich berechnen, wie viele (geschlossene) Aufträge es im Laufe des Tages mit dem Kommentar dieses Tages gab?

Ich weiß nicht, wie man das macht.

Kommentar = Tag();

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = gesamt - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("Bestellmenge = ",f,");
zurück(f);
}

comment = TimeDay(iTime(Symbol(),Period(),0)) ;
Und das Gleiche gilt für das Versenden von Bestellungen!
 
StatBars >> :
Und das Gleiche gilt für das Versenden von Bestellungen!

>> Es ist besser so:

   comment = TimeDay(TimeCurrent());
Es ist schneller, einfacher und zuverlässiger.
 

bool UseTF = true;


int start()
{

string comment = TimeDay(TimeCurrent());

if (OpenOrdersDayHistory(Symbol(), OP_SELL, 123, comment) > 0)
{
UseTF = false;
Print("No");
}
else
{
UseTF = true;
Print("Ja");

}

if (UseTF == true)
{
int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+10*Point, comment, 123, 0, Green);
}
return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("order count = ",f,");
return(f);
}

Hier probieren Sie es aus. Es gibt keine Aufträge in der Geschichte.

 

Guten Tag an alle.

Es ist mir nicht gelungen, die Eröffnung von schwebenden Aufträgen in meinem Code richtig zu "bewerten". Ich habe das Lernprogramm, die Hilfe und andere Informationen gelesen. Die Antwort ist wahrscheinlich da, aber ich kann sie einfach nicht herausfinden...


Hier ist das Problem. Ich habe einen Zeitraum, in dem ich nach dem Höchst- und Mindestpreis suche und diese Werte zwei globalen Variablen zuweise. Dann müssen wir einen schwebenden Auftrag zu diesem Preis eröffnen. Ich kann mich nicht für einen bestimmten Preis entscheiden. Ich möchte das Intervall des aktuellen Preises korrekt angeben.

1.Frage - wie sieht die Preisfunktion des aktuellen Balkens aus, z.B. um 6 Uhr morgens?

2 Wie gebe ich den Ticket-Parameter an, um die Bestellung abzuschließen?

Oder eine andere Möglichkeit, einen der beiden zuvor geöffneten Aufträge zu schließen?

Ich muss es auf diese Weise versuchen...


for (int i=1; i<=OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS)==true)

{

int T=OrderTicket();

int Cur_Hour2=Hour(); // Serverzeit in Stunden

double Cur_Min2=Minute(); // Serverzeit in Minuten

double Cur_time2=Cur_Hour2 + Cur_Min2/100; // Serverzeit

Alert(Cur_time2);

if (Cur_time2>=Time_of_buy_sell_2)

OrderClose(T,1,Ask,3,Red);

}

return; // Beenden von start()


Bitte urteilen Sie nicht streng:)

 
TheXpert писал(а) >>

So ist es besser:

Und zwar schneller, einfacher und zuverlässiger.

Ich stimme zu, aber meine Betonung lag eher auf dem anderen.

 
serega393 писал(а) >>

Versuchen Sie dies. Es gibt keine Aufträge in der Geschichte.

Es liest alles normal. Prüfen Sie, welchen Kommentar Sie nach dem Schließen haben. Einige Makler fügen ihre eigenen Einträge in den Kommentar ein, wenn ein Auftrag geschlossen wird.

 
int start()
{
   string comment = TimeDay(TimeCurrent());   
   if ( OpenOrdersDayHistory(Symbol(), OP_BUY, 123, comment) <3)   
   {      
      UseTF = true;      
      Print("Yes");   
   }
   else   
   {      
      UseTF = false;      
      Print("No");   
   }    
   
   if ( UseTF == true)   
   {      
      int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+100*Point, comment, 123, 0, Green);   
   }
   return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{   
   int n;   
   int f = 0;   
   int total = OrdersHistoryTotal();    
   for ( n = total - 1; n >= 0; n--)   
   {      
      OrderSelect( n, SELECT_BY_POS, MODE_HISTORY);
      Print(OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic," ",StringFind(OrderComment(), comment,0)>=0);
      if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && StringFind(OrderComment(), comment,0)>=0)          
            f++;   
   }    
   Print("колл-во ордеров = ", f,"");   
   return( f);
} 
 
Können Sie einen EA vorschlagen, der alle Positionen (auch die unrentablen) schließt, wenn ein bestimmter Gewinn erreicht ist und alle nicht ausgeführten Pending Orders entfernt?