Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1567

 
MakarFX:

Je pense que ça devrait être comme ça

Si nous créons un nouvel objet à chaque fois dans OnTick(), l'heure du tick précédent ne sera enregistrée nulle part.
Le but de la création d'un objet global est de stocker le temps du tick précédent, en le comparant avec le temps du nouveau tick, nous saurons s'il y a une nouvelle barre ou non...

 
MakarFX:
Pourquoi avons-nous besoin de cette variable NB_M1 ?
Son seul but est de stocker l'heure du dernier tick traité pour chaque symbole et cadre temporel :
.
protected:
   datetime          m_TOld;        // Время хранится 
   ENUM_TIMEFRAMES   m_TimeFrame;   //    для каждого таймфрейма
   string            m_Symbol;      //    каждого символа

 
Mikhail Tkachev:
class CIsNewBar

renvoie vrai/faux, de quelle heure s'agit-il ?

 
MakarFX:

Essayez-le, dans le testeur c'est ok.

Non, ce n'est pas ça. Maintenant, il ouvre et ferme un contrat à la fois.

L'idée est exactement d'ouvrir un contrat supplémentaire lors du trailing et le trailing stop est tiré vers le haut par Brake even.

Il fait tout cela docilement. Mais je vois un inconvénient dans le fait qu'avec un stop loss = 150 pips et un take profit = 500 pips, cela ouvre cinq contrats et entraîne aussi souvent un stop loss.
Cependant, j'ai remarqué que l'achat de cinq contrats entraîne une baisse du prix d'entrée sur le marché et que le risque/la marge est donc beaucoup plus élevé.
Pour cette raison, je veux le faire traîner un contrat, et il tire jusqu'à la prise de profit maximum deux contrats, et traîner stop perte s'adapte jusqu'à cinq fois.
C'est pour cette raison que le trailingorder (achat supplémentaire et vente supplémentaire) et le trailing (stop loss) sont dans mon robot.
 
Eugen8519:
Non, ce n'est pas ça, il ouvre et ferme un contrat à la fois.

L'idée est que le contrat suiveur ouvrira un contrat supplémentaire et que le stop suiveur sera tiré vers le haut par Brake even.

Il fait tout cela docilement. Mais je vois un inconvénient dans le fait qu'avec un stop loss=150 pips et un take Profit=500 pips, cela ouvre à cinq contrats et entraîne aussi souvent un stop loss.
Cependant, j'ai remarqué que l'achat de cinq contrats entraîne une baisse du prix d'entrée sur le marché et que le risque/la marge est donc beaucoup plus élevé.
Pour cette raison, je veux le faire traîner un contrat, et il tire jusqu'à la prise de profit maximum deux contrats, et traîner stop perte s'adapte jusqu'à cinq fois.
Par conséquent, le robot a été doté d'un ordre de suivi (achat supplémentaire et vente supplémentaire) et d'un ordre de suivi (stop loss).

Ici, corrigez "0" en "2".

   if(pos_total<=0 )
      {TrailingOrder();}
   Trailing();
 

comment rendre ce problème automatique ? ORDER_FILLING_FOK ORDER_FILLING_IOC ORDER_FILLING_RETURN

Peut-être que quelqu'un en a un tout prêt ?

 
Aleksandr Egorov:

comment rendre ce problème automatique ? ORDER_FILLING_FOK ORDER_FILLING_IOC ORDER_FILLING_RETURN

Peut-être que quelqu'un a un exemple tout fait ?

Il existe un exemple concret dans la documentation. Mais vous devez d'abord définir une politique de remplissage pour un symbole. Recherche pour SYMBOL_FILLING_FOK

 
Aleksandr Egorov:

comment rendre ce problème automatique ? ORDER_FILLING_FOK ORDER_FILLING_IOC ORDER_FILLING_RETURN

Peut-être que quelqu'un en a une toute prête ?

Remplir vous-même MqlTradeRequest directement ?

Il y a trop d'embûches !

Regardez CTrade::FillingCheck() - comment les développeurs recommandent de définir le remplissage.

 
Bonjour à tous. Quelqu'un s'est-il trouvé dans une situation similaire ? En général, il existe un oscillateur évolutif. J'ai besoin de savoir, par programmation, quelles sont les valeurs extrêmes actuelles de l'échelle de la fenêtre visible de cet oscillateur. J'espère que je comprends ce que je dis). Je vous serais reconnaissant de m'aider !
 
AMarkov:
Bon après-midi à tous. Peut-être que quelqu'un a rencontré une situation similaire ? En général, il existe un oscillateur évolutif. J'ai besoin de savoir par programme quelles sont les valeurs extrêmes de l'échelle de la fenêtre visible de cet oscillateur au moment présent. J'espère que je comprends ce que je dis). Je vous serais reconnaissant de m'aider !
bool  ChartGetInteger( 
   long    chart_id,        // идентификатор графика 
   int     prop_id,         // идентификатор свойства 
   int     sub_window,      // номер подокна 
   long&   long_var         // сюда примем значение свойства 
   );

avec les identifiants CHART_PRICE_MIN et CHART_PRICE_MAX