[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 364
Hola! ¿Podríais decirme cómo registrar que una orden se abre sólo una vez (mientras se cumple la condición) y cuando la orden se cierra (aunque se siga cumpliendo la condición) no se ejecutan más órdenes?
Hola , ayuda con el código !!! Necesito una orden para abrir en base a una condición una vez por hora al comienzo de la hora ( en una nueva barra horaria) e independientemente del resultado una nueva apertura sólo después de 1 hora o 2 o 3 etc. y también sólo al comienzo de la hora (en una nueva barra horaria) dependiendo de la condición ?????
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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: Primero, muestre la parte del código donde se encuentran los valores de los indicadores para otros marcos temporales en el EA. La sospecha es que puede haber un error al acecho.
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);
Función de 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) {
...
}
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
cómo hacer que una orden se abra una vez por hora y sólo al principio de la hora
o
https://docs.mql4.com/ru/dateandtime/minute
sólo, por supuesto, para comprobar si se abre un pedido para que no se abra otro
Primero, muestre la parte del código donde se encuentran los valores de los indicadores para otros marcos temporales en el EA. La sospecha es que puede haber un error al acecho.
Función de Kim
Hmm, inténtalo de esta manera: