Discusión sobre el artículo "Constructor gráfico de estrategias. Creando robots comerciales sin programación" - página 5

 
Реter Konow:

1. Entendido. Con el desplazamiento, al igual que con la manija de arrastre de la ventana. Tienes que pulsar una vez y luego otra vez y mantener pulsado. Entonces todo funciona.

5. Si una ventana se ha salido del área de visibilidad, hay que utilizar la barra de desplazamiento principal. Entonces se puede traer de vuelta a la zona de visibilidad.

Gracias por los comentarios.

1) Sólo tienes que pulsar (1 vez sin soltar) y mantener y arrastrar. No una vez, una y otra y otra vez :)

5) Puedes mover el esquema por la parte inferior también. La capa principal también se puede mover como un mapa, sin barras de desplazamiento. Tienes que "agarrar" un espacio vacío y moverlo.

Sí, intencionadamente no hice pistas sobre redimensionar, etc. Recuerdo qué y dónde desde la primera vez, y luego siempre están molestando a mis ojos, a pesar de que no son necesarios.

 
Andrey Barinov:

Gracias por los comentarios.

1) Sólo tienes que pulsar (1 vez sin soltar) y mantener y arrastrar. No una vez, una y otra y otra vez :)

5) Puedes mover el esquema por la parte inferior también. La capa principal también se puede mover como un mapa, sin barras de desplazamiento. Tienes que "agarrar" un espacio vacío y moverlo.

Sí, intencionadamente no he dado pistas sobre el cambio de tamaño, etc. Recuerdas qué y dónde desde la primera vez, y luego siempre están molestando a los ojos, aunque no son necesarios.

Entendido. Gracias. Realmente muy conveniente. Pero todavía no puedo tirar lejos con el primer agarre. Ni la ventana, ni el desplazamiento. Pero si lo pulso de nuevo, entonces todo funciona.

No sé la razón.

 
Personalmente, mi opinión subjetiva es que estoy en contra de este tipo de programas. MQL es un lenguaje muy flexible y potente. Se puede utilizar para implementar absolutamente todo, cualquier "perversiones" que visitará la cabeza del comerciante. En el programa todo se implementa dentro de ciertos límites, que fue establecido inicialmente por el autor del programa, sí es posible construir un robot, sí puede funcionar. Pero yo puedo hacerlo en MetaEditore y además gratis.
 
Ni siquiera sé lo que es más fácil de aprender MQL o este constructor....
[Eliminado]  
Sólo por diversión. Forex no es un área donde este tipo de aplicaciones están en alta demanda
 
Aleksey Vyazmikin:

La idea es buena, parece interesante, pero el EA listo ya está un poco inclinado - requiere la capacidad de construir con el desplazamiento hacia abajo o hacia los lados.

Tal interfaz es necesaria para ME - escribir en un código cuadrado y conectar, conveniente, especialmente si usted puede hacer sus propios iconos y guardar como un espacio en blanco - pensar MQ.

Sin embargo, estoy confundido, no hay código al final del artículo y en el propio artículo, lo que significa que es un anuncio del producto. ¿Qué, ahora es posible escribir artículos sobre tu producto y que se publiquen, o se trata de un acuerdo entre bastidores para unos pocos elegidos?

Hace tiempo que es posible escribir artículos sobre su producto. Otra cosa es que MQ no deje pasar todos los artículos. Sólo aquellos que consideren dignos de ser publicados.

El autor del artículo ha creado un gran producto. Pero necesita ser mejorado. Es conveniente utilizar la rueda del ratón en las listas derecha e izquierda. Para desplazarse por estas listas.

Uno puede sentir el gran potencial de este desarrollo.


====

Lo que es malo. Después de desinstalar esta utilidad (Expert Advisor), el esquema de color de la ventana con el gráfico se cambia. Antes de instalar la utilidad, el esquema de color era el mismo. Después de la instalación, el esquema de color cambia. Esto es una desventaja.

Es necesario volver al esquema de color que había antes de la instalación de la utilidad cuando se quita la utilidad del gráfico. Es mejor no cambiar la combinación de colores. Todas las manipulaciones deben hacerse en una ventana adicional que se forma encima del gráfico. Esta es la forma en que yo lo hago cuando creo patrones gráficamente. Se crea una ventana encima del gráfico donde se dibuja todo. Después de borrar esta ventana, no hay necesidad de corregir algo en el gráfico. Todo lo creado en la ventana se guarda en archivos.

 
Andrey Barinov:

La clase trade se implementa como una clase estática y se puede utilizar por separado del resto del código.

He mirado con interés la clase trade en el código fuente generado (MQL5 >600Kb, EX5 > 250Kb).

class cTrade final
  {
   //====================
private:
   //====================
   //===============
   //===============
   void              cTrade(void){}
   virtual void     ~cTrade(void){}
   //===============
   //===============
   static void       AddCurrentTrades(const cTradesFilter &filter,long &tickets[]);
   static void       AddCurrentOrders(const cPendingOrdersFilter &filter,long &tickets[]);
   static void       AddHistoryTrades(const cTradesFilter &filter,long &tickets[]);
   static void       AddHistoryOrders(const cPendingOrdersFilter &filter,long &tickets[]);
   //===============
   //===============
   static double     CheckLot(const string symbol,const double lots);
   static bool       CheckPlaced(const string symbol,const eTradeType type,const long magic);
   static bool       CheckMargin(const string symbol,const double volume,const eTradeType type,const double price);
   static bool       CheckOrderPrice(const string symbol,const ePendingOrderType type,const double price);
   static bool       CheckStops(const string symbol,const eTradeType type,const bool istrade,const double entrylevel,
                                const double stoploss,const double takeprofit);
   //===============
   //===============
   static int        GetMatch(const cTradeInfo &trades[],const int forindex,const long &matched[]);
   static void       TradesCloseBy(const long &tickets[],const bool slippageenabled,const long slippage,const ENUM_ORDER_TYPE_FILLING filling);
   //===============
   //===============
   static void       ModifyTrade(const long ticket,const double newsl,const double newtp);
   static void       ModifyPendingOrder(const long ticket,const double newprice,const double newsl,const double newtp,const datetime newexpiration);
   //===============
   //===============
   static void       CloseBy(const long ticket1,const long ticket2,const ENUM_ORDER_TYPE_FILLING filling);
   //===============
   //===============
   static void       BreakEven(const long ticket,const long belevel,const long beprofit);
   static void       TrailingStop(const long ticket,const long tslstart,const long tsldistance,const bool tsllevelenabled,const double tsllevel);
   //===============
   //===============
   static void       CalculateSLandTP(const string symbol,const eTradeType type,const double entrylevel,const double lots,
                                      const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                      const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                      const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                                      double &sllevel,double &tplevel);
   //===============
   //===============
   static bool       CanTrade(void);
   //===============
   //===============
   //====================
public:
   //====================
   //===============
   //===============
   static long       ProfitPointsGet(const eTradeType type,const double openprice,const double closeprice,const string symbol);
   static double     CommissionGet(const long positionID);
   //===============
   //===============
   static void       GetFilteredTradesTickets(const cTradesFilter &filter,long &tickets[]);
   static void       GetFilteredPendingOrdersTickets(const cPendingOrdersFilter &filter,long &tickets[]);
   //===============
   //===============
   static double     GetLot(const string symbol,const long slpoints,const double moneyrisk);
   //===============
   //===============
   static void       OpenTrade(const string symbol,const eTradeType type,const double lots,const long magic,const string comment,
                               const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                               const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                               const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                               const bool slippageenabled,const long slippage,
                               const ENUM_ORDER_TYPE_FILLING filling);
   static void       PlacePendingOrder(const string symbol,const double price,const ePendingOrderType type,const double lots,
                                       const long magic,const string comment,
                                       const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                       const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                       const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                                       const bool expirationenabled,const datetime expiration,
                                       const ENUM_ORDER_TYPE_FILLING filling);
   //===============
   //===============
   static void       ModifyTrade(const long ticket,const bool tightenstopsonly,
                                 const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                 const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                 const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice);
   static void       ModifyTrades(const long &tickets[],const bool tightenstopsonly,
                                  const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                  const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                  const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice);
   //===============
   //===============
   static void       ModifyPendingOrder(const long ticket,const bool priceenabled,const double price,const bool tightenstopsonly,
                                        const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                        const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                        const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                                        const bool expirationenabled,const datetime expiration);
   static void       ModifyPendingOrders(const long &tickets[],const bool priceenabled,const double price,const bool tightenstopsonly,
                                         const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                         const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                         const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                                         const bool expirationenabled,const datetime expiration);
   //===============
   //===============
   static void       CloseTrade(const long ticket,
                                const bool slippageenabled,const long slippage,
                                const ENUM_ORDER_TYPE_FILLING filling);
   static void       CloseTrades(const long &tickets[],const bool closeby,
                                 const bool slippageenabled,const long slippage,
                                 const ENUM_ORDER_TYPE_FILLING filling);
   //===============
   //===============
   static void       DeletePendingOrder(const long ticket);
   static void       DeletePendingOrders(const long &tickets[]);
   //===============
   //===============
   static void       BreakEven(const long &tickets[],const long belevel,const long beprofit);
   static void       TrailingStop(const long &tickets[],const long tslstart,const long tsldistance,const bool tsllevelenabled,const double tsllevel);
   //===============
   //===============
  };


¿Cuál es el propósito de esta línea?

static bool cTrade::CheckPlaced(const string symbol,const eTradeType type,const long magic)
  {
//===============
   const int ordersnumber=::OrdersTotal();
//===============

//===============
   for(int i=0;i<ordersnumber && !::IsStopped();i++)
     {
      //===============
      const long ticket=(long)::OrderGetTicket(i);
      //===============

      if(::OrderGetInteger(ORDER_POSITION_ID)>0)continue;
      //===============

¿Orden viva con ID distinto de cero - parcialmente ejecutada?


No pude encontrar el cálculo de llenado en el código.

 
fxsaber:

He mirado con interés la clase de comercio en la fuente generada (MQL5 >600Kb, EX5 > 250Kb).


Cuál es el propósito de esta línea?

¿Orden viva con ID distinto de cero - parcialmente ejecutada?


No pude encontrar el cálculo de llenado en el código.

#1. Esto se basa en: #9

#2. Nunca he conseguido encontrar una variante de cálculo de llenado que funcione en todos los brokers. Por eso sugiero que el usuario lo controle por sí mismo estableciendo los parámetros de los elementos correspondientes.

 
Eugeni Neumoin:

Desde hace tiempo es posible escribir artículos sobre su producto. Otra cosa es que MQ no acepte todos los artículos. Sólo aquellos que consideren dignos de publicación.

El autor del artículo ha creado un gran producto. Pero necesita ser mejorado. Es deseable utilizar la rueda del ratón en las listas derecha e izquierda. Para desplazarse por estas listas.

Puedo sentir el gran potencial de este desarrollo.


====

Lo malo. Después de desinstalar esta utilidad (Expert Advisor), el esquema de color de la ventana del gráfico ha cambiado. Antes de la instalación de la utilidad el esquema de color era el mismo. Después de la instalación el esquema de color cambia. Esto es una desventaja.

Es necesario volver al esquema de color que había antes de la instalación de la utilidad cuando se quita la utilidad del gráfico. Es mejor no cambiar la combinación de colores. Todas las manipulaciones deben hacerse en una ventana adicional que se forma encima del gráfico. Esta es la forma en que yo lo hago cuando creo patrones gráficamente. Se crea una ventana encima del gráfico donde se dibuja todo. Después de borrar esta ventana, no hay necesidad de corregir algo en el gráfico. Todo lo creado en la ventana se guarda en los archivos.

Gracias por sus comentarios.

En su indicador, el panel no ocupa todo el espacio del gráfico, por lo que la disposición del gráfico no cambia. Tengo un panel en todo el tamaño disponible, y si no cambio el esquema del gráfico, habrá artefactos desagradables.

Pensaré en devolver todo a su estado original al quitar la utilidad del gráfico.

Añadiré el desplazamiento con rueda en futuras versiones. Gracias.

 
Andrey Barinov:

#1. Está basado en el #9.

Gracias, lo había olvidado.

#2. Nunca he conseguido encontrar una variante de cálculo de relleno que funcione en todos los brokers. Por eso sugiero al usuario que lo controle él mismo fijando los parámetros de los elementos correspondientes.

¿Podría enviarme el nombre del servidor demo donde GetFilling no funciona?