[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 463

 

Hola a todos.

Me pueden decir cómo enseñar a un Asesor Experto a recordar que hubo una orden abierta (después de que la orden se cerró). Las variables lógicas globales son adecuadas, pero sólo para un instrumento. Si tengo más de un símbolo en un terminal, las variables cambiarán y no funcionarán como se espera.

 
demlin:

Hola a todos.

Me puedes decir cómo enseñar a un Asesor Experto a recordar que había una orden abierta (después de que la orden se cerrara). Las variables lógicas globales son adecuadas, pero sólo para un instrumento. Si tengo más de un símbolo en un terminal, las variables cambiarán y no funcionarán como se espera.


Así que cada herramienta tiene su propia variable global).
 
tol64:

Así que cada herramienta tiene su propia variable global).
Tiene sentido, entonces ¿cómo hago para que el programa genere los nombres? No quiero meter manualmente 60 variables en el código)))
 

Hola a todos.

Estoy teniendo dificultades... He estado trabajando en esto, he estado tratando de abrir una orden corta en EUR/USD durante mucho tiempo, he estado tratando de abrir una orden corta una vez antes de la MA y el cierre de la vela anterior estaba por debajo de la MA, pero la orden no se abrió, he estado trabajando en el probador ahora y la orden se abrió como un buen tipo,

¿Dónde está el error en el código - no entiendo, he insertado específicamente la condición, si el orden no se ha abierto - tratar de abrirlo 10 veces, pero no parece ayudar, por favor, ayudar a un principiante ...

void CheckForOpensell()
  {
   double maopensell;
   int    ticketsell=0;


//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   maopensell=iMA(NULL,TF,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>maopensell && Close[1]<maopensell)
   for (int it=1; it<=10; it++)
    {
      while (!IsTradeAllowed()) Sleep(5000); 
      RefreshRates();
      ticketsell=OrderSend(Symbol(),OP_SELL,LotsOptimizedsell(),Bid,3,0,0," MA Sell M"+TF,MAGICMA,0,Red);
      if(ticketsell>0)
         {
          OrderModify (ticketsell,OrderOpenPrice(),Bid+StopLoss*Point,Bid-TakeProfit*Point,0,Gold);
          return;  
         }
      
      else
       {
        int err=GetLastError();
        if (err==128 || err==142 || err==143 || err==144) 
         {
           Sleep(2000);
           Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
           continue;
         }
        if (err==146) while (IsTradeContextBusy()) Sleep(2000);
        Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
        if (err==2 || err==64 || err==65 || err==4110 || err==4111) break;
        Sleep(2000);
       }
      
     }
  }
 
Abylhat:

Hola a todos.

Estoy teniendo dificultades... He estado trabajando con el EA en el gráfico las 24 horas del día, hoy en el EUR/USD tenía una condición para abrir un corto, (la apertura de la vela anterior fue mayor que la MA, y su cierre fue menor que la MA), pero la orden no se abrió, he intentado abrir esta sección en el probador, la orden se abrió como una buena,

Si el pedido no se ha abierto, he intentado abrirlo 10 veces, pero no ha servido de nada, por favor, ayuden a un principiante...


Es muy posible que el problema esté en esta zona

 if(Volume[0]>1) return;

Las señales con esta condición pueden ser omitidas. Pero en el probador seguro que funcionan.

No hay salto de garrapata en el probador

 
Vinin:


Es muy posible que el problema esté en esta sección

Las señales con esta condición pueden perderse. Pero definitivamente funcionarán en el probador.

No se salta la garrapata en el probador


Gracias, ¿podría decirme cómo establecer la condición de manera diferente?
 
Abylhat:

Gracias, ¿podría decirme cómo establecer la condición de manera diferente?

int start(){
   static int prevtime=0;
   if (Time[0]==prevtime) return(0);
   prevtime=Time[0];

//
   return(0);
}
Puede utilizar TimeCurrent() en lugar de Time[0]
 
demlin:

Hola a todos.

Me puedes decir cómo enseñar a un Asesor Experto a recordar que había una orden abierta (después de que la orden se cerrara). Las variables lógicas globales son adecuadas, pero sólo para un instrumento. Si hay varios símbolos en un terminal, las variables cambiarán y no funcionarán como se espera.

¿El Asesor Experto negocia con varios símbolos a la vez?

Si sólo opera con un instrumento, el número mágico del Asesor Experto puede añadirse al nombre de la variable global.

 
rlx:

¿Así que el Asesor Experto negocia más de un instrumento a la vez?

Si sólo negocia uno, el número mágico del Asesor Experto puede añadirse al nombre de la variable global.

El Asesor Experto negocia varios instrumentos al mismo tiempo
 
Vinin:

Puede utilizar TimeCurrent() en lugar de Time[0]

Gracias, voy a solicitarlo y a probarlo....
Razón de la queja: