Sie haben die Informationen geschrieben, ohne die Logik zu bewerten. Wenn sie betroffen ist, sollte sich die PositionID auf die gleiche Weise geändert haben.
Das ändert sich auch jetzt nicht. Wenn dies ein Fehler ist, wäre das großartig!
Sie haben die Informationen geschrieben, ohne die Logik zu bewerten. Wenn sie jedoch betroffen ist, sollte sich die PositionID auf die gleiche Weise geändert haben.
Das ändert sich auch jetzt nicht. Wenn dies ein Fehler ist, wäre das großartig!
Тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта...
Hier steht nein. https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties#enum_position_property_integer
Vielleicht gibt es dafür einen guten Grund. Aus meiner Sicht ist das überhaupt nicht in Ordnung.
Obwohl es vorher geschrieben wurde, dass ja, und die Positions-ID geändert wurde.
Ich bitte die Entwickler, die Situation zu klären. Wenn sich die Positions-ID ändert, werden auf der Registerkarte Handelsverlauf in der Positionsansicht nach fünf Umdrehungen fünf Positionen angezeigt.
Jetzt (die PositionID ändert sich nicht während einer Umdrehung) wird immer nur eine Position angezeigt. Dies ist, gelinde gesagt, eine seltsame Lösung.
Im Modus "durch echte Ticks" erzeugt der Tester die Balken selbständig - beim Eintreffen der Ticks. Aus diesem Grund kann der Balkenverlauf eines benutzerdefinierten Symbols im Terminal und im Tester sehr unterschiedlich sein.
Es kommt häufig vor, dass nach dem Kompilieren des EA die Einstellungen des Testers zurückgesetzt werden, wenn dieser EA zuvor in ihm ausgewählt wurde. Das ist, gelinde gesagt, ärgerlich. Nach jeder Kompilierung müssen wir den Baum der Expert Advisors aufrufen und unseren EA suchen. Falls es jemand nicht weiß: Es gibt ein Rezept, mit dem sich der Tester nicht zurücksetzen lässt. Führen Sie den Expert Advisor einmal im Debug-Modus in der Historie aus - CTRL+F5. Danach wirkt sich eine Neukompilierung nicht mehr auf die Testereinstellungen aus.
fxsaber: Es kommt häufig vor, dass nach der Erstellung des Expert Advisors die Einstellungen des Testers zurückgesetzt werden, wenn dieser Expert Advisor zuvor darin ausgewählt wurde. Das ist, gelinde gesagt, ärgerlich. Nach jeder Kompilierung müssen wir den Baum der Expert Advisors aufrufen und unseren EA suchen. Falls es jemand nicht weiß: Es gibt ein Rezept, mit dem sich der Tester nicht zurücksetzen lässt. Führen Sie den Expert Advisor einmal im Debug-Modus in der Historie aus - CTRL+F5. Danach wirkt sich eine Neukompilierung nicht mehr auf die Testereinstellungen aus.
Das Gleiche, ich habe es gestern bemerkt!
So wurde es behoben: Nach dem Kompilieren der neuen Version (neuer Dateiname) muss das Terminal neu gestartet werden. - Vielleicht wird der mqlcache nicht aktualisiert
Danach wird der Tester während der Kompilierung nicht auf die vorherige Datei zurückgesetzt.
Dieses Problem ist schon mehrmals aufgetreten und dann wieder verschwunden. Dann tauchte sie wieder auf....
Z.I. hat die Bedeutung Ihrer Worte nicht verstanden, und Sie haben eher geraten als gefragt...
Ist jemand da? Überprüfen Sie das Skript zum Herunterladen der Geschichte...
Bin ich der Einzige, der erfroren ist? Das Skript stammt aus der Hilfe...
//+------------------------------------------------------------------+ //| TestLoadHistory.mq5 | //| Copyright 2009, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright"2009, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.02"#property script_show_inputs//--- input parameters //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ voidOnStart()
{
int all_symbols=SymbolsTotal(false); string sym_name="";
Print("Load symbols ",all_symbols);
for(int k=0;k<all_symbols;k++)
if((sym_name=SymbolName(k,false))!="")
{
SymbolSelect(sym_name,true);
Print(k," Symbol name ",sym_name);
int res=CheckLoadHistory(sym_name,PERIOD_M1,(TimeCurrent()-60*60*24*5));
switch(res)
{
case -1 : Print("Unknown symbol ",sym_name); break;
case -2 : Print("Requested bars more than max bars in chart ",sym_name); break;
case -3 : Print("Program was stopped ",sym_name); break;
case -4 : Print("Indicator shouldn't load its own data ",sym_name); break;
case -5 : Print("Load failed ",sym_name); break;
case0 : Print("Loaded OK ",sym_name); break;
case1 : Print("Loaded previously ",sym_name); break;
case2 : Print("Loaded previously and built ",sym_name); break;
default : Print("Unknown result ",sym_name);
}
datetime first_date;
SeriesInfoInteger(sym_name,PERIOD_M1,SERIES_FIRSTDATE,first_date);
int bars=Bars(sym_name,PERIOD_M1);
Print("First date ",first_date," - ",bars," bars");
}
//--- //---
}
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int CheckLoadHistory(string symbol,ENUM_TIMEFRAMES period,datetime start_date)
{
datetime first_date=0;
datetime times[100];
//--- check symbol & period if(symbol==NULL || symbol=="") symbol=Symbol();
if(period==PERIOD_CURRENT) period=Period();
//--- check if symbol is selected in the MarketWatch if(!SymbolInfoInteger(symbol,SYMBOL_SELECT))
{
if(GetLastError()==ERR_MARKET_UNKNOWN_SYMBOL) return(-1);
SymbolSelect(symbol,true);
}
//--- check if data is present SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date);
if(first_date>0 && first_date<=start_date) return(1);
//--- don't ask for load of its own data if it is an indicator if(MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR && Period()==period && Symbol()==symbol)
return(-4);
//--- second attempt if(SeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date))
{
//--- there is loaded data to build timeseries if(first_date>0)
{
//--- force timeseries build CopyTime(symbol,period,first_date+PeriodSeconds(period),1,times);
//--- check date if(SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date))
if(first_date>0 && first_date<=start_date) return(2);
}
}
//--- max bars in chart from terminal options int max_bars=TerminalInfoInteger(TERMINAL_MAXBARS);
//--- load symbol history info datetime first_server_date=0;
while(!SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE,first_server_date) && !IsStopped())
Sleep(5);
//--- fix start date for loading if(first_server_date>start_date) start_date=first_server_date;
if(first_date>0 && first_date<first_server_date)
Print("Warning: first server date ",first_server_date," for ",symbol,
" does not match to first series date ",first_date);
//--- load data step by step int fail_cnt=0;
while(!IsStopped())
{
//--- wait for timeseries build while(!SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED) && !IsStopped())
Sleep(5);
//--- ask for built bars int bars=Bars(symbol,period);
if(bars>0)
{
if(bars>=max_bars) return(-2);
//--- ask for first date if(SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date))
if(first_date>0 && first_date<=start_date) return(0);
}
//--- copying of next part forces data loading int copied=CopyTime(symbol,period,bars,100,times);
if(copied>0)
{
//--- check for data if(times[0]<=start_date) return(0);
if(bars+copied>=max_bars) return(-2);
fail_cnt=0;
}
else
{
//--- no more than 100 failed attempts
fail_cnt++;
if(fail_cnt>=100) return(-5);
Sleep(10);
}
}
//--- stopped return(-3);
}
//+------------------------------------------------------------------+ //| Возвращает строкое значение периода | //+------------------------------------------------------------------+ string GetPeriodName(ENUM_TIMEFRAMES period)
{
if(period==PERIOD_CURRENT) period=Period();
//--- switch(period)
{
casePERIOD_M1: return("M1");
casePERIOD_M2: return("M2");
casePERIOD_M3: return("M3");
casePERIOD_M4: return("M4");
casePERIOD_M5: return("M5");
casePERIOD_M6: return("M6");
casePERIOD_M10: return("M10");
casePERIOD_M12: return("M12");
casePERIOD_M15: return("M15");
casePERIOD_M20: return("M20");
casePERIOD_M30: return("M30");
casePERIOD_H1: return("H1");
casePERIOD_H2: return("H2");
casePERIOD_H3: return("H3");
casePERIOD_H4: return("H4");
casePERIOD_H6: return("H6");
casePERIOD_H8: return("H8");
casePERIOD_H12: return("H12");
casePERIOD_D1: return("Daily");
casePERIOD_W1: return("Weekly");
casePERIOD_MN1: return("Monthly");
}
//--- return("unknown period");
}
//+------------------------------------------------------------------+
Sie wurde ausgeführt und OrdersTotal verringerte sich um eins, aber PositionsTotal erhöhte sich nicht um eins. Mit anderen Worten: Es gibt eine Position, aber das Terminal weiß nichts davon.
Zum Beispiel gibt es keine Positionen oder Aufträge - PositionsTotal = 0, OrdersTotal = 0.
Sie erteilen einen Börsenauftrag. PositionsTotal = 0, OrdersTotal = 1.
Der Marktauftrag wird ausgeführt - OrdersTotal = 0. Aber PositionsTotal = 0!
logisch - es ist ein Coup.
Sie haben die Informationen geschrieben, ohne die Logik zu bewerten. Wenn sie betroffen ist, sollte sich die PositionID auf die gleiche Weise geändert haben.
Das ändert sich auch jetzt nicht. Wenn dies ein Fehler ist, wäre das großartig!
Deshalb eine Frage. Sollte die Transaktion DEAL_ENTRY_INOUT die PositionID in DEAL_ORDER ändern?
Ich denke, das sollte es. Dieses Verhalten wäre sehr praktisch/richtig.Sie haben die Informationen geschrieben, ohne die Logik zu bewerten. Wenn sie jedoch betroffen ist, sollte sich die PositionID auf die gleiche Weise geändert haben.
Das ändert sich auch jetzt nicht. Wenn dies ein Fehler ist, wäre das großartig!
Deshalb eine Frage. Sollte die Transaktion DEAL_ENTRY_INOUT die PositionID in DEAL_ORDER ändern?
Hier steht nein. https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties#enum_position_property_integer
Obwohl es früher geschrieben wurde, dass ja, und die Positions-ID wurde geändert.
Hier steht nein. https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties#enum_position_property_integer
Vielleicht gibt es dafür einen guten Grund. Aus meiner Sicht ist das überhaupt nicht in Ordnung.
Obwohl es vorher geschrieben wurde, dass ja, und die Positions-ID geändert wurde.
Ich bitte die Entwickler, die Situation zu klären. Wenn sich die Positions-ID ändert, werden auf der Registerkarte Handelsverlauf in der Positionsansicht nach fünf Umdrehungen fünf Positionen angezeigt.
Jetzt (die PositionID ändert sich nicht während einer Umdrehung) wird immer nur eine Position angezeigt. Dies ist, gelinde gesagt, eine seltsame Lösung.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Neue Version von MetaTrader 5 build 1930: Schwebende Diagrammfenster und .Net-Bibliotheken in MQL5
fxsaber, 2018.11.09 16:19
Im Modus "durch echte Ticks" erzeugt der Tester die Balken selbständig - beim Eintreffen der Ticks. Aus diesem Grund kann der Balkenverlauf eines benutzerdefinierten Symbols im Terminal und im Tester sehr unterschiedlich sein.
Es kommt häufig vor, dass nach der Erstellung des Expert Advisors die Einstellungen des Testers zurückgesetzt werden, wenn dieser Expert Advisor zuvor darin ausgewählt wurde. Das ist, gelinde gesagt, ärgerlich. Nach jeder Kompilierung müssen wir den Baum der Expert Advisors aufrufen und unseren EA suchen. Falls es jemand nicht weiß: Es gibt ein Rezept, mit dem sich der Tester nicht zurücksetzen lässt. Führen Sie den Expert Advisor einmal im Debug-Modus in der Historie aus - CTRL+F5. Danach wirkt sich eine Neukompilierung nicht mehr auf die Testereinstellungen aus.
Das Gleiche, ich habe es gestern bemerkt!
So wurde es behoben: Nach dem Kompilieren der neuen Version (neuer Dateiname) muss das Terminal neu gestartet werden. - Vielleicht wird der mqlcache nicht aktualisiert
Danach wird der Tester während der Kompilierung nicht auf die vorherige Datei zurückgesetzt.
Dieses Problem ist schon mehrmals aufgetreten und dann wieder verschwunden. Dann tauchte sie wieder auf....
Z.I. hat die Bedeutung Ihrer Worte nicht verstanden, und Sie haben eher geraten als gefragt...
Ist jemand da? Überprüfen Sie das Skript zum Herunterladen der Geschichte...
Bin ich der Einzige, der erfroren ist? Das Skript stammt aus der Hilfe...
Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien
Unklare Situation, wenn schwebende Aufträge ausgelöst werden.
fxsaber, 2018.11.26 13:37
Es gibt auch eine Situation wie diese:
Zum Beispiel gibt es keine Positionen oder Aufträge - PositionsTotal = 0, OrdersTotal = 0.
Sie erteilen einen Börsenauftrag. PositionsTotal = 0, OrdersTotal = 1.
Der Marktauftrag wird ausgeführt - OrdersTotal = 0. Aber PositionsTotal = 0!
so dass sich PositionsTotal(nicht schwer zu reproduzieren) ändern kann.
Zum Beispiel gibt PositionsTotal kurz vor PositionsSelectBytTicket, das true zurückgibt, null zurück.