[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 512

 
LazarevDenis:
Pouvez-vous m'indiquer s'il est possible d'écrire du texte en mql4 dans un fichier, par exemple *.txt, et de récupérer ensuite ces données pour le trading. L'idée est que l'EA apprenne à trader lui-même, lorsque le prix change de >100*Point par quelques barres, l'EA mémorise ces valeurs et essaie ensuite de les utiliser (valeur de l'indicateur +/- n% pour ouvrir un ordre). Cela pourrait également être mis en œuvre dans l'EA, mais après avoir fermé MetaTrader, toutes les valeurs des variables semblent être remises à zéro.
Desvariables globales peuvent être utilisées.
 
Quelqu'un pourrait-il tester mon EA et me dire quelles sont ses forces et ses faiblesses ?
Dossiers :
 

aidez-moi à écrire une fonction qui exécuterait une certaine action, si les 10 dernières positions étaient fermées en moins.

Merci d'avance
 
Kreol:
Oui, oui, je t'ai eu... Mais avant de dépenser mon argent durement gagné, je veux m'assurer que le script dont j'ai besoin n'est pas disponible dans le domaine public.
Les scripts de la base de données sont aussi gros que des chiens mangés par des chiens. Vous posez la mauvaise question. Le script universel, même s'ils le fabriquent pour vous, sera peu pratique et vous le jetterez.
Les scripts sont généralement conçus pour effectuer une action simple et uniforme. Il est préférable d'utiliser un ensemble de scripts, chacun d'entre eux étant lié à une touche de raccourci différente.
Par exemple :

Script
Clé
Script d'achat ouvertCtrl+B
Script pour ouvrir SellCtrl+S
Inverser le scénarioCtrl+R
Fermer le script
Ctrl+C

Et ainsi de suite.
Vous pouvez trouver les scripts prêts à l'emploi correspondants dans la base de données en faisant une recherche, des requêtes google comme reverse script site:mql4.com

 
nuan:

Aidez-moi à écrire une fonction qui effectuerait une certaine action si, par exemple, les 10 dernières positions étaient fermées en moins.

Merci d'avance

Il n'est pas difficile de calculer le nombre de derniers ordres clôturés à perte dans la boucle. Mais comment écrire un code qui effectuerait une action peu claire ?
 
Besoin d'un code qui compte
 
Bonjour ! J'ai une question... Est-ce l'abondance des conditions d'entrée et des fonctions auxiliaires, ainsi que des variables externes comme le double externe, qui peut ralentir l'Expert Advisor ? C'est juste un mystère dans le testeur... Le premier robot avec tout ce qui est caché dans le code a plus de drawdowns que le robot où tout est en double externe... Bien que les deux aient les mêmes paramètres variables. (ils sont aussi les mêmes)
 
Shniperson:
Bonjour ! J'ai une question... Est-ce à cause de l'abondance des conditions d'entrée et des fonctions auxiliaires, ainsi que des variables externes comme le double externe que l'EA peut devenir léthargique ? C'est juste un mystère dans le testeur... Le premier robot avec tout ce qui est caché dans le code a plus de drawdowns que le robot où tout est en double externe... Bien que les deux aient les mêmes paramètres variables. (ils sont aussi les mêmes).


Vérifiez à nouveau les valeurs des variables - peut-être sont-elles différentes et lors de la compilation de la première, elles fonctionneront différemment les unes des autres.

En outre, comparez-les avec ce programme dans la recherche - télécharger - WinMergeU.exe.

 

J'ai téléchargé sur https://www.mql5.com/ru/code/9274

J'ai téléchargé d'ici un script pour définir automatiquement une prise et une perte prédéfinies, mais elles commencent à flotter en suivant le prix, pouvez-vous me dire quel est le problème et comment le configurer pour qu'elles soient statiques ?

 
nuan:
Nous avons besoin d'un code qui calcule


Ce n'est pas difficile. Écrivez un sous-programme :

// этот код будет работать корректно только если в истории отсутствуют отложенные ордера.
int SchLossOrders(){
  string SMB=Symbol();
  int Sch=0;
  int i;
  for (i=OrdersHistoryTotal()-1;i>=0;i--){
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { Print("Ошибка ",GetLastError()," при выборе ордера");}
    else {
      if(OrderProfit()<0 && (OrderType()==OP_BUY || OrderType()==OP_SELL)){
        Sch++;
      }
      else{
        return(Sch);
      }
    }
  }
 return(Sch);     
}

Au début de l'EE, nous écrivons :

if(SchLossOrders()>=10){
  // 10 последних сделок были убыточными - выполняем какое-то действие
}