Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1457

 
ANDREY #:

Muchas gracias por tus valiosos consejos. Si no te importa, por favor envíeme un enlace a un Asesor Experto (no un indicador) que estaba en 4, y luego se convirtió en 5 (si se puede en el más simple), o la propia EA en 4 y luego lo mismo en 5.

Aquí está el más simple. Se llama así. Tiene tanto MQL5 código y MQL4.

Simple advisor
Simple advisor
  • www.mql5.com
Советник на отложенных ордерах
 
Alexey Viktorov #:

Aquí está la más sencilla. Ese es su nombre. Contiene tanto código MQL5 como MQL4.

Gracias por su ayuda.

 
ANDREY #:

Pero en cuanto condicioné la apertura de una orden, las órdenes dejaron de abrirse, por favor díganme que hice mal. Aquí está el código que abrió órdenes cuando no había condiciones.

Todavía no he entendido este punto.... Cuando se abrían órdenes BAY, se cerraban, según he entendido, por contraórdenes CEL. Y no entiendo de dónde el código tomó la información acerca de cuántos pips para cerrar las órdenes, porque no he especificado el tamaño de SL y TP en cualquier lugar y no he especificado la función de cierre de órdenes en absoluto. Sospecho que esta información está escrita en algún lugar de algún archivo adjunto, es decir, en alguna clase o estructura. Si es así, ¿cómo encontrar este lugar para hacer cambios en los parámetros de la orden abierta?

Gracias de nuevo por su ayuda

Has declarado la estructura MqlDateTime, pero no la has inicializado, ahora está vacía o es una basura.

Así abrirá posiciones de compra en cada tick a partir de las 10:00 hrs, durante un minuto. Luego a las 11:00 empezará a abrir posiciones de compra durante un minuto más.

//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if((time_now.hour == 10 || time_now.hour == 11) && time_now.min == 0)
      trade.Buy(0.1);
  }
//+------------------------------------------------------------------+
Este código no puede cerrar posiciones, no hay nada de eso dentro de la clase CTrade.
 
Aleksandr Slavskii #:

Declaraste la estructura MqlDateTime , pero no la inicializaste, ahora está vacía o es basura.

Así abrirá posiciones de compra en cada tick a partir de las 10:00 horas, durante un minuto. Luego a las 11:00 empezará a abrir más posiciones de compra durante un minuto.

Este código no puede cerrar posiciones, no hay nada de eso dentro de la clase CTrade.

Muchas gracias.... Me has hecho avanzar mucho en el dominio del 5. Dices que este código no puede cerrar posiciones. Pero si quitas todas las condiciones, entonces las posiciones se abren y cierran por contraórdenes CEL.... según tengo entendido. Entonces, ¿qué comando del código se utiliza para cerrar órdenes? ¿De dónde saca el programa los datos para cerrar las órdenes exactamente después de un cierto número de puntos, o al ocurrir algún evento? Ni siquiera entiendo por qué regla las cierra.

#include<Trade\Trade.mqh>
 CTrade  trade;

void OnTick()
{
trade.Buy(0.1);
}

También me he dado cuenta de que las órdenes SEL, que se utilizan para cerrar órdenes BAY, por alguna razón tienen un número de ticket muy alejado del número de ticket de la orden BAY que están cerrando. Por ejemplo, la primera orden BAY tiene ticket 2, pero la orden CEL que la cierra no tiene ticket 3 (que sería lo lógico) sino 91779 por alguna razón.

Y si abres sólo 1 orden, todo se vuelve lógico. La orden Bai tiene el número 2, y la orden CEL que la cierra tiene el número 3.

int y;
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if(time_now.hour == 10&&y==0)
   {trade.Buy(0.1);y =1;}
      
  }


 
ANDREY #:

Muchas gracias.... Me has hecho avanzar mucho en el dominio del 5. Dices que este código no puede cerrar posiciones. Pero si eliminas todas las condiciones, entonces las posiciones se abren y se cierran mediante contraórdenes CEL.... según tengo entendido. Entonces, ¿qué comando del código se utiliza para cerrar órdenes? ¿De dónde saca el programa los datos para cerrar las órdenes exactamente después de un cierto número de puntos, o al ocurrir algún evento? Ni siquiera entiendo por qué regla las cierra.

También me he dado cuenta de que las órdenes SEL, que se utilizan para cerrar órdenes BAY, por alguna razón tienen un número de ticket muy alejado del número de ticket de la orden BAY que están cerrando. Por ejemplo, la primera orden BAY tiene ticket 2, pero la orden CEL que la cierra no tiene ticket 3 (que sería lo lógico) sino 91779 por alguna razón.

Y si abres sólo 1 orden, todo se vuelve lógico. La orden Bai tiene el número 2, y la orden CEL que la cierra tiene el número 3.


Bueno, es difícil entender lo que está pasando allí, pero creo que abrir más posiciones de lo permitido por el corredor en este instrumento y el probador comienza a cerrar los extras.

En realidad, no debería abrir estas posiciones adicionales. Pero no puedo explicar lo que te está pasando de otra manera.


Tampoco entiendo una posición. Por qué se cierra al final del día. Tal vez tu broker prohibe llevar posiciones al dia siguiente.

 
Aleksandr Slavskii #:

Bueno, es difícil entender qué está pasando ahí, pero creo que abres posiciones más de las permitidas por el broker en este instrumento y el probador empieza a cerrar las que sobran.

En realidad, no debería abrir estas posiciones adicionales. Pero no puedo explicar lo que está pasando de otra manera.


Tampoco entiendo una posición. Por qué se cierra al final del día. Quizás su broker no le permite llevar posiciones al día siguiente.

Gracias. La explicación parece muy lógica. En un quad con exactamente el mismo código y el mismo periodo, ocurre lo mismo, sólo que las órdenes no se cierran con una contraorden. Mi broker es Alpari. Después de tus explicaciones, me quedó claro por qué los números de las contraórdenes de cierre difieren tanto de las órdenes que cierran. Porque todas las ordenes de cierre se abren al final despues de todas las ordenes de cierre.

 

Buenas tardes a todos!
Estoy tratando de aprender a colocar órdenes en los cinco utilizando la clase CTrade, ya que me pareció que esta es la forma más rápida y sencilla de establecerlos. Para ser más preciso, estoy tratando de aprender a establecer el parámetro STOPLOSS. En cuatro el último precio de oferta se almacenaba en el Bid predefinido, y en cinco según he entendido el último precio de oferta no se almacena, sino que, si no me equivoco, como una de las opciones, se calcula en el método Bid de la clase CSymbolInfo. Pero para que este método calcule el precio Symbol debe estar previamente seleccionado por el método Name. Entiendo como funciona el métodoName, en el que hay que introducir el nombre del símbolo o NULL y devolverá false o true.

Pero no consigo entender cómo y dónde combinar el método Name y el método Bid, para que el precio Bid se almacene en la variable c

En cuatro ordenes fueron seleccionadas usando la función Select(). Pero en cinco ordenes deberían ser seleccionadas no ordenes sino el símbolo..... No entiendo como hacerlo

Te agradecería mucho que escribieras un fragmento en mi código para guardar el precio Bid en la variable con, que uso en el parámetro SL del método Btsu de la clase CTrade.

int y;
double c,d;
#include<Trade\Trade.mqh>        //класс
#include <Trade\SymbolInfo.mqh>  //класс 
CTrade  trad;                   //класс (создание объекта класса)
CSymbolInfo pris;
//+------------------------------------------------------------------+
void OnTick()
  {
   c=pris.Bid();//
   Print(" ---------------------CТОП------------------------------------------------------------  ",c);
   MqlDateTime t;                //структура (объявление структуры)
   TimeCurrent(t);               //структура (инициализация структуры)
   if(t.hour == 9&&y==0)
   {trad.Buy(0.1,NULL,0,c);y =1;}   //класс
      
  }
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Name - CSymbolInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Ayúdame a entender. En la línea ObjectMove(0, "LineAB", prevTime, prevPrice, newAx, newAy); dice recuento de parámetros erróneo. ¿Dónde está el error?

 
vitaliy zamkovoy ObjectMove(0, "LineAB", prevTime, prevPrice, newAx, newAy); dice recuento de parámetros erróneo. ¿Dónde está el error?

https://www.mql5.com/ru/docs/objects/objectmove

 
¿Pueden decirme cómo instalar un robot en MT que está en un VPS? Antes de que se activó en MT5 en el ordenador.
Razón de la queja: