Moins de code, plus d'action... l'écriture d'un EA - page 9

 
Vladimir Simakov:

Est-ce que c'est comme, qu'est-ce que je ne vérifie pas ?

Ne vous contentez pas de le faire une fois, faites-le plusieurs fois.


 
Vladimir Simakov:

C'est normal que ce soit toute la danse du tambourin ?

Si les données ne sont pas prêtes, la méthode renvoie 0.0, ce qui est facilement vérifiable.

Vous pouvez également l'écrire dans la documentation, comme une action obligatoire de l'utilisateur lors de l'accès à une méthode.

Avec une note disant que "N heures de développement ont été faites pour cela".

 
MQL_Easy
MQL_Easy
  • www.mql5.com
MQL_Easy is an open source cross platform library for developing MQL4 and MQL5 applications. The purpose of this library is to make the mql development easy, safe and fast in order to focus more on implementing complex trading ideas. The cross platform property assure that the same piece of code works on both platforms. In addition, it has...
 

Merci, j'ai regardé.

J'ai eu une idée légèrement différente de celle de créer une hiérarchie de classes "plus légère".

Nous ouvrons le terminal et que voyons-nous ?

- table avec les commandes

- table avec l'histoire

- un tableau avec des citations

- charts. Mais le tableau lui-même est aussi un tableau, juste une représentation graphique...

et donner au programmeur (et à moi-même en particulier) un moyen (interface) d'utiliser ces tables/des tables similaires aussi facilement que possible.
Le travail est presque similaire à celui d'Excel, sauf qu'il s'agit de mql et de compilation : ouvrir des tableaux, définir/nommer des colonnes, taper des formules.

En gros, il y a une classe DataFrame qui implémente une table avec une discipline de tirage (à la demande) de calculs. J'ai commencé à expérimenter la meilleure façon de le faire avec les commandes/tickets/histoire.

Mais maintenant, c'est difficile de trouver le temps et d'autres raisons.

 
Maxim Kuznetsov:

faire une hiérarchie de classe "plus légère".

Plusieurs tentatives de création de ma propre application ont montré qu'il ne suffit pas de créer une API, encore faut-il qu'elle fonctionne de manière stable.

Donne l'exemple le plus simple d'un test.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Moins de code, plus de roulement... l'écriture d'un EA

fxsaber, 2019.03.12 21:46

ZZI Cette tâche peut tout à fait être considérée comme un test initial des compétences de trading de MT5. Tout le monde est donc invité à s'y essayer.

 
Il est presque impossible de créer un wrapper pour MT4 qui puisse concurrencer le MQL4 pur.

Forum sur le trading, les systèmes de trading automatisés et l'essai de stratégies de trading

Conservez le même nombre de positions d'achat et de vente dans MT5.

fxsaber, 2019.04.20 10:43

int GetAmount( const int Type )
{
  int Amount = 0;
  
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    Amount += OrderSelect(i, SELECT_BY_POS) && (OrderType() == Type) && (OrderSymbol() == _Symbol);

  return(Amount);
}

void OnInit()
{
  OnTrade();
}

void OnTrade()
{
  bool Res = true;
  
  while (Res)
  {
    const int AmountBuy =  GetAmount(OP_BUY);
    const int AmountSell = GetAmount(OP_SELL);
    
    if (Res = (AmountBuy != AmountSell))
      Res = ((AmountBuy > AmountSell) ? OrderSend(_Symbol, OP_SELL, 1, Bid, 100, 0, 0)
                                      : OrderSend(_Symbol,  OP_BUY, 1, Ask, 100, 0, 0)) > 0;
  }
}
 
fxsaber:
Il est presque impossible de créer un wrapper pour MT4 qui puisse rivaliser avec le MQL4 pur.

void OnTick() {

   Trade(MarketOrders(OP_SELL).Count()-MarketOrders(OP_BUY).Count());

}

tout est possible.

 
Maxim Kuznetsov:

void OnTick() {

   Trade(MarketOrders(OP_SELL).Count()-MarketOrders(OP_BUY).Count());

}

tout est possible.

Mettez-la en avant et regardons-la.

 
fxsaber:

Mettez-la en avant et regardons-la.

Je suis déjà venu ici - "le poster" est passible d'un bannissement.

le sujet est clos.

 
Maxim Kuznetsov:

Je suis déjà venu ici - il y a une interdiction pour "le poster".

Le lien dans le PM à nouveau.


SZZ peut et donc

// https://www.mql5.com/ru/forum/305859/page9#comment_11400794
unsigned char binary_array[]=
  {
   0x68,0x74,0x74,0x70,0x73,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x6D,0x71,0x6C,0x35,
   0x2E,0x63,0x6F,0x6D,0x2F,0x72,0x75,0x2F,0x66,0x6F,0x72,0x75,0x6D,0x2F,0x33,0x30,
   0x35,0x38,0x35,0x39,0x2F,0x70,0x61,0x67,0x65,0x39,0x23,0x63,0x6F,0x6D,0x6D,0x65,
   0x6E,0x74,0x5F,0x31,0x31,0x34,0x30,0x30,0x37,0x39,0x34
  };
  
void OnStart()
{
  Print(CharArrayToString(binary_array));
}