Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 848

 
¿Cómo puedo prescribir en los códigos de mis EAs que trabajen con cada uno de mis pares de divisas? No puedo decir si tengo un símbolo diferente o si tengo un par de divisas diferente.
 
logut:
¿Cómo puedo prescribir en los códigos de mis EAs que trabajen con cada uno de mis pares de divisas? Tengo un símbolo diferente pero no funciona.
No estoy seguro de si estoy usando un solo símbolo para un par de divisas diferente, pero el mismo símbolo es suficiente.
 
Hola. He escrito un EA, que muestra buenos resultados en el probador. Compila sin errores. Está vinculado al euro-dólar.
En el comercio real las operaciones no se abren, cuando aparecen las condiciones para abrir una operación da un mensaje:
2015.02.11 14:03:03.656 '1435109': orden de compra 0.01 EURUSD apertura a mercado sl: 1.12697 tp: 1.13747 falló [S/L o T/P inválido].
Según tengo entendido significa que no es una parada o toma válida. Se coloca manualmente una orden con topes y tomas dados. Hay una distancia entre el precio y el stop
Hay varias veces más distancia entre el precio y el punto. Todos los cálculos de la parada y la corriente están normalizados. Cuál puede ser la razón, no lo entiendo, por favor ayúdeme a entender.
Aquí está el programa:
int inicio()
{
//------------------------------------------------------------------------------------------------

if (OrdersTotal()>0)
volver;
double monymax8=Alto[ArrayMaximum(Alto,3,0)];
if (he eliminado la condición en sí porque no es el motivo, ya que el programa llega a la función OrderSend)

{ double stop_sell8=monymax8+Point;
double PARADA_S8=NormalizarDoble(parada_venta8,Dígitos);
doble beneficio_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
double GANANCIA_S8=NormalizarDoble(ganancia_venta8,Dígitos);
double my_lot8=Saldo de la cuenta()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
double LOT8=NormalizarDoble(mi_lote8,2);
OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
}
//------------------------------------------------------------------------------------------------
volver;
}

 
Rogoza:
Hola. He escrito un EA, que muestra buenos resultados en el probador. Compila sin errores. Está vinculado al euro-dólar.
En el comercio real las operaciones no se abren, cuando aparecen las condiciones para abrir una operación da un mensaje:
2015.02.11 14:03:03.656 '1435109': orden de compra 0.01 EURUSD apertura a mercado sl: 1.12697 tp: 1.13747 falló [S/L o T/P inválido].
Según tengo entendido significa que no es una parada o toma válida. Se coloca manualmente una orden con topes y tomas dados. Hay una distancia entre el precio y el stop
Hay varias veces más distancia entre el precio y el punto. Todos los cálculos de la parada y la corriente están normalizados. Cuál puede ser la razón, no lo entiendo, por favor ayúdeme a entender.
Aquí está el programa:
int start() 
 {
 
//------------------------------------------------------------------------------------------------
if (OrdersTotal()>0)
   return;
   
   double monymax8=High[ArrayMaximum(High,3,0)];
   
       
        if (само условие я убрал так как не в нём причина, раз программа доходит до функции  OrderSend)
        {   double stop_sell8=monymax8+Point;
            double STOP_S8=NormalizeDouble(stop_sell8,Digits);
            double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
            double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
            double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
            double LOT8=NormalizeDouble(my_lot8,2);
           
             
           OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
            
                   
        }
      
 //------------------------------------------------------------------------------------------------
   return;
 } 

Formatea tu código así. Hay un botón SRC para esto.

No se abre porque en estos tipos de cuentas, primero se abren las órdenes sin stop, y luego OrderModify()

 
evillive:
El magik sólo es necesario si hay varios "comerciantes" en el mismo símbolo, pero eso es suficiente para comprobar el símbolo.
Ya veo. Ahora lo que me preocupa es cómo hacer que el EA sea multidivisa.
 
AlexeyVik:

Formatea tu código así. Para ello existe el botón SRC.

No se abre porque en estos tipos de cuentas, primero se abren las órdenes sin stop, y luego OrderModify()

Muchas gracias, reescribiré el código.
 
logut:
Ahora mi pregunta es cómo hacer que el EA sea multidivisa.
Abre un kodobase, encuentra allí un EA multidivisa y averigua cómo funciona.
 

Por lo general, estoy muy aturdido en algo y no puedo averiguar cómo hacerlo.

Tengo las variables línea1,línea2,línea3 etc. Quiero contar el valor de cada variable a través de la sentencia del bucle for.

¿Cómo hacer una correcta enumeración de la línea de variables? He intentado hacerlo como "línea "+"i", pero resulta un sinsentido, claro.

for(int i=1;i<=111111111111;i++)
        {
            if("line"+"i">0)counter++;
        }
 
Probablemente sea mejor hacer un array line[] y luego hacer un bucle.
 

¿Por qué se muestra el objeto equivocado? Debería serun triángulo apuntando a la izquierdahttps://docs.mql4.com/ru/constants/objectconstants/arrows código 3, pero aparece una flecha apuntando hacia arriba Wingdings código 241.

obj

Código del programa (tengoObjectSet(objName, OBJPROP_ARROWCODE, 3);)

void f_ArrowClose(
                  datetime closeTime,
                  int action,          //íàïðàâëåíèå
                  double lots,
                  string symb,
                  double openPrice,
                  double closePrice,
                  double profit)
{
      color c;
      string op="";
      if(action==1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_BUY";
      }
      else if(action==-1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_SELL";
      }
      
      string objName = StringConcatenate("#", closeTime, " ", op, " ", lots, " ", symb, " at ", openPrice, " close at ", closePrice);
      ObjectCreate(objName, OBJ_ARROW, 0, closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 3);
      //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}