[¡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 912

 
Dimka-novitsek:

Lo siento, no puedo con mi "Expert Advisor", da crónicamente un error 130 stops erróneos, y no opera. He puesto diferentes stops, 10-60 pips, todos iguales.


Para empezar, en lugar de un stop y un profit en SendOrders, pon 0. Comprueba si las órdenes están abiertas. A primera vista, tus stops tienen que ser 10 veces más grandes, lo más probable es que tengas cotizaciones de cinco dígitos y que los stops estén demasiado cerca del precio de apertura .
 
Dimka-novitsek:

Lo siento, no puedo resolverlo con mi "EA", crónicamente da error 130 stops erróneos, y no opera. He puesto todo tipo de stops, 10-60 pips, todos iguales.

Creo que debería funcionar. como mi EA no funciona correctamente en absoluto, mi total es siempre 0, alternando con un error 130.

He configurado externamente el doble Lots=0.1, TakeProfit=50, stoploss=10;

No sé qué está mal.

¡¡¡¡¡¡¡¡¡¡¡¡Ayuda!!!!!!!!!!!! ¡¡¡¡¡¡¡¡¡¡¡¡Por favor, !!!!!!!!!!!!


Estoy bien, tal vez cinco dígitos... paradas*10 y toma*10

 
costy_:


Estoy bien, ¿tal vez cinco dígitos? Para*10 y toma*10

El problema de los cinco dígitos y de los signos es fácil de resolver.

Lo escribes en el Inite:

   if(Digits==5 || Digits==3) PointX = Point * 10; // Корректировка Point под трёх- пятизнак
   if(Digits==4 || Digits==2) PointX = Point;
Y, en consecuencia, declarar inicialmente una variable PuntoX de tipo double. A continuación, en el código del EA, sustituye Punto por PuntoX en todas partes
 
¡Gracias! Supongo que eso es definitivamente !!!!
 
ivandurak:


así

static int KolBars; // esta variable almacena el número de barras

si ( su condición && Bares != KolBars)

{ // si el número de barras ha cambiado en la pantalla - la apertura de una nueva vela es la condición para actuar

Se realizan acciones según el algoritmo, apertura de la posición de cierre, cálculos, etc;

KolBars=Bars ; // registra el número de barras en las que se completan las acciones

}

Ahora las operaciones se abren cada hora (TF H1) con la aparición de una nueva vela, a pesar de mi condición de apertura.

Tampoco sé cómo sustituir el stop loss por el cierre de una determinada vela.

"static int KolBars; // esta variable almacena el número de barras" - ¿debo especificar el número de velas a analizar? static int KolBars=3


Quiero construir un EA con una condición como "si las 3 velas anteriores fueron verdes, entonces abra una operación de venta en una nueva vela, y ciérrela en el cierre de esta vela o la siguiente".

 
El ALGORITMO GENÉTICO da resultados diferentes cada vez...... ¿QUÉ HACER? Probé la normalización. No hay resbalones. En programación parece que no es el primer año......... ¡¡¡No lo entiendo!!! ¡¡¡AYUDA!!!
 
costy_:

http://forexsystems.ru/sovetniki/26492-poisk-sovetnikov-[kto-ischet-pishem-sdes%60].html

h ttp://www.forexfactory.com/showthread.php?t=168161


Muchas gracias.
 
Stepan241:
El ALGORITMO GENÉTICO da resultados diferentes cada vez...... ¿QUÉ HACER? Probé la normalización. No hay resbalones. En programación parece que no es el primer año......... ¡¡¡No lo entiendo!!! ¡¡¡AYUDA!!!


Imagínate que tuvieras que implementar una función genlock tú mismo, ¡¿qué te costaría hacer eso?!

Cuántas pasadas tendría que hacer sin un gen. algor. y cuántas pasadas haría con un gen. algor.(indíquelo para el caso en cuestión).

Si los datos sin genlock no coinciden después de dos optimizaciones, entonces los números pseudoaleatorios deben haber sido utilizados en alguna parte para hacer una condición de intercambio (¿colas?).

"No hay resbalones" cuando las pruebas y la optimización de los resbalones no funcionan en absoluto.

 

Es interesante, he leído el post de ivandurak y enseguida me he dado cuenta de que después de cada tick sólo se activa el inicio, por lo que si abres la variable de forma global, parece que guarda el valor.

Стало быть,где-то так.//+------------------------------------------------------------------+
//| Bollocks.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#enlace de propiedad "http://www.metaquotes.net"
int KolBars=Barras;
//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
int init()
{
//----
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{int r;
r=Bars- KolBars
//----
for( r>0 )
int k;
//----
return(0);
}
//+------------------------------------------------------------------+ Así pues, el compilador no acepta categóricamente la línea int KolBars=Bars; jura 'Bars' - inicialización esperada C:\gram Files (x86)\Alpari ÌÒ4\expertsÁùå.mq4 (8, 13)

¡¡¡¡¡Amazing!!!!! La declaración normal de una variable. Pero no importa.

Preguntaré lo principal: cómo depurar un EA el fin de semana, si los ticks no van?????

 
artmedia70 16.10.2010 20:56

costy_:


Estoy bien, tal vez cinco dígitos? para*10 y toma*10


Bueno, el problema con cinco dígitos, y con todos los signos no es difícil de resolver.

En el Inite, escriba:
if(Digits==5 || Digits==3) PointX = Point * 10; // Punto correcto para los caracteres de tres y cinco dígitos
if(Digits==4 || Digits==2) PointX = Point;
Y, correspondientemente, declare inicialmente la variable PointX como double. Luego, en el código del EA en todas partes, sustituye Punto por PuntoX Una vez más, ¡¡¡muchas gracias!!! Yo también he estado luchando con esto durante una semana!!!