[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 203

 
smartemiy:

Les gars !

comment faire pour que chaque 40ème commande soit un plus gros lot ? : : marché et en attente

Que pensez-vous de ça ?

Pas exactement, vous devez compter le nombre de commandes dans l'historique a = (OrdersHistoryTotal()+ 1) % 40

En fait, cette méthode ne tient pas compte du nombre d'ordres qui peuvent être ouverts en même temps ; sinon, il faudrait ajouter le total des ordres (probablement moins les ordres en attente).

 
splxgf:

Pas exactement, nous devons compter le nombre de commandes dans l'historique a = (OrdersHistoryTotal()+ 1) % 40

En fait, cette méthode ne tient pas compte du nombre d'ordres qui peuvent être ouverts en même temps ; sinon, il faudrait ajouter le total des ordres (probablement moins les ordres en attente).


Et s'il y avait des positions ouvertes dans d'autres symboles ou d'autres Expert Advisors ? Réfléchissez à ce que vous écrivez
 
Figar0:

Pour commencer, votre fonction de calcul du lot est déclarée à l'intérieur de la fonction start. Sortez-le. Ensuite, il y aura quelques erreurs avec des variables non déclarées, mais je pense que vous pouvez les gérer par vous-même.
Encore une question, dans quelle fonction faut-il déclarer le calcul du lot ? init, deinit ?
 
skyjet:
Autre question, dans quelle fonction dois-je déclarer le calcul du lot ? init, deinit ?

Il est préférable de créer une fonction distincte et de l'utiliser en cas de besoin (avant d'ouvrir une nouvelle position).
 
L'ordinateur peut-il être ralenti à cause de l'abondance de code (non optimisé) dans l'EA ? L'ouverture des transactions et le processus de prise de décision par l'EA lui-même seront-ils ralentis si le code est important ?
 
Vinin:

Il est préférable de créer une fonction distincte et de l'utiliser en cas de besoin (avant d'ouvrir une nouvelle position).
Victor, en suivant votre conseil, j'ai ajouté la fonction. Maintenant, ça ne compile pas.
void CheckForOpen()
double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
 

Conserver l'histoire du teck



avatar
1
Gangrr 22.09.2011 17:32

Bonjour à tous !

La question est la suivante : existe-t-il un script permettant de sauvegarder l'historique des tics ?

...

FileSeek(ExtHandle,0,SEEK_END) ;

FileWrite(ExtHandle, TimeToStr(TimeCurrent(), TIME_DATE | TIME_SECONDS), Bid, Ask, iVolume(Symbol(), NULL, 0)) ;

...

ça s'écrit comme ça :

...

2011.08.15 08:38:49;76.936;76.946;1389

2011.08.15 08:38:51;76.934;76.953;1390
2011.08.15 08:38:56;76.929;76.958;1391
2011.08.15 08:38:56;76.935;76.945;1392

...

En effet, il s'avère que l'unité de temps minimale est la seconde. Ma question est donc la suivante : existe-t-il un moyen d'écrire les ticks en millisecondes ?

Merci d'avance.

 
1
Gangrr 22.09.2011 17:32

Il s'avère donc que l'unité de temps minimale est la seconde. Alors question - y a-t-il un moyen d'écrire les ticks en millisecondes ?


Regardez le GetTickCount... ou bien se référer à la fonction Windows
 
skyjet:
Victor, en suivant votre conseil, j'ai ajouté la fonction. Maintenant, ça ne compile pas.

void CheckForOpen()
  {



  }

double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
Les fonctions imbriquées ne sont pas autorisées
 
Vinin:

Les fonctions imbriquées ne sont pas autorisées
Il ne s'agit pas d'une fonction imbriquée, mais d'une partie du MACD Sample EA de base. J'essaie d'ajouter un lot calculé. La principale et unique fonction start()
Raison: