Ho diversi indicatori collegati a diversi timeframe, se uso la funzione comment(), allora vengono visualizzati solo i valori degli indicatori per il timeframe testato, gli altri valori degli indicatori rimangono invariati, presumo che anche gli indicatori di altri timeframe non vengano presi in considerazione nel test.
...
Per prima cosa, mostrami la parte del codice dove trovi nell'EA i valori dell'indicatore per altri timeframe. Ho il sospetto che ci possa essere un errore.
Ciao, potresti dirmi come registrare che un ordine viene aperto solo una volta (mentre la condizione è soddisfatta) e quando l'ordine si chiude (anche se la condizione è ancora soddisfatta) non vengono eseguiti altri ordini!
Ciao, aiuto con il codice!!! Ho bisogno di un ordine per aprire sulla base di una condizione una volta all'ora all'inizio dell'ora (su una nuova barra oraria) e indipendentemente dal risultato una nuova apertura era solo dopo 1 ora o 2 o 3 ecc e anche solo all'inizio dell'ora (su una nuova barra oraria) a seconda della condizione ?????
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество секунд после открытия последней позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+datetime SecondsAfterOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество секунд после закрытия последней позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+datetime SecondsAfterCloseLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) t=OrderCloseTime();
}
}
}
}
}
}
return(TimeCurrent()-t);
}
paladin80: Per prima cosa, mostra la parte del codice dove trovi i valori dell'indicatore per altri timeframe nell'EA. Il sospetto è che ci possa essere un errore in agguato.
int pic1=GetExtremumZZBar("",PERIOD_M1,0,12,5,3);
int pic5=GetExtremumZZBar("",PERIOD_M5,0,12,5,3);
int pic15=GetExtremumZZBar("",PERIOD_M15,0,12,5,3);
int pic30=GetExtremumZZBar("",PERIOD_M30,0,12,5,3);
int pic60=GetExtremumZZBar("",PERIOD_H1,0,12,5,3);
int pic240=GetExtremumZZBar("",PERIOD_H4,0,12,5,3);
La funzione di Kim
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Возвращает номер бара экстремума ЗигЗага по его номеру. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL или "" - текущий символ) |//| tf - таймфрейм ( 0 - текущий ТФ) |//| ne - номер экстремума ( 0 - последний) |//| dp - ExtDepth |//| dv - ExtDeviation |//| bs - ExtBackstep |//+----------------------------------------------------------------------------+int GetExtremumZZBar(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
if (sy=="" || sy=="0") sy=Symbol();
double zz;
int i, k=iBars(sy, tf), ke=0;
for (i=0; i<k; i++) {
zz=iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i);
if (zz!=0) {
ke++;
if (ke>ne) return(i);
}
}
Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
return(-1);
}
int pic1=GetExtremumZZBar(NULL,PERIOD_M1,0,12,5,3);
int pic5=GetExtremumZZBar(NULL,PERIOD_M5,0,12,5,3);
int pic15=GetExtremumZZBar(NULL,PERIOD_M15,0,12,5,3);
int pic30=GetExtremumZZBar(NULL,PERIOD_M30,0,12,5,3);
int pic60=GetExtremumZZBar(NULL,PERIOD_H1,0,12,5,3);
int pic240=GetExtremumZZBar(NULL,PERIOD_H4,0,12,5,3);
//---int GetExtremumZZBar(string sy, int tf, int ne, int dp, int dv, int bc) {
...
}
Ho diversi indicatori collegati a diversi timeframe, se uso la funzione comment(), allora vengono visualizzati solo i valori degli indicatori per il timeframe testato, gli altri valori degli indicatori rimangono invariati, presumo che anche gli indicatori di altri timeframe non vengano presi in considerazione nel test.
...
come rendere un ordine aperto una volta all'ora e solo all'inizio dell'ora
o
https://docs.mql4.com/ru/dateandtime/minute
solo naturalmente per controllare se un ordine è aperto in modo che non ne venga aperto un altro
Per prima cosa, mostra la parte del codice dove trovi i valori dell'indicatore per altri timeframe nell'EA. Il sospetto è che ci possa essere un errore in agguato.
La funzione di Kim
Hmm, prova in questo modo: