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

 
Desead:

Por supuesto, gracias, pero si te da pereza leer la pregunta, ¿qué sentido tiene responder? Puedo cambiar el valor, el grosor, el color y el estilo de los niveles del indicador en las dos funciones que tengo. No tengo acceso a la descripción. Vuelvo a preguntar, ¿alguien sabe la respuesta? No sé si lo he visto antes.

Adjunto una imagen para mostrar lo que necesito.


No lo fue y probablemente nunca lo será en esta forma.
 
yan720:

Entonces, ¿crees que esta función no funcionará? No lo he probado, pero me parece que es parte de un código que funciona (este Ilan fue obviamente reconstruido a partir de algo depurado en el mejor de los casos). ¿O sigue siendo un código deficiente?




Úsalo:

void Modify_orders (double AverPrice, double SLoss, double TProfit){
   double Stoplevel =  MarketInfo(Symbol(),MODE_STOPLEVEL);
   datetime GTCount_1 = 0;
   datetime GTCount_2 = 0;
   int ppos = 0;
   if ((AverPrice != 0) == TRUE){
      for (ppos = OrdersTotal() - 1; ppos >= 0; ppos--){
          if (OrderSelect(ppos, SELECT_BY_POS, MODE_TRADES) == TRUE){
            if ((OrderSymbol() != Symbol() || OrderMagicNumber() != Magic || OrderType() >= 2) == TRUE) continue;
            if ((OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) == TRUE){ 
            if ((OrderType() == 0) == TRUE){ 
               if(Bid - SLoss < Stoplevel * Point){ SLoss = ND(Bid - Stoplevel * Point);}
               if(TProfit - Ask < Stoplevel * Point){ TProfit = ND(Ask + Stoplevel * Point);}
            }else if ((OrderType() == 1) == TRUE){ 
               if(SLoss - Ask < Stoplevel * Point){ SLoss = ND(Ask + Stoplevel * Point);}
               if(Bid - TProfit < Stoplevel * Point){ TProfit = ND(Bid - Stoplevel * Point);}
               }
                  GTCount_1 = GetTickCount();           
                  OrderModify(OrderTicket(), AverPrice, SLoss, TProfit, 0, Yellow);  
                  GTCount_2 = GetTickCount() - GTCount_1;
                   // Print("Modify time(ms):   ", GTCount_2, "   /  Ticket: ", OrderTicket()," /  Time: ", TimeToStr (TimeCurrent(), TIME_SECONDS), " /  Average price: ",AverPrice, " /  SL: ",SLoss, " /  TP: ",TProfit); 
                Sleep(33);                
                }
            }
        } 
    }
}
double ND(double value){
   return(NormalizeDouble(value, Digits));
}
 
digits:


Estás usando:

Su función no maneja los errores del servidor comercial. La función OrderModify() debería diseñarse como una función independiente de pleno derecho, con gestión de errores y respuesta adecuada a los mismos.

Y de nuevo, ¿para qué?

if ((OrderSymbol() != Symbol() || OrderMagicNumber() != Magic || OrderType() >= 2) == TRUE) continue;
if ((OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) == TRUE){

¿Para qué sirve el aceite?

 
digits:


Utilizar:


No, no usamos ese tipo de g.
 

Sería extraño comprar pan a 20, llegar a casa y cambiar el precio de compra a 5 rublos, y luego ver en la cartera la llegada de 15 rublos de diferencia... Fantástico... ;)

Podrías revender el pan por 35 rublos (15 rublos de beneficio) pero el broker no te daría comisión :=)

 

Buenas tardes. Empecé a estudiar MQL hace un par de días, releí el sitio pero no encuentro la respuesta. (No juzgues a un novato)

Si ya lo hubiera intentado, habría visto que muchos pedidos están cerrados. Aquí hay un código simple que debería cerrar una orden cuando se cruza una MA(5) y una MA(21)

Aquí está el código para cerrar la orden cruzando MA(5) y MA(21). Gracias.

double ma50;

double ma51;

double ma210;

double ma211;

double ma550;

double Stoh;

int start()

{

//Open Orders--------------------------------------------------------------------------------

{

ma50=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0);

ma51=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1);

ma210=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,0);

ma211=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1);

ma550=iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,0);

Stoh=iStochastic(Symbol(),5,5,3,3,MODE_SMA,1,MODE_MAIN,0);

if(OrdersTotal()==0 && ma50 > ma51 && ma50 > ma210 && ma51 < ma211 && ma210 > ma550 )

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"BUY",123,0,Red);

}

//Close Orders--------------------------------------------------------------------------------

{

if(OrdersTotal()==1 && ma50 < ma210 )

if(OrderSelect(10,SELECT_BY_POS)==true)

OrderClose(OrderMagicNumber(),Lots,Bid,1,CLR_NONE);

}

}


 
AlexCY:

Buenas tardes. Empecé a estudiar MQL hace un par de días, volví a leer la página web, pero no encuentro la respuesta. (No juzgues a un novato)

Si ya lo hubiera intentado, habría visto que muchos pedidos están cerrados. Aquí hay un código simple que debería cerrar una orden cuando se cruza una MA(5) y una MA(21)

Gracias.

Que el código sea correcto o no depende directamente de lo que usted, y nadie más, entienda por este término.

Aquí se intenta abrir una orden con un intento similar pero algo más incorrecto de cerrarla.

Lo único que puedo aconsejarte es que vayas a estudiar más el idioma, no hay prisa, porque una base demasiado pequeña es la principal razón de los malentendidos.

Los parámetros de OrderClose no son correctos . + Si tienes una orden OrderSelect se toma con el número 0. + ¿estás seguro de que después del próximo tick o dos "ma50 < ma210" no se ejecutará comiendo tu spread?

y el código se inserta a través del botón SRC de la barra de herramientas.

 

Buenas tardes.

En el código del indicador tenemos que captar el momento en que aparece una nueva tendencia en el gráfico, y obtener el nombre de esta tendencia.

Además de rastrear la lista de todos los objetos en cada tic, fijar el momento del cambio en el número de objetos y luego recorrer toda la lista con la esperanza de encontrar el objeto que se acaba de aplicar... ¿Hay alguna otra forma menos costosa? Si es así, ¿cómo se puede aplicar más fácilmente?

 
satorifx:

Buenas tardes.

En el código del indicador tenemos que captar el momento en que aparece una nueva tendencia en el gráfico, y obtener el nombre de esta tendencia.

Además de rastrear la lista de todos los objetos en cada tic, fijar el momento del cambio en el número de objetos y luego recorrer toda la lista con la esperanza de encontrar el objeto que se acaba de aplicar... ¿Hay alguna otra forma menos costosa? Si es así, ¿cómo se puede aplicar más fácilmente?


y en la parte donde se aplica directamente el objeto, añadir un enlace al bloque con el tratamiento de lo anterior?
 
ALXIMIKS:

y en la parte donde se aplica directamente el objeto, añadir un enlace al bloque con el tratamiento de lo anterior?
¿De qué parte estamos hablando? Tengo 2 métodos de observaciones de tendencia: con mi propio script (sí, puedo añadir lo que quiera ahí) y con las observaciones de tendencia estándar usando las herramientas de MT4 (no puedo añadir nada aquí). La tarea consiste en trazar la tendencia por cualquier método.
Razón de la queja: