Al tratar de probar en usdjpy me sale un mensaje como este:
y parece seguir indefinidamente, cuando llegó a 3000 lo apagué. Las pruebas intentaron cambiar en 2010.10.01 - 2010.10.10, sólo los precios de apertura.
bild 401
Tampoco puedo conseguir que se inicie otro agente remoto, aquí está el registro:
también observó un patrón similar ayer... Parece que toda la historia estaba sobrecargada y al parecer hubo algunos problemas al hacerlo.
Parece que he esperado hasta el final del proceso o he reiniciado el terminal.
ayer encontré una cosa interesante. después de recompilar el EA, los cambios no funcionan en el tester hasta que reinicias el terminal - ¡¡¡eso es la lata!!!
Desde ayer, los expertos han comenzado a vivir su vida digital.
Al probarlo da un foco aleatorio... Se salta la función OnInit() de alguna manera mágica, entonces genera un array de error fuera de rango en la función DeInit().
El caso es que con los mismos parámetros puede arrancar y ejecutar toda la prueba, o puede colapsar.
Este es el reto: hacer que el parámetro del indicador sea dinámico, cuando cierras una posición cambias uno de los parámetros del indicador, así que ese es el reto.
Ahora mi solución:
Puedo decir que este código funciona, ya que las pruebas muestran un resultado diferente, pero no está claro por qué funciona t.s. de vez en cuando, miré en el registro - 1 semana todo funciona como debería, a continuación, hace un bucle y salidas de los mismos valores en el búfer, aunque esto es imposible (2 semanas los mismos valores en el registro de probador), si no bucles entonces sólo escribe un error:
mensaje a través de la Alerta
Por lo que he podido entender, el Asesor Experto crea un handle de algún indicador cuando aparece una nueva barra y al mismo tiempo requiere copiar los buffers de este indicador. Pero esto no resuelve la situación cuando se puede tardar en calcular los topes de los indicadores. En otras palabras, la manija del indicador puede ser creada con éxito, pero los búferes del indicador aún no han sido calculados.
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Yedelkin: Por lo que he podido entender, el Asesor Experto crea algún manejador de indicador cuando aparece una nueva barra y al mismo tiempo requiere copiar los buffers de este indicador. Pero la situación no está resuelta, cuando el cálculo de los topes de los indicadores puede llevar algún tiempo. En otras palabras, la manija del indicador puede ser creada con éxito, pero los búferes del indicador aún no han sido calculados.
Sí, estoy de acuerdo, por eso he probado este diseño:
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
if (isNewBar()==true && proverkaHANDLA()==true)
{
if (!PositionSelect(Symbol1) && !PositionSelect(Symbol2))
{
BSOpen();
}
}
}
//+==================================================================+bool proverkaHANDLA()
{
ArraySetAsSeries(Sp1Buffer,true);
ArraySetAsSeries(Sp2Buffer,true);
//----------------------
vhandle=iCustom(NULL,0,"МТ5",Symbol1,100,Lots,1,Close());
if(vhandle<0)
{
Alert("Ошибка при создании индиката: ",GetLastError());
return(0);
}
if(CopyBuffer(vhandle,0,0,50,Sp1Buffer)<0 || CopyBuffer(vhandle,1,0,50,Sp2Buffer)<0)
{
Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
return(0);
}
return (true);
}
Sí, estoy de acuerdo, por eso he probado este diseño:
Hasta ahora está funcionando. Gracias por su ayuda
Esta construcción omite los casos en los que "se ha creado el asa, pero aún no se han calculado las memorias intermedias de los indicadores ". Dado que la construcción en sí se llama una vez por período, puede intentar llamar a la función CopyBuffer() varias veces. Es decir, si CopyBuffer()<0, entonces llama repetidamente a la función, siempre que el periodo seleccionado lo permita (dentro del periodo de tiempo seleccionado).
Así es. Su función proverkaHANDLA() es un bloque independiente, que internamente hace referencia aCopyBuffer() sólo una vez. Enconsecuencia, si no se calculan los topes, siempre volverá a aparecer. Hasta ahora su función proverkaHANDLA() no maneja la situación de "manija creada, pero los búferes de los indicadores no están calculados todavía", sino que la ignora.
Yedelkin: Esta construcción omite los casos en los que "se ha creado el asa, pero aún no se han calculado los topes de los indicadores ". Dado que la construcción en sí se llama una vez por período, puede intentar llamar repetidamente a la función CopyBuffer(). Es decir, si el CopyBuffer()<0, entonces se repite la llamada a la función, siempre que el periodo seleccionado lo permita (dentro del periodo de tiempo seleccionado).
Es decir, mientras CopyBuffer>0 lo calculamos, y el nuevo parámetro (Close()
aparece al cierre de la posición. Es decir, necesitamos hacer un bucle a través de While. Resulta así.
Al tratar de probar en usdjpy me sale un mensaje como este:
y parece seguir indefinidamente, cuando llegó a 3000 lo apagué. Las pruebas intentaron cambiar en 2010.10.01 - 2010.10.10, sólo los precios de apertura.
bild 401
Tampoco puedo conseguir que se inicie otro agente remoto, aquí está el registro:
también observó un patrón similar ayer... Parece que toda la historia estaba sobrecargada y al parecer hubo algunos problemas al hacerlo.
Parece que he esperado hasta el final del proceso o he reiniciado el terminal.
ayer encontré una cosa interesante. después de recompilar el EA, los cambios no funcionan en el tester hasta que reinicias el terminal - ¡¡¡eso es la lata!!!
Totalmente solidario - ¿tal vez servicedesk? (cerrarlo cien veces)
Desde ayer, los expertos han comenzado a vivir su vida digital.
Al probarlo da un foco aleatorio... Se salta la función OnInit() de alguna manera mágica, entonces genera un array de error fuera de rango en la función DeInit().
El caso es que con los mismos parámetros puede arrancar y ejecutar toda la prueba, o puede colapsar.
Este es el reto: hacer que el parámetro del indicador sea dinámico, cuando cierras una posición cambias uno de los parámetros del indicador, así que ese es el reto.
Ahora mi solución:
Puedo decir que este código funciona, ya que las pruebas muestran un resultado diferente, pero no está claro por qué funciona t.s. de vez en cuando, miré en el registro - 1 semana todo funciona como debería, a continuación, hace un bucle y salidas de los mismos valores en el búfer, aunque esto es imposible (2 semanas los mismos valores en el registro de probador), si no bucles entonces sólo escribe un error:
mensaje a través de la Alerta
Por lo que he podido entender, el Asesor Experto crea algún manejador de indicador cuando aparece una nueva barra y al mismo tiempo requiere copiar los buffers de este indicador. Pero la situación no está resuelta, cuando el cálculo de los topes de los indicadores puede llevar algún tiempo. En otras palabras, la manija del indicador puede ser creada con éxito, pero los búferes del indicador aún no han sido calculados.
Sí, estoy de acuerdo, por eso he probado este diseño:
Por ahora funciona. Gracias por su ayuda
Pero de vez en cuando se rinde:
Sí, estoy de acuerdo, por eso he probado este diseño:
Hasta ahora está funcionando. Gracias por su ayuda
Pero de vez en cuando lo hace:
Así es. Su función proverkaHANDLA() es un bloque independiente, que internamente hace referencia aCopyBuffer() sólo una vez. Enconsecuencia, si no se calculan los topes, siempre volverá a aparecer. Hasta ahora su función proverkaHANDLA() no maneja la situación de "manija creada, pero los búferes de los indicadores no están calculados todavía", sino que la ignora.
Esta construcción omite los casos en los que "se ha creado el asa, pero aún no se han calculado los topes de los indicadores ". Dado que la construcción en sí se llama una vez por período, puede intentar llamar repetidamente a la función CopyBuffer(). Es decir, si el CopyBuffer()<0, entonces se repite la llamada a la función, siempre que el periodo seleccionado lo permita (dentro del periodo de tiempo seleccionado).
Es decir, mientras CopyBuffer>0 lo calculamos, y el nuevo parámetro (Close()
aparece al cierre de la posición. Es decir, necesitamos hacer un bucle a través de While. Resulta así.