Тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта...
Dice di no. https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties#enum_position_property_integer
Forse c'è una buona ragione per questo. Dal mio punto di vista, non sembra affatto giusto.
Anche se prima era scritto che sì, e il Position ID è stato cambiato.
Chiedo agli sviluppatori di chiarire la situazione. Quando il PositionID cambia, dopo cinque lanci, la scheda Trading History nella vista Posizioni mostrerà cinque posizioni.
Ora (il PositionID non cambia durante un flip) solo una posizione è sempre mostrata. Questa è, a dir poco, una strana soluzione.
Nella modalità "per tick reali", il Tester genera barre in modo indipendente - all'arrivo dei tick. Per questo motivo, la storia delle barre di un simbolo personalizzato nel Terminale e nel Tester può essere molto diversa.
Succede spesso che dopo la compilazione dell'EA, le impostazioni del Tester vengono resettate, se questo EA è stato precedentemente selezionato in esso. Questo è a dir poco fastidioso. Dopo ogni compilazione, dobbiamo andare nell'albero degli Expert Advisors e cercare il nostro EA. Se qualcuno non lo sa, c'è una ricetta per non far resettare il Tester. Dovresti eseguire l'Expert Advisor una volta in modalità debug sulla cronologia - CTRL+F5. Dopo di che qualsiasi ricompilazione non influenzerà le impostazioni di Tester.
fxsaber: Abbiamo notato che le impostazioni del tester vengono spesso resettate dopo la compilazione, se questo Expert Advisor è stato precedentemente selezionato in esso. Questo è a dir poco fastidioso. Dopo ogni compilazione, dobbiamo andare nell'albero degli Expert Advisors e cercare il nostro EA. Se qualcuno non lo sa, c'è una ricetta per non far resettare il Tester. Dovresti eseguire l'Expert Advisor una volta in modalità debug sulla cronologia - CTRL+F5. Dopo di che qualsiasi ricompilazione non influenzerà le impostazioni di Tester.
Stessa cosa, l'ho notato ieri!
Risolto in questo modo: dopo aver compilato la nuova versione (Nuovo nome del file) devi riavviare il terminale. - Forse non aggiorna mqlcache
Dopo di che, il tester non ripristina il file precedente durante la compilazione.
Questo problema è apparso diverse volte prima, poi è scomparso. Poi è riapparsa di nuovo....
Z.I. Non ha letto il significato delle sue parole, e lei stava consigliando piuttosto che chiedendo...
C'è qualcuno qui? Controlla lo script di download della storia...
Sono l'unico che muore congelato? Lo script è preso dall'aiuto...
//+------------------------------------------------------------------+ //| 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");
}
//+------------------------------------------------------------------+
Un ordine a mercato è stato piazzato aprendo una posizione e OrdersTotal è aumentato di uno.
È stato eseguito e OrdersTotal è diminuito di uno, ma PositionsTotal non è aumentato di uno. In altre parole, c'è una posizione, ma il terminale non lo sa.
Per esempio, non ci sono posizioni o ordini - PositionsTotal = 0, OrdersTotal = 0.
Hai impostato un ordine a mercato. PositionsTotal = 0, OrdersTotal = 1.
L'ordine a mercato viene eseguito - OrdersTotal = 0. Ma PositionsTotal = 0!
logico - è un colpo di stato.
Ha scritto le informazioni senza valutarne la logicità. Se è interessato, il PositionID dovrebbe essere cambiato allo stesso modo.
Non sta cambiando ora. Se questo è un bug, sarebbe fantastico!
Quindi una domanda. La transazione DEAL_ENTRY_INOUT deve cambiare il PositionID in DEAL_ORDER?
Penso che dovrebbe. Questo comportamento sarebbe molto comodo/giusto.Ha scritto le informazioni senza valutarne la logica. Se è interessato, tuttavia, il PositionID dovrebbe essere cambiato allo stesso modo.
Non sta cambiando ora. Se questo è un bug, sarebbe fantastico!
Quindi una domanda. La transazione DEAL_ENTRY_INOUT deve cambiare il PositionID in DEAL_ORDER?
Dice di no. https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties#enum_position_property_integer
Anche se è stato scritto prima che sì, e il Position ID è stato cambiato.
Dice di no. https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties#enum_position_property_integer
Forse c'è una buona ragione per questo. Dal mio punto di vista, non sembra affatto giusto.
Anche se prima era scritto che sì, e il Position ID è stato cambiato.
Chiedo agli sviluppatori di chiarire la situazione. Quando il PositionID cambia, dopo cinque lanci, la scheda Trading History nella vista Posizioni mostrerà cinque posizioni.
Ora (il PositionID non cambia durante un flip) solo una posizione è sempre mostrata. Questa è, a dir poco, una strana soluzione.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Nuova versione di MetaTrader 5 build 1930: Finestre grafiche fluttuanti e librerie .Net in MQL5
fxsaber, 2018.11.09 16:19
Nella modalità "per tick reali", il Tester genera barre in modo indipendente - all'arrivo dei tick. Per questo motivo, la storia delle barre di un simbolo personalizzato nel Terminale e nel Tester può essere molto diversa.
Abbiamo notato che le impostazioni del tester vengono spesso resettate dopo la compilazione, se questo Expert Advisor è stato precedentemente selezionato in esso. Questo è a dir poco fastidioso. Dopo ogni compilazione, dobbiamo andare nell'albero degli Expert Advisors e cercare il nostro EA. Se qualcuno non lo sa, c'è una ricetta per non far resettare il Tester. Dovresti eseguire l'Expert Advisor una volta in modalità debug sulla cronologia - CTRL+F5. Dopo di che qualsiasi ricompilazione non influenzerà le impostazioni di Tester.
Stessa cosa, l'ho notato ieri!
Risolto in questo modo: dopo aver compilato la nuova versione (Nuovo nome del file) devi riavviare il terminale. - Forse non aggiorna mqlcache
Dopo di che, il tester non ripristina il file precedente durante la compilazione.
Questo problema è apparso diverse volte prima, poi è scomparso. Poi è riapparsa di nuovo....
Z.I. Non ha letto il significato delle sue parole, e lei stava consigliando piuttosto che chiedendo...
C'è qualcuno qui? Controlla lo script di download della storia...
Sono l'unico che muore congelato? Lo script è preso dall'aiuto...
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Situazione poco chiara quando gli ordini pendenti si attivano.
fxsaber, 2018.11.26 13:37
C'è anche una situazione come questa:
Per esempio, non ci sono posizioni o ordini - PositionsTotal = 0, OrdersTotal = 0.
Hai impostato un ordine a mercato. PositionsTotal = 0, OrdersTotal = 1.
L'ordine a mercato viene eseguito - OrdersTotal = 0. Ma PositionsTotal = 0!
tale che PositionsTotal può (non è difficile da riprodurre) cambiare.
Per esempio, PositionsTotal restituisce zero subito prima di PositionsSelectBytTicket, che restituisce true.