[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1129

 

Por favor, explique por qué no se muestra nada en la ventana del indicador como resultado.

Código:

#property indicador_separar_ventana
#property indicator_buffers 1
#property indicator_color1 Rojo
//---- buffers
doble Buf_0[];

int init()
{
//---- indicadores

SetIndexBuffer(0,Buf_0);
SetIndexStyle(0,DRAW_LINE, STYLE_SOLID,2);
//----
return(0);
}

int inicio()
{
int, counted_bars=IndicatorCounted();
i=Barras contadas_barras-1;


while(i>=0)
{
Buf_0[i]=Close[i]/Close[i+1];
i--;
}
return(0);
}
//+------------------------------------------------------------------+

 
Abzasc:
¿Dónde ?


Esta condición debería filtrar si (arriba>=1|abajo>=1), las alertas, al menos una de ellas debe ser mayor que cero, pero no lo es.

Aquí está

 
Dimka-novitsek:


Esta condición debería filtrar si (up>=1||down>=1), las alertas, al menos una de ellas, deberían ser mayores que cero, pero no lo son.

Aquí


int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (y=1; y>=0;y--) // первое выражение 
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}}

return(0);
}
 
Galion:


Acaba de dividir la ventana del editor en dos partes :) Bien, olvidemos el doble clic. ¿Has configurado el resaltado de sintaxis para los archivos MQL4? Si no, entonces después de abrir un archivo con código MQL tienes que pulsar Sintaxis en el editor - y en la parte inferior de la lista seleccionar MQL4 - el resaltado será exactamente el mismo que en MetaEditor

 
Pero no entiendo en qué me estoy equivocando.
 
No, pero ignorarla o poner y=1 no cambia nada, ¡lo he comprobado!
 
Dimka-novitsek:
Pero no entiendo en qué me estoy equivocando.

Quitó el exceso.

int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
// for (y=5;y>=0;y--)
//{ 
double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}
//}
//----

//----
return(0);
}

y es así.

¿Eso es todo?

 
dzhini:

Probablemente no he formulado la pregunta correctamente. Las operaciones se realizan en un marco temporal de una hora y no se sabe cuándo se producirá una operación, pero tiene que ser una durante el día. Me gustaría que esta función fuera conmutable. ¿Quizás alguien tenga ese código?


No es necesario buscar un trozo de código: puedes pasarte toda la vida buscándolo y no encontrar nada. Deberías buscar la forma de construir un fragmento de código por ti mismo. El código que te he dado no es para copiarlo a lo tonto, sino para que lo entiendas de principio a fin, sobre todo porque es muy sencillo. Así es como funciona este código. Recorre la lista de órdenes de mercado y suma su importe con las órdenes del historial abiertas hoy. Si la suma es mayor que cero, las órdenes ya han sido abiertas hoy y no se permite la negociación. Si necesita un interruptor que le permita tener en cuenta cuántas órdenes se pueden abrir hoy, puede añadirlo al código con una simple operación. Tu problema es que no tienes el algoritmo de tu programa, no entiendes cómo y en qué secuencia debe funcionar tu programa. Inventa un algoritmo, de lo contrario tu cabeza será un desastre.

 
Ahí lo tienes, hablé contigo y lo conseguí todo de una vez ))) parecía ajustado - tenías razón (no podía saltar de mi algoritmo de resolución de problemas). Gracias por todos los consejos. Ahora he descubierto todas las opciones propuestas: cuál funciona en cada caso.
 
dzhini:
Bueno, habló con usted y de inmediato entendió todo )))) parecía ajustado - que tenía razón (no podía saltar de mi algoritmo de resolución de problemas). Gracias por todos los consejos. Ahora tengo claras todas las opciones propuestas: cuál funciona en cada caso.

Tenga en cuenta que los bucles de búsqueda de órdenes que le he mostrado no tienen en cuenta el maestro de órdenes - esta es una característica por la que el EA puede distinguir sus propias órdenes de otras. Se trata de un número que se puede asignar a una orden cuando es abierta por un EA - todas sus órdenes tienen el mismo número (o, si es necesario, diferentes números generados automáticamente). Si el operador abre las órdenes manualmente, el número mágico siempre es igual a cero. Esto significa que si añadimos magic = 0 al EA, el EA interferirá con las operaciones manuales del trader. Si desea que el EA deje las órdenes del operador sin tocar y manipule sólo sus propias órdenes, debe establecer el asistente en un valor diferente a cero. En este caso, el Asesor Experto considerará todas las órdenes que no tengan ese magik como las de otra persona y no las tocará.
Razón de la queja: