Errores, fallos, preguntas - página 1141
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Hola a todos.
Es un problema.
Consigo con éxito el valor de los indicadores Bands y MA.
Bands_handle=iBands(NULL,0,BP_var_s,0,BDev_var_s,PRICE_CLOSE);CopyBuffer(Bandas_manejo,0,0,1,Base);
CopyBuffer(Bandas_manejo,1,0,1,Superior);
CopyBuffer(Bandas_manejo,2,0,1,Inferior);
B_med_s=Base[0];
B_up_s=Superior[0];
B_low_s=Lower[0];
MA_handle=iMA(NULL,0,MA_var_b,0,MODE_SMA,PRICE_TYPICAL);
CopyBuffer(MA_handle,0,0,1,MAv);
M_av_s=MAv[0];
Entonces imprime: B_up_s = 1.264249475876921 M_av_s = 1.2595
Luego intento realizar una operación matricial B_up_s-M_av_s y obtengo el resultado 0,00000000.
¿Cuál es el milagro?
Hola a todos.
Es un problema.
Consigo con éxito el valor de los indicadores Bands y MA.
CopyBuffer(Bands_handle,0,0,1,Base);
CopyBuffer(Bands_handle,1,0,1,Upper);
CopyBuffer(Bands_handle,2,0,1,Lower);
B_med_s=Base[0];
B_up_s=Upper[0];
B_low_s=Lower[0];
MA_handle=iMA(NULL,0,MA_var_b,0,MODE_SMA,PRICE_TYPICAL);
CopyBuffer(MA_handle,0,0,1,MAv);
M_av_s=MAv[0];
Entonces imprime: B_up_s = 1.264249475876921 M_av_s = 1.2595
Luego intento realizar una operación de pareja B_up_s-M_av_s y obtengo como resultado 0,00000000.
¿Qué tiene de extraño?
1) Cómo insertar el código.
2) ¿En qué tipo de variable almacena el resultado de la operación? O mejor aún, por favor, dame la parte del código donde se produce la salida.
1) ¿Cómo se inserta el código?
2) ¿En qué tipo de variable almacena el resultado de la operación? Mejor aún, indique la parte del código donde se produce la salida.
Todas las variables son de tipo double.
No entiendo por qué Bands tiene muchos dígitos mientras que MA sólo tiene 4 decimales. No debería haber ningún resultado cero. Por eso el algoritmo no funciona.
Todo era tan sencillo en MQL4. Ahora se necesita una mayor velocidad de optimización y una comprobación multidivisa. Tengo que transferir todo a MQL5 (al diablo)).
Todas las variables son de tipo double.
No está claro por qué Bands tiene muchos dígitos y MA sólo 4 decimales. Y el resultado cero no debería estar ahí en absoluto. Esta es la razón por la que el algoritmo no funciona.
Todo era tan sencillo en MQL4. Ahora se necesita una mayor velocidad de optimización y una comprobación multidivisa. Ahora tengo que transferir todo a MQL5 (al diablo)).
Debería funcionar. A continuación se muestra un script basado en su código y su resultado:
Todas las variables son de tipo double.
No está claro por qué Bands tiene muchos dígitos y MA sólo 4 decimales. El resultado de cero no debería estar ahí en absoluto. Por eso el algoritmo no funciona.
Todo era tan sencillo en MQL4. Ahora se necesita una mayor velocidad de optimización y una comprobación multidivisa. Tengo que transferir todo a MQL5 (al diablo)).
Debería funcionar. A continuación se muestra el script según su código y su resultado:
Sí, el guión funciona.
Incluso el EA con este ejemplo funciona.
Mi EA, en cambio, está dando cero porfiadamente. Busquemos un error ......
Hola a todos.
Pregunta, ¿cómo hacer que se actualice el valor de una variable en cada tick de un minuto, y que luego esta suma se escriba en un valor separado, cuando se cierre el siguiente minuto, el valor de la suma se sustituya por el nuevo?
int t = TiempoSegundos();
while (t !=0)
double b - la variable, que se actualiza por cada minuto en cada tick.
double b1 - valor de la variable b en el tick anterior.
doble s - cantidad en todos los ticks dentro de un minuto.
double s1 - cantidad en todos los ticks del minuto anterior.
b1=b;
s=b1+b;
si (t=0) s1=s;
¿Cómo hacer que los datos se resuman en cada tick y cómo escribirlo todo correctamente en general?
Sí, el script funciona.
Incluso el EA con este ejemplo funciona.
Pero mi Asesor Experto da cero. Busquemos el error ......
Esto es lo que se ha detectado.
Si sólo ejecutas el EA, funciona bien pero en el Probador de Estrategias produce ceros al principio. Pero en la siguiente línea los ceros se convierten mágicamente en un dato indicador normal. No entiendo lo que está pasando.....
A continuación se muestra el código.
Esto es lo que informa el probador.
CJ 0 19:40:47.022 Core 1 EURUSD,M15 (Alpari-Ltd-Demo): Generación de estados de barra OHLC. Ejecución de OnTick sólo en el inicio de la barra
IJ 0 19:40:47.022 Núcleo 1 EURUSD,M15: iniciada la prueba de experts\tmp.ex5 desde 2004.01.07 00:00 hasta 2004.02.02 00:00
LK 0 19:40:47.022 Núcleo 1 2004.01.07 00:00:00 B_up_s=0.0 M_av_s=0.0
IM 0 19:40:47.022 Núcleo 1 2004.01.07 00:00:00 sbl_top=true B_up_s=0.0 M_av_s=0.0 B_up_s-M_av_s=0.00000000
OQ 0 19:40:47.022 Core 1 2004.01.07 00:15:00 B_up_s=1.279208140152992 M_av_s=1.2718
OI 0 19:40:47.022 Núcleo 1 2004.01.07 00:15:00 sel=true B_up_s=1.279208140152992 M_av_s=1.2718 B_up_s-M_av_s=0.00740814
CJ 0 19:40:47.022 Núcleo 1 2004.01.07 00:30:00 B_up_s=1.279239651523307 M_av_s=1.2721
LN 0 19:40:47.022 Núcleo 1 2004.01.07 00:45:00 B_up_s=1.279382808470771 M_av_s=1.2714
DS 0 19:40:47.022 Núcleo 1 2004.01.07 01:00:00 B_up_s=1.279407737043184 M_av_s=1.2719
OD 0 19:40:47.022 Núcleo 1 2004.01.07 01:15:00 B_up_s=1.279398917431485 M_av_s=1.2727
NI 0 19:40:47.022 Núcleo 1 2004.01.07 01:30:00 B_up_s=1.279380702214008 M_av_s=1.2731
IM 0 19:40:47.022 Core 1 2004.01.07 01:45:00 B_up_s=1.279440208228416 M_av_s=1.2723
LE 0 19:40:47.022 Núcleo 1 2004.01.07 02:00:00 B_up_s=1.279473515350084 M_av_s=1.272
DK 0 19:40:47.022 Núcleo 1 2004.01.07 02:15:00 B_up_s=1.279515146590278 M_av_s=1.2715
FL 0 19:40:47.022 Núcleo 1 2004.01.07 02:30:00 B_up_s=1.279601656250741 M_av_s=1.2709
IQ 0 19:40:47.022 Core 1 2004.01.07 02:45:00 B_up_s=1.279656914787522 M_av_s=1.2709
CE 0 19:40:47.022 Núcleo 1 2004.01.07 03:00:00 B_up_s=1.279579626541548 M_av_s=1.2707
Esto es lo que se ha descubierto.
1) ¡No cree indicadores en cada tic!
2) Comprobar si el indicador fue creado o no, antes de acceder a sus valores.
3) Comprobar si los valores solicitados se copian del indicador.
4) Elimine siempre la parte de cálculo del indicador después de la finalización del experto, de lo contrario puede que en algún momento se quede sin RAM.
El problema se debe a que has intentado copiar los valores del indicador que aún no ha sido creado. Haz una regla: comprueba el resultado de las funciones que llamas.
Por favor, indique dónde está el error.
Ekpert está funcionando en demo, 3 pares. Aquí está el registro:
Aquí está el código.
El experto intenta ejecutar OrderDelete(), da error, SendTradeRequest() está en el bucle while, ekspert en consecuencia bucles. ¿Quizá el precio ha cambiado cuando he enviado el pedido? ¿Necesito RefreshRates() y cómo tratarlo correctamente? He buscado en el foro pero no he encontrado ningún ejemplo...
Gracias a todos por adelantado