[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 214

 

Guten Tag. Ich habe eine Funktion geschrieben, die die Anzahl der Bars zurückgeben soll, wenn ein Auftrag eröffnet wurde:

int BarLastOpenPose()
{
datetime t;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (t<OrderOpenPrice()) t=OrderOpenPrice();
}
}

return (iBarShift(Symbol(),Period(),t,true));
}

Es wird jedoch immer -1 zurückgegeben. Wo habe ich einen Fehler gemacht? Vielen Dank im Voraus.

 
first_may:

Guten Tag. Ich habe eine Funktion geschrieben, die die Anzahl der Bars zurückgeben soll, wenn ein Auftrag eröffnet wurde:

int BarLastOpenPose()
{
datetime t;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (t<OrderOpenPrice()) t=OrderOpenPrice();
}
}

return (iBarShift(Symbol(),Period(),t,true));
}

Es wird jedoch immer -1 zurückgegeben. Wo habe ich einen Fehler gemacht? Vielen Dank im Voraus.

Vielleicht sollte es so ablaufen:

return(iBarShift(Symbol(),Periode(),t)); das heißt, ohne true.

 
first_may:

Guten Tag. Ich habe eine Funktion geschrieben, die die Anzahl der Bars zurückgeben soll, wenn ein Auftrag eröffnet wurde:

int BarLastOpenPose()
{
datetime t;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (t<OrderOpenPrice()) t=OrderOpenPrice();
}
}

return (iBarShift(Symbol(),Period(),t,true));
}

Es wird jedoch immer -1 zurückgegeben. Wo habe ich einen Fehler gemacht? Ich danke Ihnen im Voraus.

Der Variablen t wird der Eröffnungskurs zugewiesen, obwohl sie als Ganzzahl deklariert ist

 
Vinin:

Der Variablen t wird der Eröffnungskurs zugewiesen, obwohl sie als Ganzzahl deklariert ist

Richtig, ich wollte OrderOpenTime() schreiben , schrieb aber OrderOpenPrice();
 
Danke, ich habe meinen Fehler erkannt.
 

Wie kann man einen solchen Zustand beschreiben?



Avatar
13
4absinth 25.09.2011 19:23

Bitte beraten Sie mich.

Wenn ein Extremum (z.B. Hoch) des ersten 5-Minuten-Balkens des aktuellen Tages mit einem Extremum des aktuellen Tages (auf dem Daily) zusammenfällt, dann tun wir etwas. Wie würden Sie es beschreiben?


Roger 25.09.2011 20:25 korrigiert | löschen
if(MathAbs(Hoch[1]-iHoch(NULL,PERIOD_D1,0))<Point)
 

helft guten Menschen!!!


Avatar
1
schlaff 25.09.2011 19:34

Hallo, liebe Nutzer der Ressource!

Bitte helfen Sie, wer mit dem Lesen/Schreiben einer realen Zahl in eine Datei konfrontiert ist.

Die Aufgabe ist es, aus einer Datei Saldo zu lesen, wenn der aktuelle Saldo mehr ist - überschreiben Sie die Datei.

Das Problem ist, dass es immer 0 (Null) ausgibt.

Beim Schreiben/Lesen von ganzen Zahlen habe ich solche Probleme nicht gefunden.

Hier ist der Code:

doppeltes Gleichgewicht;

int file_handle_bala;

file_handle_bala=FileOpen("file_bala.dat",FILE_BIN|FILE_READ);
//Position kopieren, falls die Datei leer ist - Position = 0
if (FileSize(file_handle_bala)>0)
{
balance=FileReadDouble(file_handle_bala,DOUBLE_VALUE);
Alert(balance); ------------------------------------- hier sollte Null stehen, obwohl der zuvor gespeicherte Saldo geschrieben werden sollte
FileClose(file_handle_bala);
if (AccountBalance()>balance) ------------------------------------ und diese Regel funktioniert nicht, da die folgende Meldung nichts ausgibt
{
file_handle_bala=FileOpen("file_bala.dat",FILE_BIN|FILE_WRITE);
balance=AccountBalance();
Alert(Bilanz);
FileWriteInteger(file_handle_bala,balance,DOUBLE_VALUE);
FileClose(file_handle_bala);
}
}
else // wenn die Datei leer ist
{
FileClose(file_handle_bala); // zuerst die geöffnete Datei schließen
file_handle_bala=FileOpen("file_bala.dat",FILE_BIN|FILE_WRITE); //zum Schreiben öffnen
balance=AccountBalance();
FileWriteDouble(file_handle_bala,balance,DOUBLE_VALUE);
FileClose(file_handle_bala);
}

Vielen Dank vorab!!!


Avatar
2222
Roger 25.9.2011 20:22

Beachten Sie diese Zeile

FileWriteInteger(file_handle_bala,balance,DOUBLE_VALUE);


3461
Zhunko 25/09/2011 20:27

1. Sie sollten respektvoller und freundlicher sein, wenn Sie Ihren Code veröffentlichen.

2. Sie versuchen, eine Ganzzahl von 8 Bytes zu schreiben. MQL4 verfügt nicht über einen solchen Datentyp.

 

\Was habe ich falsch gemacht? Warum so viele Fehler? (Ich muss wissen, wie hoch die(Ich muss wissen, den maximalen Wert des Indikators in den letzten 10 Bars). danke im Voraus.

 

Guten Tag an alle!

Ich schreibe meinen ersten Bot, und gleichzeitig mache ich mich mit MQL vertraut. Beim Testen habe ich folgendes Problem:

Die Order OP_BUYSTOP wird direkt nach der Ordererteilung ausgeführt, obwohl der Preis, dem Chart nach zu urteilen, den Zielwert nicht erreicht (siehe unten)

ZeitTypBestellungBandPreisS / LT / PGewinnBilanz
12011.09.19 02:10Kaufstopp10.0176.93576.73577.135
22011.09.19 02:10kaufen10.0176.93576.73577.135

USDJPY,M5 (visuell)

Datum 2011.09.19

Zeit 02:15

Offen 76.903

Hoch 76.909

Niedrig 76.890

Schließen 76.890

Band 66

Ich teste alle Zecken.

Vielleicht verstehe ich den Befehl OP_BUYSTOP nicht richtig? Zu kaufen, wenn der Preis einen bestimmten Wert übersteigt, richtig?

Hier ist ein Teil des Quellcodes, der eine Bestellung aufgibt

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP);

Vielen Dank an alle im Voraus!

 
Shniperson:

\Was habe ich falsch gemacht? Warum so viele Fehler? (Ich muss den maximalen Wert des Indikators für die letzten 10 Bars kennen). danke im Voraus.

Sie deklarieren die Funktion Hi:

double Hi(int pos=0)
innerhalb der Funktion start()
Grund der Beschwerde: