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

 
evillive:

Hmm, bueno, o esto... Pero he ejecutado este búho en mí y todo está bien, nada "desaparece" en cualquier lugar, órdenes abiertas, en general se comporta como un EA )

Gracias, muchas gracias, ¡es interesante! Significa que mi ordenador tiene un fallo.
 
Dimka-novitsek:

Gracias, muchas gracias, ¡interesante! ¡Así que mi ordenador tiene un fallo!
¿Has probado a "reiniciarlo"? ))
 
gracias de antemano
 
smshev:
¿Has probado a "reiniciarlo"? ))

- ¿Qué? Lo siento, no lo entiendo.
 
Dimka-novitsek:

- ¿Qué? Lo siento, no lo entiendo.
el software le gusta ser reiniciado más a menudo ))
 

Por la tarde )))) Escribí mi primer EA pero resultó ser problemático))))))) Este EA sólo pone órdenes de venta, aunque las condiciones de compra son muy simples y parece que no las ve.

if (ZZ2< pp1 ) { OpenPosition ("", OP_BUY, Lots_New,SLB,TPB, mn);}

if (pp1 < ZZ2) {OpenPosition("", OP_SELL, Lots_New, SLS,TPS, mn);}

Si alguien pudiera echar un vistazo al código, le estaría muy agradecido))

Archivos adjuntos:
 
PD: Bueno, si quieres añadir trailing stop y take profit, estaría bien tener un trailing stop y take profit.(Bueno, esto es lo que me ha salido al intentar configurarlo) Entonces, lo que necesito es que el EA siga funcionando correctamente con TS (órdenes de apertura y cierre basadas en señales estocásticas, la orden de apertura debe ser sólo una)
Muchas gracias de antemano.

PS. y si lo deseas sería bueno añadir trailing stop y zero loss=)

Archivos adjuntos:
2.mq4  10 kb
 
Lisi4ka330:

Buenas tardes ))) Escribí mi primer EA pero resultó ser problemático))))))) Este EA sólo pone órdenes de venta aunque la condición de compra es la más fácil y parece que no las ve.

if (ZZ2< pp1 ) { OpenPosition ("", OP_BUY, Lots_New,SLB,TPB, mn);}

if (pp1 < ZZ2) {OpenPosition("", OP_SELL, Lots_New, SLS,TPS, mn);}

Si alguien le echa un vistazo al código, le estaría muy agradecido))


A simple vista todo está bien... ¿cómo es el cálculo del lote, se pasa (entiendo que debe haber un mensaje al registro)? Para empezar, pruebe con uno fijo.

Y en general, comprueba así la ejecución de la condición de negociación:

Print(DoubleToStr(pp1,Digits));
Print(DoubleToStr(ZZ2,Digits));

if (ZZ2< pp1 )
    {OpenPosition ("", OP_BUY, Lots_New,SLB ,TPB , mn);}

if (pp1 < ZZ2)
    {OpenPosition("", OP_SELL, Lots_New, SLS,TPS , mn);}
 
Lisi4ka330:

Buenas tardes )))) Escribí mi primer EA, pero resultó ser problemático))))))) Este EA sólo pone órdenes de venta aunque las condiciones de compra son muy simples y el EA parece no verlas.

if (ZZ2< pp1 ) { OpenPosition ("", OP_BUY, Lots_New,SLB,TPB, mn);}

if (pp1 < ZZ2) {OpenPosition("", OP_SELL, Lots_New, SLS,TPS, mn);}

Si alguien le echa un vistazo al código, le estaría muy agradecido))


Extraño, en teoría no debería ver el snappy SELL porque usas pa en vez de pb.

double TPS= NormalizeDouble(pa-tp*po, Digits);// calcular Tp para la venta
double SLS= NormalizeDouble(pa+sl*po, Digits);// calcular SL para la venta

 

Existe este algoritmo de recálculo:

   int ic=IndicatorCounted();
   if(Bars-ic-1>1) {ic=reinit();}
   int limit=Bars-ic-1; //BarsPrev=Bars; // кол-во пересчетов
   if(History!=0 && limit>History) limit=History-1; // кол-во пересчетов по истории

   for(int i=limit; i>=1; i--) // цикл по непосчитанным и предпоследнему барам
     {
      int n;
      int iShift=i+Shift;
      
      if (i==0)
      Input[i]=iClose(Symb, Period(), iShift);
      else
      Input[i]=(iHigh(Symb, Period(), iShift)+iLow(Symb, Period(), iShift))/2;
       }

Según tengo entendido, cuenta todos los compases menos el último.

¿Puedes decirme cómo hacer que recalcule la última barra en i=0 (ya hay una condición para ello en el bucle)?

Razón de la queja: