Rédiger un conseiller efficace - page 6

 
Vladimir Baskakov #:
Vous savez déjà que ce sera 0. Si ce n'était pas le cas, vous n'auriez pas créé ce fil de discussion.

Il n'y a pas d'autre raison ?

En bref, j'en ai assez de tous ces bavardages inutiles. Si vous poursuivez le dialogue en dehors du fil de discussion sur l'EA, j'ignorerai vos messages.

Vos prédictions ne sont pas intéressantes car elles contredisent déjà l'efficacité du robot de trading. Ma vidéo vous montre comment gérer la ligne de tendance, pour obtenir un bénéfice. Si vous ne pouvez pas l'apprendre, vous ne serez pas en mesure de l'utiliser. C'est comme jouer d'un instrument de musique. Moi, en tant que maître, je prétends que l'instrument est bon. Je le sais, car je programme pour le forex depuis plus de 15 ans. Je vous ai donné l'outil. Il n'est pas certain que vous puissiez l'utiliser de manière magistrale.

Et autre chose, l'outil que j'ai utilisé dans la vidéo ne s'appelle pas un rayon, mais une ligne de tendance. Le rayon est le PARAMÈTRE de cet outil, que vous pouvez désactiver si vous le souhaitez.

C'est la fin de l'histoire. Je ne veux pas toucher à d'autres prédictions non fondées.

 
Vitaly Murlenko #:

Il n'y a pas d'autre raison ?

En bref, j'en ai assez de tous ces bavardages inutiles. Si vous poursuivez le dialogue en dehors du sujet EA, j'ignorerai vos messages.

Vos prédictions ne sont pas intéressantes car elles contredisent déjà l'efficacité du robot de trading. Ma vidéo vous montre comment gérer la ligne de tendance, pour obtenir un bénéfice. Si vous ne pouvez pas l'apprendre, vous ne serez pas en mesure de l'utiliser. C'est comme jouer d'un instrument de musique. Moi, en tant que maître, je prétends que l'instrument est bon. Je le sais, car je programme pour le forex depuis plus de 15 ans. Je vous ai donné l'outil. Il n'est pas certain que vous puissiez l'utiliser de manière magistrale.

Et autre chose, l'outil que j'ai utilisé dans la vidéo ne s'appelle pas un rayon, mais une ligne de tendance. Le rayon est le PARAMÈTRE de cet outil, que vous pouvez désactiver si vous le souhaitez.

C'est la fin de l'histoire. Je ne veux pas toucher à d'autres prédictions non fondées.

L'État où ?
Comparer le nombre de bougies rouges et de bougies bleues n'est pas la définition d'une tendance.
 
Vladimir Baskakov #:
L'État où ?
Comparer le nombre de bougies rouges et de bougies bleues n'est pas une détection de tendance.

OK, mais je vais montrer un résultat intermédiaire dans des conditions réelles. Voici une capture d'écran :

L'argent est entré hier à 15 heures. Il n'y en avait pas (vous devrez me croire sur parole).

Voici l'état :

8

9

10

11

 
Cet état aidera-t-il vos analyses ?
 
Vitaly Murlenko #:
Cet état aidera-t-il votre analyse ?
Voici l'État.
D'ailleurs, pourquoi s'embêter à chercher une tendance quand sa poursuite a une probabilité 50/50 de s'inverser ?
 
Vitaly Murlenko #:

Vous trouverez ci-joint le conseiller expert (fichier Binarnic_1.0.mq4) et le script que j'ai utilisé dans la vidéo (fichier Script_0.mq4).

Pour éviter tout malentendu, regardez d'abord la vidéo. J'ai regardé ma vidéo avec des écouteurs - le son semble être correct.

J'ai voulu l'utiliser sur YouTube, mais google avait fait une erreur avec la sécurité, et je ne pouvais même pas comprendre sur mon portable. Bref, je l'ai téléchargé sur myl-ru dans le nuage. Il suffit de le télécharger, car la visionneuse de ce serveur souffre clairement de qualité. Le format du fichier est mp4. La taille du fichier est de 252 mégaoctets. Voici un lien pour télécharger: https://cloud.mail.ru/public/Ewoq/ymNxHFJ2Z

Bonjour à tous et bonne humeur !

Vitaliy, prévoyez-vous d'écrire le code de l'Expert Advisor uniquement pour MT4 ou y aura-t-il une version pour MT5 ? Je ne connais pas le 4 car j'ai suivi un court cours d'auto-apprentissage du langage de programmation MQL5, c'est pourquoi je ne peux pratiquement rien ajouter au code de votre EA. Dommage !

Salutations, Vladimir.

 
MrBrooklin #:

Bonjour à tous et bonne humeur !

Vitaliy, prévoyez-vous d'écrire le code de votre Expert Advisor uniquement pour MT4 ou y aura-t-il une version pour MT5 ? Je ne suis pas familier avec MQL5, car j'ai suivi un court cours d'auto-apprentissage du langage de programmation MQL5, c'est pourquoi je ne pourrai guère ajouter quoi que ce soit au code de votre EA. Dommage !

Meilleures salutations, Vladimir.

Le MQL4 n'est pas différent du MQL5. La seule différence est l'accès aux données et aux fonctions de négociation. Tout cela est "enveloppé" dans des classes avec une interface virtuelle commune - et voilà, nous obtenons un code portable qui peut être compilé dans les deux cas sans aucune modification.

 
Georgiy Merts #:

Le MQL4 n'est pas différent du MQL5. La seule différence est l'accès aux données et aux fonctions de négociation. Tout cela est "enveloppé" dans des classes avec une interface virtuelle commune - et voilà, vous obtenez un code portable qui peut être compilé ici et là sans changement.

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

La seule différence réside dans l'accès aux données et les fonctions de négociation.


Pas seulement ça.

 

Exactement.

En utilisant simplement des directives de compilation conditionnelle. Toutes ces directives fonctionnent à l'intérieur des classes réelles. Nous développons une interface universelle virtuelle pour les actions commerciales et, dans les classes d'implémentation, nous séparons les branches MQL4-MQL5 en utilisant la compilation conditionnelle. Il suffit ensuite de créer un objet qui fera l'échange et d'y accéder en utilisant l'interface virtuelle. Et en général, nous oublions toutes sortes de différences entre les plateformes.

Disons que voici mon interface virtuelle du processeur de trading :

// С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; 

};


Toutes les fonctions sont virtuelles et totalement indépendantes de la plate-forme. Nous avons introduit le concept indépendant de la plateforme d'un "composant de transaction" qui représente soit un ordre individuel MT4, soit une position ouverte sur un symbole dans MT5. Et c'est sur ce type de composante commerciale que nous travaillons.

La classe réelle, implémentant cette interface, se présente comme suit :

// С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() {};
};


En fait, toute l'implémentation a lieu dans les classes CMT5TradeProcessor et CMT4TradeProcessor qui dépendent de la plate-forme.