Escribir un asesor eficaz - página 6

 
Vladimir Baskakov #:
Ya sabes que será 0. Si no lo fuera, no habrías creado este hilo

¿No hay otra razón?

En resumen, estoy harto de toda esta cháchara. Si continúas el diálogo fuera del hilo de EA, ignoraré tus mensajes.

Sus predicciones no son interesantes porque ya contradicen la efectividad del robot de trading. Mi video le muestra cómo manejar la línea de tendencia, para obtener un beneficio. Si no puedes aprenderlo, no podrás utilizarlo. Es como tocar un instrumento musical. Yo, como maestro, afirmo que el instrumento es bueno. Lo sé, porque llevo más de 15 años programando para forex. Te he dado la herramienta. No es un hecho que puedas utilizarlo con maestría.

Y otra cosa, la herramienta que he utilizado en el vídeo no se llama rayo, se llama línea de tendencia. El rayo es el PARÁMETRO de esta herramienta, que puedes desactivar a voluntad.

Y ahí se acaba todo. No quiero tocar más predicciones sin fundamento.

 
Vitaly Murlenko #:

¿No hay otra razón?

En resumen, estoy harto de toda esta cháchara. Si continúas el diálogo fuera del hilo de EA, ignoraré tus mensajes.

Sus predicciones no son interesantes porque ya contradicen la efectividad del robot de trading. Mi video le muestra cómo manejar la línea de tendencia, para obtener un beneficio. Si no puedes aprenderlo, no podrás utilizarlo. Es como tocar un instrumento musical. Yo, como maestro, afirmo que el instrumento es bueno. Lo sé, porque llevo más de 15 años programando para forex. Te he dado la herramienta. No es un hecho que puedas utilizarlo con maestría.

Y otra cosa, la herramienta que he utilizado en el vídeo no se llama rayo, se llama línea de tendencia. El rayo es el PARÁMETRO de esta herramienta, que puede desactivar si lo desea.

Eso es todo. No quiero tocar más predicciones sin fundamento.

¿Donde?
Comparar el número de velas rojas y azules no es la definición de una tendencia
 
Vladimir Baskakov #:
¿Donde?
Comparar el número de velas rojas y azules no es una detección de tendencia

Bien, pero voy a mostrar pero resultado intermedio en condiciones reales "en vivo". Aquí tienes una captura de pantalla:

El dinero entró ayer a las 3 de la tarde. No había nada (tendrás que creer en mi palabra).

Aquí está el estado:

8

9

10

11

 
¿Ayudará este estado a sus análisis?
 
Vitaly Murlenko #:
¿Ayudará este estado a su análisis?
Aquí está el Estado.
Por cierto, ¿por qué molestarse en buscar una tendencia cuando su continuación es 50/50 probable que se invierta
 
Vitaly Murlenko #:

Adjunto al post está el Asesor Experto (archivo Binarnic_1.0.mq4) y el script que usé en el video (archivo Script_0.mq4).

Para evitar malentendidos, vea primero el vídeo. He visto el vídeo con auriculares: el sonido parece estar bien.

Quería usarlo en YouTube, pero google había metido la pata con la seguridad allí, y no podía ni entenderlo en mi móvil. De todos modos, lo subí a myl-ru en la nube. Sólo hay que descargarlo, porque el visor de este servidor adolece claramente de calidad. El formato del archivo es mp4. El tamaño del archivo es de 252 megabytes. Aquí hay un enlace para descargar:https://cloud.mail.ru/public/Ewoq/ymNxHFJ2Z

¡Buenos días a todos y buen humor!

Vitaliy, ¿piensas escribir el código del Asesor Experto sólo para MT4 o habrá una versión para MT5? No sé el 4 porque he tenido un breve curso de autoaprendizaje del lenguaje de programación MQL5, por eso apenas puedo añadir nada al código de tu EA. ¡Qué pena!

Saludos, Vladimir.

 
MrBrooklin #:

¡Buenos días a todos y buen humor!

Vitaliy, ¿planeas escribir el código de tu Asesor Experto sólo para MT4 o habrá una versión para MT5? No sé sobre el 4 porque he tenido un corto curso de auto-estudio del lenguaje de programación MQL5, por eso es poco probable que pueda añadir algo al código de su EA. ¡Qué pena!

Saludos cordiales, Vladimir.

MQL4 no es diferente de MQL5. La única diferencia es el acceso a los datos y las funciones comerciales. Todo esto se "envuelve" en clases con una interfaz virtual común - y voilá, obtenemos un código portable que puede ser compilado en ambos casos sin ningún cambio.

 
Georgiy Merts #:

MQL4 no es diferente de MQL5. La única diferencia es el acceso a los datos y las funciones comerciales. Todo esto se "envuelve" en clases con una interfaz virtual común - y voilá, se obtiene un código portable que puede ser compilado allí y allá sin cambios.

https://www.mql5.com/ru/docs/basis/preprosessor/conditional_compilation
 
Georgiy Merts #:

La única diferencia está en el acceso a los datos y las funciones de negociación.


Y no sólo eso.

 

Exactamente.

Sólo con el uso de directivas de compilación condicional. Todas estas directivas funcionan dentro de las clases reales. Desarrollamos una interfaz universal virtual para las acciones comerciales y, en las clases de implementación, separamos las ramas MQL4-MQL5 utilizando la compilación condicional. A continuación, simplemente creamos un objeto que va a operar y accedemos a él utilizando la interfaz virtual. Y en general, nos olvidamos de todo tipo de diferencias entre plataformas.

Digamos que aquí está mi interfaz virtual del procesador de comercio:

// СTradeProcessorI - интерфейс торгового процессора

#include <MyLib\Common\MyObject.mqh>
#include <MyLib\Common\CurSymEnum.mq5>

class CTradePosComponentI;
class COrderInfoCore;

class CTradeProcessorI : public CMyObject
{
public:
   void CTradeProcessorI() {    SetMyObjectType(MOT_TRADE_PROCESSOR_I); };
   virtual void ~CTradeProcessorI() {};
   
   // Настроечный интерфейс
   virtual void SetSlippage(uint uiSlippage) = 0;
   
   // Торговый интерфейс
   // Все функции возвращают код возврата торгового сервера
   virtual int Buy(long & lTicket,ECurrencySymbol csSymbol,double dVolume,double dTP=0,double dSL=0,ulong ulMagic = 0,string strComment = NULL) = 0;               // Всегда по цене Ask, если успешно - возвращается lTicket
   virtual int Sell(long & lTicket,ECurrencySymbol csSymbol,double dVolume,double dTP=0,double dSL=0,ulong ulMagic = 0,string strComment = NULL) = 0;              // Всегда по цене Bid, если успешно - возвращается lTicket  

   virtual int ModifyTPSL(CTradePosComponentI* ptpcComponent,double dTP=0,double dSL=0) = 0;       
   virtual int ModifyTPSL(long lTPCTicket,double dTP=0,double dSL=0) = 0;       

   virtual int CloseTradeComponent(CTradePosComponentI* ptpcComponent,double dCloseVolume=EMPTY_VALUE) = 0;              // dCloseVolume - закрываемый объем. Если равен EMPTY_VALUE или равен или больше, чем объем торговой компоненты с указанным тикетом - закрывается вся торговая компонента.   
   virtual int CloseTradeComponent(long lTPCTicket,double dCloseVolume=EMPTY_VALUE) = 0;              // dCloseVolume - закрываемый объем. Если равен EMPTY_VALUE или равен или больше, чем объем торговой компоненты с указанным тикетом - закрывается вся торговая компонента.   
   
   virtual int PendingSet(long & lTicket,ECurrencySymbol csSymbol,ENUM_ORDER_TYPE otOrderType,double dSetPrice,double dVolume,double dTP=0,double dSL=0,ulong ulMagic = 0,string strComment = NULL) = 0; // если успешно - возвращается lTicket
   virtual int PendingDelete(long lTicket) = 0; 
   virtual int PendingDelete(COrderInfoCore* poiOrder) = 0; 
   
   virtual int PendingModify(long lTicket,double dSetPrice,double dTP=0,double dSL=0) = 0;       
   virtual int PendingModify(COrderInfoCore* poiOrder,double dSetPrice,double dTP=0,double dSL=0) = 0;       
   
   // Проверка кода возврата
   virtual bool TradeOperationWasSuccessful(int iTradeResCode) const = 0;
   
   // Если функция возвращает true, то при возникновении пользовательских ошибок (iTradeResCode > ERR_USER_ERROR_FIRST) советник прекратит работу
   // В случае false - работа будет продолжена
   virtual bool IsUserErrorsFalal() const = 0; 

};


Todas las funciones son virtuales y completamente independientes de la plataforma. Hemos introducido un concepto independiente de la plataforma de un "componente comercial" que representa una orden individual de MT4 o una posición abierta en un símbolo en MT5. Y es este tipo de componente comercial con el que estamos trabajando.

La clase real, que implementa esta interfaz, tiene el siguiente aspecto:

// СTradeProcessor - переносимый класс торгового процессора
// Именно этот класс необходимо использовать для торговли. 
// Класс реализует интерфейс CTradeProcessorI

#ifdef __MQL5__
#include <MyLib\Trade\MT5TradeProcessor.mq5>
#else // __MQL5__
#include <MyLib\Trade\MT4TradeProcessor.mq5>
#endif //__MQL5__

#ifdef __MQL5__
class CTradeProcessor : public CMT5TradeProcessor
#else // __MQL5__
class CTradeProcessor : public CMT4TradeProcessor
#endif //__MQL5__

{
public:
   void CTradeProcessor(uint uiSlippage = DEFAULT_TRADE_POINT_SLIPPAGE);
   void ~CTradeProcessor() {};
};


De hecho, toda la implementación tiene lugar dentro de las clases dependientes de la plataforma CMT5TradeProcessor y CMT4TradeProcessor.