OrdersHistoryTotal() gibt 0 zurück
4 Antworten
Steve Grün
vor 5 Jahren #238359
Hallo,
Ich versuche, die letzte Ordergröße für eine bestimmte Magicnumber und ein Symbol zu erhalten, aber OrdersHistoryTotal() gibt immer 0 zurück, obwohl ich Orders in meinem Account History Tab auf meinem mt4 Terminal habe.
Mein Code ist unten.
extern int lv_hour = 6;
extern int lv_minute = 0;
extern int lv_orderMagicNumber = 0; // hier die korrekte Magicnumber eingeben
int lv_count = 0;
double lv_DefaultPositionSize = 5;
double lv_ReturnPositionSize = 0;
void start()
{
if (TimeHour(Time[0]) == lv_hour && Minute() == lv_minute && lv_count == 0)
{
lv_ReturnPositionSize = sqGetLastPositionSize(lv_orderMagicNumber);
if (lv_ReturnPositionSize != 0)
{
lv_DefaultPositionSize = lv_ReturnPositionSize; //Standardpositionsgröße überschreiben
}
printf("lv_DefaultPositionSize = " +lv_DefaultPositionSize);
lv_count = 1; // stellt sicher, dass es nur einmal im Journal gedruckt wird
}
}
double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=OrdersHistoryTotal(); i>=0; i-) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol()) {
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {
return(OrderLots());
}
}
}
zurück(0);
}
Vielen Dank im Voraus
Steve
coensio
vor 5 Jahren #238361
Sie könnten zum Beispiel eine kleine Fehlersuche durchführen und herausfinden, wo es schief läuft.
double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=OrdersHistoryTotal(); i>=0; i-) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol())
{
Print("Symbol:",OrderSymbol());
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {
Print("Magic: ",OrderMagicNumber());
return(OrderLots());
}
}
}
zurück(0);
}
Dies ist eine falsche Aussage.
Steve Grün
vor 5 Jahren #238362
Danke Coensie,
Haben Sie Ihren Code ausgeführt. Es geht nicht einmal in die if(OrderSelect-Anweisung als OrderSymbol() kehrt als NULL und ich spekulieren OrderSelect kehrt als falsch das ist warum?
siehe Modifikation Ihrer Funktion sqGetLastPositionSize unten:
double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=OrdersHistoryTotal(); i>=0; i-) {
Print("OrderSymbol():",OrderSymbol());
Print("Symbol():",Symbol());
Print("OrderMagicNumber():",OrderMagicNumber());
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol())
{
Print("Symbol:",OrderSymbol());
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber) {
Print("Magic: ",OrderMagicNumber());
return(OrderLots());
}
}
}
zurück(0);
}
Irgendwelche Ideen?
coensio
vor 5 Jahren #238365
Dieser wurde auf meinem Konto verifiziert:
double sqGetLastPositionSize(int orderMagicNumber)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i-)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol() == Symbol())
{
if(orderMagicNumber == 0 || OrderMagicNumber() == orderMagicNumber)
{
Print("Magic:",OrderMagicNumber()," OrderLots: ",OrderLots());
return(OrderLots());
}
}
}
zurück(0);
}
Dies ist eine falsche Aussage.
Steve Grün
vor 5 Jahren #238369
Funktioniert immer noch nicht, vielleicht weil es ein Demokonto ist?
Meine letzte Bestellung war:
166861186 2019.01.24 08:00:01 kaufen 0,79 usdjpy 109,625 109,690 0,000 2019.01.24 08:37:29 109,691 0,00 0,00 0,00 47,53
Dies war meine Ausgabe von Ihrem Code:
2019.01.26 12:39:35.900 USDJPY,H1: 109397 Tick-Ereignisse (24 Balken, 110397 Balkenzustände) verarbeitet in 0:00:00.016 (Gesamtdauer 0:00:02.359)2019.01.26 12:39:35.900 USDJPY,H1: 109397 Tick-Ereignisse (24 Balken, 110397 Balkenzustände) verarbeitet in 0:00:00.016 (Gesamtdauer 0:00:02.359)2019.01.26 12:39:35.892 2019.01.25 06:00:00 dummy USDJPY,H1: lv_DefaultPositionSize = 52019.01.26 12:39:35.889 2019.01.25 00:00:00 dummy inputs: lv_hour=6; lv_minute=0; lv_orderMagicNumber=2670682; 2019.01.26 12:39:33.536 TestGenerator: current spread 14 used
Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)