Que quelqu'un écrive un script pour 5 wmz. - page 15

 

Sur les marchés des matières premières, il existe des instruments dont le prix évolue souvent avec une constance intraday surprenante, jour après jour ! C'est sur de tels instruments que cette méthodologie fonctionnera (à mon avis) très bien !

Par exemple, regardez l'évolution des prix d'hier et d'aujourd'hui du NGV0 (gaz naturel) et, comme on dit, "trouvez 10 différences" ...

 

Leonid. Ça ne me dérange pas que quelqu'un prospère. Vous êtes les bienvenus ! Je n'ai qu'une seule question : où étaient ces lauréats il y a deux ans ? Pourquoi personne ne coupait 1000% avec son pouce gauche en 2008 ?

 

Quant aux signes d'une tendance, on en parle ici depuis longtemps et on a même fait quelque chose d'utile. Par exemple ici https://www.mql5.com/ru/articles/1508#6586. Cependant, ils suggèrent d'utiliser un indicateur obscur (que je n'aime pas). Il est peut-être préférable de regarder la couleur d'une bougie (comme celle de Leonid). Mais la méthodologie de l'auteur ne correspond toujours pas à une détermination honnête des modèles temporels ! Ça commence une sorte de numérologie ici... Je pense que c'est la raison pour laquelle beaucoup de gens le perçoivent de manière ironique.

 

Pouvez-vous me dire pourquoi un EA normalement compilé sans pré et erreur n'est pas testé, il n'y a pas de trades, que lui manque-t-il ?

extern double Lots          = 0.1;
extern double StopLoss      = 120;
extern double TakeProfit    = 120;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  int cnt, ticket, total;
  static int prevtime = 0;
   
        total=OrdersTotal();
if(total<1){  //если  нет открытых позиций
//+------------------------------------------------------------------+
//|               Открытие позиций понедельника                      |
//+------------------------------------------------------------------+
if ( DayOfWeek()==5){//если сегодня вечер пятницы
if ( Hour() == 23)  {//если - 22 часа терминального времени
// BUY
       if ( Close[1]<= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) {    
        
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask+StopLoss*Point,3,0,Ask+TakeProfit*Point,"Regulest",0,0,Green);}
         if(ticket < 0) {
            Print("Ошибка открытия ордера BUY #", GetLastError()); 
            Sleep(10000);  prevtime = Time[1];  return (0); }}
// SELL
if ( DayOfWeek()==5){//если сегодня вечер пятницы
if ( Hour() == 23)  {//если - 22 часа терминального времени
    if ( Close[1]>= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) {
    
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid-StopLoss*Point,3,0,Bid-TakeProfit*Point,"Regulest",0,0,Red);
         if(ticket < 0) {
            Print("Ошибка открытия ордера SELL #", GetLastError()); 
            Sleep(10000);  prevtime = Time[1];  return (0); }
          } 
        }
      return(0);
     }}}
//+------------------------------------------------------------------+
//|                     Закрытие позиций                             |
//+------------------------------------------------------------------+
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())  
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if ( DayOfWeek()==1  && Hour() == 22)
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                 return(0); // exit
                }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if ( DayOfWeek()==1  && Hour() == 22)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
               return(0); // exit
              }      
           }  
   return(0);
  }  
//+------------------------------------------------------------------+
 
Profitabl:

Pouvez-vous me dire pourquoi un EA normalement compilé sans pré et erreur n'est pas testé, il n'y a pas de trades, que lui manque-t-il ?

Peut-être qu'une condition n'est pas remplie. Chez Alpari, par exemple, il n'y a pas de barres ayant une valeur de 23 le vendredi. Mettez 22, comme vous l'avez fait dans votre commentaire

if ( Hour() == 23)  {//если - 22 часа терминального времени
 

Non, ce n'est pas la raison. J'en ai besoin pour recompiler l'ensemble de l'EA CHF, qui est parfaitement testé dans le testeur, mais qui ne négocie pas avec l'option "autoriser l'EA à négocier" activée. D'ailleurs, mardi, l'EA effectuait des transactions, mais j'ai fait quelque chose au code et il a cessé d'effectuer des transactions. Quelles sont les raisons pour lesquelles une EE normale cesse de fonctionner ?

 
Postez un rapport incluant toutes les tiques. Une méthode de test aussi rudimentaire sur une période aussi longue ne permet pas d'obtenir un résultat totalement objectif. A propos, il est très intéressant de voir comment ce code donne un résultat quelconque, parce qu'au lieu du prix d'ouverture dans la fonction d'ouverture il y a une tentative de définir un stop loss))) c'est un jardin d'enfants, pour l'amour de Dieu :)))
 
lasso:

La condition n'est peut-être pas remplie. Chez Alpari, par exemple, il n'y a pas de barres avec une valeur horaire de 23 le vendredi. Mettez 22, comme vous l'avez fait dans votre commentaire


J'ai supprimé les StopLoss "Ask-StopLoss*Point", "Bid-StopLoss*Point" et il a commencé à tester, mais que dois-je faire pour qu'il teste aussi avec eux ?

       if ( Close[1]<= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) {    
        
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"Regulest",0,0,Green);}
         if(ticket < 0) {
            Print("Ошибка открытия ордера BUY #", GetLastError()); 
            Sleep(10000);  prevtime = Time[1];  return (0); }}
// SELL
if ( DayOfWeek()==5){//если сегодня вечер пятницы
if ( Hour() == 23)  {//если - 22 часа терминального времени
    if ( Close[1]>= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) {
    
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"Regulest",0,0,Red);
 
Techno:
Postez un rapport en tenant compte de tous les tics. Une méthode de test aussi rudimentaire sur une période aussi longue ne permet pas d'obtenir un résultat totalement objectif. A propos, il est très intéressant de voir comment ce code donne un résultat quelconque, parce qu'au lieu d'un prix d'ouverture dans la fonction d'ouverture, vous essayez de définir un stop loss))) c'est une sorte de jardin d'enfants, pour l'amour de Dieu :)))


J'ai déplacé le StopLoss d'une virgule, je me souviens de ce que je n'ai pas fait depuis deux ans, tout est testé. Les ticks ne sont pas nécessaires, les conditions voient très simple "avant-hier, hier, aujourd'hui"="demain", NNN=BUY, NNV=SELL, les transactions coïncident avec ce qui est nécessaire. En raison de l'impossibilité d'ouvrir des positions pour 30M de périodes, la précision des prédictions est plus faible, environ 69% des transactions sont rentables, et manuellement plus précise, par exemple le graphique annuel de 327% est basé sur 254 transactions, de plus 72% des transactions sont rentables.

L'ajustement du conseiller est minutieux, chacune des 40 prévisions a son propre S\L et T\P, certaines prévisions avec un total de -700ps ont juste été remplacées comme indéfinies mais affinées dans le testeur, et le calcul du bloc de lots est de 10% du dépôt, 1070% en 136 semaines se transforme en 8422476% de profit si vous commencez avec une centaine d'entre eux. Le risque de pertes est comparativement faible, un maximum de 8 trades perdants consécutifs à un niveau de marge fixe de 1000% est facilement toléré ; le point critique se situe quelque part entre 14-16 trades perdants consécutifs, ce qui est presque impossible avec ce système d'analyse.

Les positions dans le testeur peuvent déjà être dupliquées manuellement, mais il serait préférable pour le conseiller expert de trader par lui-même, de le connecter à un serveur loué.

Vous ne m'aiderez pas à identifier ce qui dans son code empêche les transactions, car je ne peux pas montrer le code ou vous donner l'EA - c'est une arme psychologique, qui peut provoquer des crises financières et des défauts, dans l'ouverture du forex est inoffensif et ne sert que pour le profit, mais ce modèle est partout dans toutes les branches de la science.

De même, procurez-vous une table de prédiction et vous ferez le même EA en une semaine.

 

Tout d'abord, corrigez l'erreur principale.

Vous avez la possibilité de fermer des positions à l'intérieur d'une condition.

  
        total=OrdersTotal();
if(total<1){  //если  нет открытых позиций

Où voyez-vous la logique ici ? Comment une position peut-elle être fermée si elle n'existe pas ?