[Archive !] ÉCRIRE UN PAYS ENSEMBLE ! !!

 

Je propose d'écrire un conseiller commun. Je pense que cela m'aidera à répondre à de nombreuses questions intéressantes (à ce sujet après que le projet soit terminé), et deuxièmement, peut-être que nous ferons un graal ensemble :) Et enfin, pour les débutants (ce que je pense être en termes de programmation), il sera intéressant d'apprendre comment construire MTS étape par étape. J'ai pris la stratégie la plus simple comme base... Il suffit d'ouvrir à la cassure du High/Low du jour précédent avec un TP fixe et d'arrêter au High/Low de ce jour. Pourquoi exactement ? Oui, car premièrement, ce système n'utilise aucun indicateur, et deuxièmement, le facteur d'occupation de l'année 2000 à aujourd'hui est de 1.00 +/-0.03 (selon les données historiques car elles peuvent être différentes), c'est-à-dire qu'il est de 50/50 et enfin, je pense que le franchissement du High/Low de la veille est psychologiquement important pour le marché. Je suggère de trouver d'autres niveaux clés ou d'utiliser des indices auxiliaires ou autre chose, mais l'essentiel est d'obtenir un Expert Advisor plus rentable que celui présenté ci-dessous. Il s'agit d'un graphique du 01.01.2009 à ce jour, vous pouvez obtenir un rapport plus détaillé par vous-même. L'idée principale est que les autres instruments ne doivent qu'aider le système, et non s'y ajouter. C'est-à-dire que nous prenons un système fonctionnel comme base et essayons de le mettre à niveau (l'améliorer). Voici ce que j'ai obtenu...

Ce TS est complètement "nu", mais il a du potentiel...

Je ne recommande pas de l'utiliser pour les débutants... Pendant les 5 prochaines années, il va se vider ;)

Donc, le champ n'est pas labouré...

Voici le code

//+-----------------------------------------------------------------------+
//|                                                     Крокодил ГЕНА.mq4 |
//|                                                         Крокодил ГЕНА |
//+-----------------------------------------------------------------------+
// Описание ТС
// 1. Открытие позиций происходит при пробитии High или Low предыдущего дня
//    SL ставиться на High или Low текущего дня, TP выставляется во внешних переменных, 
//    единственная оговорка не более 1 позиции в день в переменной LastTradeTime 
//    если в ней нет необходимост смело сносите /RomanS/
// 2.
// 3.
// 4.
// 5.
 
  // Внешние переменные
  extern double TakeProfit = 900; 
  extern double Lot        = 1;    
  extern string SYMBOL     = "EURUSD";
  
  // Глобальные переменные
  int LastTradeTime = 0;      // Время последней открытой сделки
  
  // Поехали... :)
  int start() 
  {  
     int Ticket;
  double BID,
         ASK,
         SL=0,
         TP=0;                                  
    bool Trade     = true,
         Open_Bay  = false,
         Open_Sell = false;

  // Проверяем можно ли торговать
  if ( Trade==true) 
   {
   
  // Критерии открытия позиций
    if (Bid > iHigh ( SYMBOL,PERIOD_D1,1)) Open_Bay = true; 
    if (Bid < iLow ( SYMBOL,PERIOD_D1,1)) Open_Sell = true;
        
  // Открытие позиций
      if ( Open_Bay == true && OrdersTotal()==0 && TimeDay(TimeCurrent())!= LastTradeTime)                                           
        {      
         RefreshRates(); 
         Alert("111111111111");
          ASK = MarketInfo( SYMBOL,10);                                
          SL = iLow( SYMBOL,PERIOD_D1,0);
          TP = ASK + TakeProfit*Point;
          if (( ASK- SL)/Point<MarketInfo( SYMBOL,14)) return;  // проверяем минимальный уровень стопов
          Alert("Пробуем открыть Buy ", SYMBOL, " по ", ASK, SL, TP);         
          Ticket=OrderSend( SYMBOL,OP_BUY, Lot, ASK,20, SL, TP);         
           if ( Ticket > 0)                                                  
            {            
             Alert ("Открыт ордер Buy ", Ticket);
             LastTradeTime=TimeDay(TimeCurrent()); // задаем время сделки, чтобы сегодня больше не торговать 
             return;                                                       
            }         
        }
     if ( Open_Sell == true && OrdersTotal()==0 && TimeDay(TimeCurrent())!= LastTradeTime)                                             
        {      
         RefreshRates();                                             
          BID = MarketInfo( SYMBOL,9);
          SL = iHigh ( SYMBOL,PERIOD_D1,0);
          TP = BID - TakeProfit*Point;
          if (( SL- ASK)/Point<MarketInfo( SYMBOL,14)) return; // проверяем минимальный уровень стопов
          Ticket = OrderSend( SYMBOL,OP_SELL, Lot, BID,20, SL, TP);         
           if ( Ticket > 0)                                                  
             { 
              Alert ("Открыт ордер Sell ", Ticket);
              LastTradeTime=TimeDay(TimeCurrent());  // задаем время сделки, чтобы сегодня больше не торговать
              return;                                   
             }         
          return;                                                       
        }
   
   // Закрытие позиции
   
   // Модификация ордера
   
   }
  return;       
  }



Je ne suis pas un pro... Je suis un "amateur", pour que ce soit plus facile de travailler avec. Ou en général... un nouveau schéma. L'essentiel est que la condition







    if (Bid > iHigh ( SYMBOL,PERIOD_D1,1)) Open_Bay = true; 
    if (Bid < iLow ( SYMBOL,PERIOD_D1,1)) Open_Sell = true;

à ce stade est maintenu.

Merci à tous ceux qui ont répondu.

Dossiers :
 

L'EA est-il optimisé sur toute la ligne, et combien de temps les paramètres optimisés tiennent-ils ?

 
ivandurak >> :

L'EA est-elle optimisée dans tous les domaines, et combien de temps durent les paramètres optimisés ?

Quel type d'optimisation ?

>> Ici (à ce stade), vous ne pouvez qu'optimiser le TP, bien sûr vous pouvez exécuter le lot, mais cela ne sert à rien.

 

Oui, le champ n'est pas seulement inculte ici, c'est une terre vierge où que l'on regarde, bénissant le fait que l'on puisse ajuster les niveaux comme on le souhaite avec des high-low et toutes sortes de Camarillas et Murrays. Quant au high-low, je l'ai déjà construit - je peux dire tout de suite que ce n'est pas un graal, car un système décent produit de très gros drawdowns. Ils ne paraîtront pas si importants si les prix des prises sont comparables aux leurs. Cependant, pour le découpage d'une journée, on ne peut pas prendre une longue prise - cela ne fonctionnera tout simplement pas ou fonctionnera dans 6 mois.

Je conseille donc d'utiliser des systèmes de rupture basés sur des fourchettes étroites où la prise est plus grande que la fourchette de rupture. L'exemple le plus frappant est la rupture d'un plat du matin. Il est tout à fait correct dans ce sens.

Si nous voulons utiliser les banques de jour, nous ne pouvons pas nous passer de points de référence supplémentaires sous la forme de niveaux supplémentaires, d'outils et du tambourin du chaman.

 
sayfuji >> :

Oui, le champ n'est pas seulement inculte ici, c'est une terre vierge où que l'on regarde, bénissant le fait que l'on puisse ajuster les niveaux comme on le souhaite aussi bien en high-low qu'en toutes sortes de Camarillas et Murrays. Quant au high-low, je l'ai déjà construit - je peux dire tout de suite que ce n'est pas un graal, car un système décent produit de très gros drawdowns. Ils ne paraîtront pas si importants si les prises de position leur sont comparables. Cependant, pour une panne d'un jour, on ne peut pas prendre une position longue - cela ne fonctionnera tout simplement pas ou ne fonctionnera pas dans 6 mois.

Je conseille donc d'utiliser des systèmes de rupture basés sur des fourchettes étroites où la prise est plus grande que la fourchette de rupture. L'exemple le plus frappant est la rupture d'un plat du matin. Il est tout à fait correct dans ce sens.

Si nous devons danser sur les bancs de jour, nous ne pouvons pas nous passer de points de référence supplémentaires sous la forme de niveaux, d'outils et du tambourin du chaman.

Remplacer dans l'Expert Advisor

RERIOD_D1 à RERIOD_H4, peut-être le résultat sera-t-il meilleur.

Pour être honnête, je n'ai rien essayé avec ce MTS... Je l'ai juste fait par intérêt...

Comme je l'ai dit dans le fil précédent, sur le forum du célèbre "A" DC, les forumers ont rédigé ensemble un expert pendant un an...

Trouvons aussi quelque chose... Nous avons plus de potentiel de programmation...

 
RomanS писал(а) >>

Quel type d'optimisation ?

Ici (à ce stade), seul le T.Pro peut être optimisé, bien sûr vous pouvez également faire fonctionner le lot, mais cela ne sert à rien.

Je fais référence au commerce virtuel. Les meilleurs paramètres sont choisis pour le trading réel. Si nous écrivons deux EAs dans un même code, l'un fonctionne sur une percée et l'autre sur un rebond, celui qui trade le mieux.

 

Maintenant je peux déjà voir les erreurs dans notre MTS

Je voulais que cela fonctionne pour toutes les paires de devises, mais cela ne fonctionne que pour l'EURUSD.

Je vais le corriger maintenant...

-----------------------------------------------+
//|                                                     Крокодил ГЕНА.mq4 |
//|                                                         Крокодил ГЕНА |
//+-----------------------------------------------------------------------+
// Описание ТС
// 1. Открытие позиций происходит при пробитии High или Low предыдущего дня
//    SL ставиться на High или Low текущего дня, TP выставляется во внешних переменных, 
//    единственная оговорка не более 1 позиции в день в переменной LastTradeTime 
//    если в ней нет необходимост смело сносите /RomanS/
// 2.
// 3.
// 4.
// 5.
 
  // Внешние переменные
  extern double TakeProfit = 900; 
  extern double Lot        = 1;    
  extern string SYMBOL     = "EURUSD";
  
  // Глобальные переменные
  int LastTradeTime = 0;      // Время последней открытой сделки
  
  // Поехали... :)
  int start() 
  {  
     int Ticket;
  double BID,
         ASK,
         SL=0,
         TP=0;                                  
    bool Trade     = true,
         Open_Bay  = false,
         Open_Sell = false;

  // Проверяем можно ли торговать
  if ( Trade==true) 
   {
   
   ASK = MarketInfo( SYMBOL,10);
   BID = MarketInfo( SYMBOL,9);
  
  // Критерии открытия позиций
    if ( BID > iHigh ( SYMBOL,PERIOD_D1,1)) Open_Bay = true; 
    if ( BID < iLow ( SYMBOL,PERIOD_D1,1)) Open_Sell = true;
        
  // Открытие позиций
      if ( Open_Bay == true && OrdersTotal()==0 && TimeDay(TimeCurrent())!= LastTradeTime)                                           
        {      
         RefreshRates(); 
          SL = iLow( SYMBOL,PERIOD_D1,0);
          TP = ASK + TakeProfit*Point;
          if (( ASK- SL)/Point<MarketInfo( SYMBOL,14)) return;  // проверяем минимальный уровень стопов
          Alert("Пробуем открыть Buy ", SYMBOL, " по ", ASK, SL, TP);         
          Ticket=OrderSend( SYMBOL,OP_BUY, Lot, ASK,20, SL, TP);         
           if ( Ticket > 0)                                                  
            {            
             Alert ("Открыт ордер Buy ", Ticket);
             LastTradeTime=TimeDay(TimeCurrent()); // задаем время сделки, чтобы сегодня больше не торговать 
             return;                                                       
            }         
        }
     if ( Open_Sell == true && OrdersTotal()==0 && TimeDay(TimeCurrent())!= LastTradeTime)                                             
        {      
         RefreshRates();                                             
          SL = iHigh ( SYMBOL,PERIOD_D1,0);
          TP = BID - TakeProfit*Point;
          if (( SL- ASK)/Point<MarketInfo( SYMBOL,14)) return; // проверяем минимальный уровень стопов
          Ticket = OrderSend( SYMBOL,OP_SELL, Lot, BID,20, SL, TP);         
           if ( Ticket > 0)                                                  
             { 
              Alert ("Открыт ордер Sell ", Ticket);
              LastTradeTime=TimeDay(TimeCurrent());  // задаем время сделки, чтобы сегодня больше не торговать
              return;                                   
             }         
          return;                                                       
        }
   
   // Закрытие позиции
   
   // Модификация ордера
   
   }
  return;       
  }
Dossiers :
 
sayfuji >> :

Si vous voulez danser autour du jour, vous aurez besoin de conseils supplémentaires sous forme de niveaux, de gadgets et d'un tambourin de chaman.

Alors le champagne et le tambourin doivent aller ensemble...

Seul, moins de chance, il faut communiquer, c'est à cela que sert le forum...

 

Bonjour, RomanS.

C'est une excellente idée. Je vois très souvent des traders sur des forums étrangers s'associer et créer un expert par des efforts mutuels. Je suis prêt à la soutenir.

Quant à votre idée, c'est une idée qui coule. Et ce n'est pas un graal. Si nous devons travailler, travaillons sérieusement, en espérant qu'autrement, pourquoi commencer tout cela ? Mon avis : vous devez construire le système uniquement pour M1 EUR/USD. L'algorithme doit être basé sur la méthode de détection des tendances. Prenons, par exemple, ....mm..... moyenne mobile avec l'algorithme de lissage de Tilson. Ensuite, définissons l'entrée. Nous pouvons prendre le croisement de deux baguettes rapides et les utiliser pour fermer. Il y a beaucoup d'autres "extras" qui pourraient être ajoutés. Suggérez-les :-). De plus, il devrait certainement y avoir un MM avec la possibilité d'inclure Martin avec des paramètres personnalisés.

En général, dansons à partir d'ici. Mettez vos idées d'entrée/sortie. Faisons-le ensemble. Mais franchir les niveaux haut et bas sur D1 est un échec. sayfuji a vu juste.

 

Pourquoi une branche, https://forum.mql4.com/ru/ 23917, n'écrit-elle pas ?

En général, les gens s'unissent autour d'une idée intéressante, mais là, c'est une crise de genre...

 
Alex5757000 >> :

Bonjour, RomanS.

C'est une excellente idée. Je vois très souvent des traders sur des forums étrangers s'associer et créer un expert par des efforts mutuels. Je suis prêt à la soutenir.

Quant à votre idée, c'est une idée qui coule. Et ce n'est pas un graal. Si nous devons travailler, travaillons sérieusement, en espérant qu'autrement, pourquoi commencer tout cela ? Mon avis : vous devez construire le système uniquement pour M1 EUR/USD. L'algorithme doit être basé sur la méthode de détection des tendances. Prenons, par exemple, ....mm..... moyenne mobile avec l'algorithme de lissage de Tilson. Ensuite, définissons l'entrée. Nous pouvons prendre le croisement de deux baguettes rapides et les utiliser pour fermer. Il y a beaucoup d'autres "extras" qui pourraient être ajoutés. Suggérez-les :-). De plus, nous aurons besoin d'un MM avec la possibilité d'inclure Martin avec des paramètres personnalisés.

Bref, tournons autour du pot. Proposez vos idées pour l'entrée/sortie. Faisons-le ensemble. Mais franchir les niveaux haut et bas sur D1 est un échec. sayfuji l'a bien écrit.

Le fait que jusqu'à présent, ce n'est pas un graal (le temps le montrera) est certain !

Le fait qu'il ne soit pas prune (à long terme), c'est visible quand on le passe au testeur (50/50 parfois ça marche, parfois non), mais pas prune.... Le facteur Prof. est d'environ 1,00

En ce qui concerne M1, c'est bien sûr intéressant, mais il est peu probable que cela intéresse un pro... De plus, j'ai suggéré le système pas pour le trading quotidien... Je l'ai testé sur M5, cela ne fait aucune différence.

Je l'ai testé sur M5 et cela ne fait aucune différence.

Baser l'algorithme sur une façon d'identifier une tendance.

Vous avez suggéré un moyen de déterminer la tendance, alors faites-le..... Quel est le problème ? Nous allons en discuter...

Prenons, par exemple, ....mm..... une moyenne mobile avec un algorithme de lissage Tilson.

Pas de problème... vous pouvez mettre quelques lignes de code et hop... Le facteur Prof est supérieur à 2.0.

C'est ça le truc, je ne suggère pas de deviner mais de faire, et ceux qui ne savent pas comment faire... devraient apprendre comment les autres le font.

Personnellement, je veux (en tant qu'amateur) acquérir l'expérience des pros...