Makar, muchas gracias por señalar las comprobaciones que hay que hacer para no angustiar al servidor y banear al EAJ.
Controles realizados así
mod nivel de parada para la parada
//ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА if(sl<MarketInfo(Symbol(),MODE_STOPLEVEL)) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
sl= MarketInfo(Symbol(),MODE_STOPLEVEL);//СТОП ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
nivel de parada mod para el beneficio
// ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИif(tp<MarketInfo(Symbol(),MODE_STOPLEVEL)) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
tp= MarketInfo(Symbol(),MODE_STOPLEVEL);// ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
//---- ПРОВЕРКА НА РАЗРЕШЕНИЕ ТОРГОВ ПЕРЕД ОТКРЫТИЕМ ОРДЕРОВif(MarketInfo(Symbol(),MODE_TRADEALLOWED)==true)
{// начало есл торговля разрешена/*
куча проверок на условия открытия и само открытие ордеров
*/
} // КОЕНЦ ПРОВЕРКИ НА РАЗРЕШЕНИЕ ТОРГОВЛИelse//ИНАЧЕ ЕСЛИ ТОРГОВЛЯ НЕ РАЗРЕШЕНА
{ // НАЧАЛО ЭЛС ЕСЛИ ТОРГИ НЕ РАЗРЕШЕНЫ Print("ТОРГИ НЕ РАЗРЕШЕНЫ- ПЫТАТЬСЯ ОТКРЫТЬ ОРДЕРА НЕ БУДЕМ");
} // КОЕНЦ ЭЛС ЕСЛИ ТОРГИ НЕ РАЗРЕШЕНЫ
Comprobación del lote máximo y mínimo
Primero obtuve los valores de lote máximo y lote mínimo en las variables así
Y entonces compruebo en algún lugar de abajo como escribo el Grial
if(lot<Min_Lot) lot=Min_Lot; //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ МЕНЬШЕ ЧЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ЛОТ ПРИСВАЕМАЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРАif(lot>Max_Lot) lot=Max_Lot; //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ БОЛЬШЕ ЧЕМ МАКСИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ОЛТ ПРИСВАЕВАЕМ МАКС ЛОТ У БРОКЕРА
¿Es esto correcto o estoy equivocado?
No comprobé el cambio de paso de lote porque el lote se calcula como un porcentaje del depósito y allí este valor se multiplica por un punto y se normaliza - esta comprobación puede omitirse - ¿cierto, o debo hacerlo de todos modos? ¿Si todavía tenemos que comprobar cómo escribir este cheque?
El objetivo principal de todas estas comprobaciones es tener siempre el valor correcto de stop, beneficio y tamaño de lote, para poder empezar a abrir órdenes de forma general. Si todos estos parámetros están bien, el Asesor Experto no molestará al servidor; ¿entiendo esto correctamente?
//ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА if(sl<MarketInfo(Symbol(),MODE_STOPLEVEL)*1.5) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
sl= MarketInfo(Symbol(),MODE_STOPLEVEL)*1.5;//СТОП ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
// ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИif(tp<MarketInfo(Symbol(),MODE_STOPLEVEL)*1.5) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
tp= MarketInfo(Symbol(),MODE_STOPLEVEL)*1.5;// ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
Hola a todos, ¿alguien ha tenido algún problema con los puntos colgantes en el gráfico encontrado a través de iHighest/iLowest?
Prehistoria: Tengo una mínima experiencia en programación, estoy escribiendo un indicador en mql4 que debe mostrar los puntos en el gráfico, encontrados por las condiciones de if y conectarlos con líneas. Lógicamente, busca los puntos correctamente, pero los dibuja con un desplazamiento, luego para 2 barras, luego para 3 barras. He adjuntado el archivo con el código también.
int start()
{
int counted_bars=IndicatorCounted(); //хранит количество посчитанных индикатором баров. Функция IndicatorCounted() возвращает количество неизмененных баров после прошлого вызова функции start().int n,limit;
int val_index;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars; //количество последних баров, которые нужно пересчитать.if(limit>barsToProcess)
limit=barsToProcess;
for(n=0; n<=limit; n++)
{
if((Close[n+1]>Open[n+1] && Open[n+2]>=Close[n+2]) || (Close[n+1]>Open[n+1] && Open[n+3]>Close[n+3]))
{
val_index=iLowest(NULL,0,MODE_LOW,3,n+1);
myAZBuffer[n]=Low[val_index];
ExtLowBuffer[n]=Low[val_index];
}
elseif((Open[n+1]>Close[n+1] && Close[n+2]>=Open[n+2]) || (Close[n+1]<Open[n+1] && Close[n+3]>Open[n+3]))
{
val_index=iHighest(NULL,0,MODE_HIGH,3,n+1);
myAZBuffer[n]=High[val_index];
ExtHighBuffer[n]=High[val_index];
}
}
return (0);
}
Hola a todos, ¿alguien ha tenido algún problema con los puntos colgantes en el gráfico encontrado a través de iHighest/iLowest?
Prehistoria: Tengo una mínima experiencia en programación, estoy escribiendo un indicador en mql4 que debe mostrar los puntos en el gráfico, encontrados por las condiciones de if y conectarlos con líneas. Lógicamente, busca los puntos correctamente, pero los dibuja con un desplazamiento, luego para 2 barras, luego para 3 barras. He adjuntado el archivo con el código también.
Los puntos se dibujan correctamente, sin desplazamiento.
Si se cumple la condición y iHighest/iLowest son mayores o menores que el High/Low actual
los puntos se dibujan correctamente, sin desplazamiento
si se cumple la condición y iHighest/iLowest es mayor o menor que el High / Low actual
y luego dibuja
Así que, creo que estoy empezando a darme cuenta de mi error) Así que, con el fin de mostrar visualmente estos puntos en el lugar correcto, tengo que introducir algún contador separado en lugar de n para myAZBuffer[n], ExtLowBuffer[n], ExtHighBuffer[n] ? pero cómo hacer esto
azolotta: Así que, creo que estoy empezando a darme cuenta de mi error) Resulta que para mostrar visualmente estos puntos en el lugar correcto, necesito introducir algún contador separado en lugar de n para myAZBuffer[n], ExtLowBuffer[n], ExtHighBuffer[n] ? pero cómo hacerlo
No, lo has entendido bien.
la condición utiliza dos o tres barras del historial,
por eso se dibuja después de 2-3 barras cuando se cumple la condición
la condición utiliza dos o tres barras del historial,
por eso se dibuja después de 2-3 barras cuando se cumple la condición
Vale, entonces cómo rehago el código si necesito, por ejemplo, elegir el máximo de las últimas 3 barras (que cumplan las condiciones en el if) y ponerle un punto (¡justo en este máximo!), luego también encontrar el punto mínimo.
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.
MakarFX , ¿qué función tiene este enlace: qué función realiza?
input int BarTrade = 5; // Entiendo que este es el número de los períodos de seguimiento de 5.
int TimeBarTrade=BarTrade*Period()*60; //¿Por qué se multiplica por 60?
MakarFX , ¿qué función tiene este enlace: qué función realiza?
input int BarTrade = 5; // Entiendo que este es el número de los períodos de seguimiento de 5.
int TimeBarTrade=BarTrade*Period()*60; // ¿Cómo se entiende? ¿Por qué se multiplica por 60?
BarTrade*Periodo()*60
número de barras * marco temporal actual * 60 segundos
es decir, la cantidad de barras convertida en segundos
BarTrade*Periodo()*60
número de barras * marco temporal actual * 60 segundos
es decir, el número de compases convertidos en segundos
Puedes hacerlo así.
Si excluye los errores relacionados con
MODE_STOPLEVEL, MODE_TRADEALLOWED, MODE_MINLOT, MODE_LOTSTEP, MODE_MAXLOT
entonces los búhos no golpearán el servidor.
Makar, muchas gracias por señalar las comprobaciones que hay que hacer para no angustiar al servidor y banear al EAJ.
Controles realizados así
mod nivel de parada para la parada
nivel de parada mod para el beneficio
Comprobación de la autorización comercial
Comprobación del lote máximo y mínimo
Primero obtuve los valores de lote máximo y lote mínimo en las variables así
Y entonces compruebo en algún lugar de abajo como escribo el Grial
¿Es esto correcto o estoy equivocado?
No comprobé el cambio de paso de lote porque el lote se calcula como un porcentaje del depósito y allí este valor se multiplica por un punto y se normaliza - esta comprobación puede omitirse - ¿cierto, o debo hacerlo de todos modos? ¿Si todavía tenemos que comprobar cómo escribir este cheque?
El objetivo principal de todas estas comprobaciones es tener siempre el valor correcto de stop, beneficio y tamaño de lote, para poder empezar a abrir órdenes de forma general. Si todos estos parámetros están bien, el Asesor Experto no molestará al servidor; ¿entiendo esto correctamente?
Muchas gracias, Makar, por decirme qué comprobaciones hay que hacer para evitar el servidor y banear al EAJ.
//ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА// ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИAquí puede haber un error de 130 debido al deslizamiento.
Yo haría esto
Hola a todos, ¿alguien ha tenido algún problema con los puntos colgantes en el gráfico encontrado a través de iHighest/iLowest?
Prehistoria: Tengo una mínima experiencia en programación, estoy escribiendo un indicador en mql4 que debe mostrar los puntos en el gráfico, encontrados por las condiciones de if y conectarlos con líneas. Lógicamente, busca los puntos correctamente, pero los dibuja con un desplazamiento, luego para 2 barras, luego para 3 barras. He adjuntado el archivo con el código también.
Hola a todos, ¿alguien ha tenido algún problema con los puntos colgantes en el gráfico encontrado a través de iHighest/iLowest?
Prehistoria: Tengo una mínima experiencia en programación, estoy escribiendo un indicador en mql4 que debe mostrar los puntos en el gráfico, encontrados por las condiciones de if y conectarlos con líneas. Lógicamente, busca los puntos correctamente, pero los dibuja con un desplazamiento, luego para 2 barras, luego para 3 barras. He adjuntado el archivo con el código también.
Los puntos se dibujan correctamente, sin desplazamiento.
Si se cumple la condición y iHighest/iLowest son mayores o menores que el High/Low actual
atrae
los puntos se dibujan correctamente, sin desplazamiento
si se cumple la condición y iHighest/iLowest es mayor o menor que el High / Low actual
y luego dibuja
Así que, creo que estoy empezando a darme cuenta de mi error) Resulta que para mostrar visualmente estos puntos en el lugar correcto, necesito introducir algún contador separado en lugar de n para myAZBuffer[n], ExtLowBuffer[n], ExtHighBuffer[n] ? pero cómo hacerlo
No, lo has entendido bien.
la condición utiliza dos o tres barras del historial,
por eso se dibuja después de 2-3 barras cuando se cumple la condición
No, lo has entendido bien.
la condición utiliza dos o tres barras del historial,
por eso se dibuja después de 2-3 barras cuando se cumple la condición