Тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта...
C'est écrit non. https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties#enum_position_property_integer
Il y a peut-être une bonne raison à cela. De mon point de vue, ça ne semble pas correct du tout.
Bien qu'avant il ait été écrit que oui, et l'ID de la position a été changé.
Je demande aux développeurs de clarifier la situation. Lorsque l'ID de la position change, après cinq retournements, l'onglet Historique de la négociation dans la vue Positions affichera cinq positions.
Maintenant (le PositionID ne change pas pendant un flip), une seule position est toujours affichée. Il s'agit, pour le moins, d'une solution étrange.
En mode "par ticks réels", le Testeur génère les barres indépendamment - à l'arrivée des ticks. Pour cette raison, l'historique des barres d'un symbole personnalisé dans le Terminal et dans le Testeur peut être très différent.
Il arrive souvent qu'après la compilation de l'EA, les paramètres du Testeur soient réinitialisés, si cet EA y était précédemment sélectionné. C'est agaçant, c'est le moins qu'on puisse dire. Après chaque compilation, nous devons aller dans l'arbre des Expert Advisors et rechercher notre EA. Si quelqu'un ne le sait pas, il existe une recette pour que le Testeur ne se réinitialise pas. Vous devez exécuter le conseiller expert une fois en mode débogage sur l'historique - CTRL+F5. Après cela, toute recompilation n'affectera pas les paramètres de Tester.
fxsaber: J'ai remarqué que les paramètres du Testeur sont souvent réinitialisés après la compilation, si ce Conseiller Expert a été précédemment sélectionné dans celui-ci. C'est agaçant, c'est le moins qu'on puisse dire. Après chaque compilation, nous devons aller dans l'arbre des Expert Advisors et rechercher notre EA. Si quelqu'un ne le sait pas, il existe une recette pour que le Testeur ne se réinitialise pas. Vous devez exécuter le conseiller expert une fois en mode débogage sur l'historique - CTRL+F5. Après cela, toute recompilation n'affectera pas les paramètres de Tester.
Même chose, je l'ai remarqué hier !
Corrigé de cette façon : Après avoir compilé la nouvelle version (Nouveau nom de fichier), vous devez redémarrer le terminal. - Peut-être qu'il ne met pas à jour mqlcache
Après cela, le testeur ne revient pas au fichier précédent pendant la compilation.
Ce problème est apparu plusieurs fois auparavant, puis a disparu. Puis elle est réapparue à nouveau....
P.S. Je n'ai pas lu le sens de vos mots, et vous donniez des conseils plutôt que de demander...
Il y a quelqu'un ? Vérifiez le script de téléchargement de l'histoire...
Suis-je le seul à être gelé à mort ? Le script est tiré de l'aide...
//+------------------------------------------------------------------+ //| 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 ordre au marché a été placé pour ouvrir une position et le total des ordres a augmenté de un.
Elle a été exécutée et le total des commandes a diminué de un, mais le total des positions n'a pas augmenté de un. En d'autres termes, il existe une position, mais le terminal ne la connaît pas.
Par exemple, il n'y a pas de positions ou d'ordres - PositionsTotal = 0, OrdersTotal = 0.
Vous placez un ordre au marché. PositionsTotal = 0, CommandesTotal = 1.
L'ordre au marché est exécuté - OrdersTotal = 0. Mais PositionsTotal = 0!
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
logique - c'est un coup d'état.
Rédiger l'information sans en évaluer la logique. S'il est affecté, le PositionID devrait avoir changé de la même manière.
Ça ne change pas maintenant. Si c'est un bogue, ce serait génial !
D'où une question. La transaction DEAL_ENTRY_INOUT doit-elle changer le PositionID en DEAL_ORDER ?
Je pense que ça devrait. Ce comportement serait très pratique/droit.Rédiger l'information sans en évaluer la logique. S'il est affecté, cependant, le PositionID devrait avoir changé de la même manière.
Ça ne change pas maintenant. Si c'est un bogue, ce serait génial !
D'où une question. La transaction DEAL_ENTRY_INOUT doit-elle changer le PositionID en DEAL_ORDER ?
C'est écrit non. https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties#enum_position_property_integer
Bien qu'il ait été écrit plus tôt que oui, et que l'ID de la position ait été changé.
C'est écrit non. https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties#enum_position_property_integer
Il y a peut-être une bonne raison à cela. De mon point de vue, ça ne semble pas correct du tout.
Bien qu'avant il ait été écrit que oui, et l'ID de la position a été changé.
Je demande aux développeurs de clarifier la situation. Lorsque l'ID de la position change, après cinq retournements, l'onglet Historique de la négociation dans la vue Positions affichera cinq positions.
Maintenant (le PositionID ne change pas pendant un flip), une seule position est toujours affichée. Il s'agit, pour le moins, d'une solution étrange.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Nouvelle version de MetaTrader 5 build 1930 : fenêtres graphiques flottantes et bibliothèques .Net dans MQL5
fxsaber, 2018.11.09 16:19
En mode "par ticks réels", le Testeur génère les barres indépendamment - à l'arrivée des ticks. Pour cette raison, l'historique des barres d'un symbole personnalisé dans le Terminal et dans le Testeur peut être très différent.
J'ai remarqué que les paramètres du Testeur sont souvent réinitialisés après la compilation, si ce Conseiller Expert a été précédemment sélectionné dans celui-ci. C'est agaçant, c'est le moins qu'on puisse dire. Après chaque compilation, nous devons aller dans l'arbre des Expert Advisors et rechercher notre EA. Si quelqu'un ne le sait pas, il existe une recette pour que le Testeur ne se réinitialise pas. Vous devez exécuter le conseiller expert une fois en mode débogage sur l'historique - CTRL+F5. Après cela, toute recompilation n'affectera pas les paramètres de Tester.
Même chose, je l'ai remarqué hier !
Corrigé de cette façon : Après avoir compilé la nouvelle version (Nouveau nom de fichier), vous devez redémarrer le terminal. - Peut-être qu'il ne met pas à jour mqlcache
Après cela, le testeur ne revient pas au fichier précédent pendant la compilation.
Ce problème est apparu plusieurs fois auparavant, puis a disparu. Puis elle est réapparue à nouveau....
P.S. Je n'ai pas lu le sens de vos mots, et vous donniez des conseils plutôt que de demander...
Il y a quelqu'un ? Vérifiez le script de téléchargement de l'histoire...
Suis-je le seul à être gelé à mort ? Le script est tiré de l'aide...
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Situation peu claire lorsque les ordres en attente se déclenchent.
fxsaber, 2018.11.26 13:37
Il y a aussi une situation comme celle-ci :
Par exemple, il n'y a pas de positions ou d'ordres - PositionsTotal = 0, OrdersTotal = 0.
Vous placez un ordre au marché. PositionsTotal = 0, CommandesTotal = 1.
L'ordre au marché est exécuté - OrdersTotal = 0. Mais PositionsTotal = 0!
de sorte que PositionsTotal puisse changer (ce qui n'est pas difficile à reproduire).
Par exemple, PositionsTotal renvoie zéro juste avant PositionsSelectBytTicket, qui renvoie vrai.