[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 221

 

Il s'agit de l'une des fonctions mises en œuvre par les conseillers experts. Bien sûr, vous pouvez écrire un EA qui ne contiendra qu' un stop suiveur (et bien sûr, de tels EA sont déjà écrits en grande quantité).

Dans le terminal MT, il existe un stop suiveur standard, qui n'est associé à aucun conseiller expert.

 
alsu:


Le terminal MT a un suivi interne, qui n'est pas lié à un conseiller expert.

Merci. C'est exactement ce que je demandais. Une autre question alors. Combien de temps vous a-t-il fallu pour comprendre le MQL4 ? Je n'ai pas l'intention de devenir un pro et d'écrire un conseiller expert absolument génial. Je ne veux pas devenir un pro de l'écriture d'une EA de A à Z, mais au moins savoir ce qu'il faut modifier quand on écrit une EA existante. Pour être plus clair sur moi-même : à ce stade, je maîtrise les opérateurs. Cela fait deux semaines que j'ai commencé à les étudier. Quelles sont les chances, à votre avis. Je répète. Le professeur n'est pas là pour demander à personne.

J'apprécie les réponses.

 

Les gars, c'est le pire !!!((((

Je veux choisir une société de courtage étrangère, et ouvrir un compte à l'étranger... Je ne trouve pas .... sur les critiques, un tel sentiment que toutes les arnaques et "sharashka Kontora" ....((

Aidez les gars avec MT4.... je serai très reconnaissant !!!!!

 
Comme si le nouveau Pinocchio cherchait un champ de merveilles fiable. Ne soyez pas ridicule.)
 

Indicateur d'une ligne.

#property indicator_separate_window    
#property indicator_buffers 1        
#property indicator_color1 Aqua      

  int index;
  double TickPrice[1000];
//--------------------------------------------------------------------
int init()                          
  {
   SetIndexBuffer(0,TickPrice);          
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1); 
   return;                          
  }
//--------------------------------------------------------------------
int start()                         
  {
  
      TickPrice[index] = Bid;
      index++;

   return;                         
  }
//--------------------------------------------------------------------

Question.

Pourquoi dessine-t-il une ligne de droite à gauche ?

 

Que pensez-vous de ça ?

#property indicator_separate_window    
#property indicator_buffers 1        
#property indicator_color1 Aqua      

  int index=1000;
  double TickPrice[1000];
//--------------------------------------------------------------------
int init()                          
  {
   SetIndexBuffer(0,TickPrice);          
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1); 
   return;                          
  }
//--------------------------------------------------------------------
int start()                         
  {
  
      TickPrice[index] = Bid;
      index--;

   return;                         
  }
//--------------------------------------------------------------------
 

Bonjour, pourriez-vous me dire où trouver un indicateur qui redessine les barres quotidiennes pour qu'elles commencent à une heure différente.

Par exemple : l'heure du terminal est 00:00. Dans les paramètres d'entrée de l'indicateur, nous mettons : +4. Maintenant les barres quotidiennes commencent à 4:00.

Merci d'avance.

 
DhP:

Et si tu fais ça ?


Oui, c'est mieux. J'ai commencé à dessiner dans la bonne direction. Mais si l'indice--, alors un jour il devient indice==0 et tout est arrêté.

Comment faire en sorte que le mouvement se poursuive ?

 
artmedia70:
Où puis-je augmenter la taille du tableau ? Où dois-je écrire la valeur ? ( fonction ArrayResize())


le tri dans les tableaux par type d'oreiller et de position a été réalisé :

int OrderStatus() {
   int z1=1, z2=1, z3=1, z4=1;
   if (B>0) {ArrayResize(TicketB,B);}
   if (S>0) {ArrayResize(TicketS,S);}
   if (BS>0) {ArrayResize(TicketBS,BS);}
   if (SS>0) {ArrayResize(TicketSS,SS);}
   int i, k=OrdersTotal();
      for (i=1; i<=k; i++) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketBS[z1]=OrderTicket();
            z1++;
            }
            if (OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketSS[z2]=OrderTicket();
            z2++;
            }
            if (OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketB[z3]=OrderTicket();
            z3++;
            }
            if (OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketS[z4]=OrderTicket();
            z4++;
            }
         }
      }
}

mais je ne peux pas les trier davantage par rentabilité des positions d'achat et de vente : il insère des zéros :

int OrderVBezubitok() {
   int k1=0, k2=0;
   ArrayResize(TicketBez,B+S);
   ArrayResize(TicketTral,B+S);
   int i;
   if (ArraySize(TicketB)>0) {
      for (i=1; i<ArraySize(TicketB)+1; i++) {
            OrderSelect(TicketB[i], SELECT_BY_TICKET, MODE_TRADES);
            if (OrderProfit()>0) {k1++; TicketTral[k1]=TicketB[i];} 
            else {k2++; TicketBez[k2]=TicketB[i];}
                       
         
      }
   }
   if (ArraySize(TicketS)>0) {
      for (i=1; i<ArraySize(TicketS)+1; i++) {
            OrderSelect(TicketS[i], SELECT_BY_TICKET, MODE_TRADES);
            if (OrderProfit()>0) {k1++; TicketTral[k1]=TicketB[i];} 
            else {k2++; TicketBez[k2]=TicketB[i];}
                       
         
      }
   }      
}

Pourquoi ? Je ne comprends pas.

 

Bonjour les amis !

Je ne sais pas si je suis au bon endroit, c'est mon premier message sur le forum.

Je demande de l'aide.

Peut-être que quelqu'un a rencontré quelque chose de similaire.

Le problème est le suivant. J'écris un indicateur pour trouver le maximum et le minimum du prix pour une période. Je veux diviser max par min et l'afficher dans une fenêtre séparée.

Mais la fenêtre est vide :

Lorsque vous ajoutez, soustrayez, multipliez, etc. MAXIMUM et MINIMUM l'indicateur s'affiche normalement.

Voici le code. Ce n'est pas grand-chose du tout.

#property indicator_separate_window
#property indicator_buffers 3

#property indicator_color1 MediumSpringGreen
#property indicator_color2 Crimson
#property indicator_color3 LightGray

#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1

extern int Buy_bars = 20;           //Количество баров для открытия позиции
extern int Sell_bars = 23;          //Количество баров для закрытия позиции  

double   buf_0[],                   //индикаторныЙ массив максимумов 
         buf_1[],                   //индикаторныЙ массив минимумов 
         buf_sr[] ;                 //индикаторныЙ массив средних значений
//extern int Shift = 0;

int init()
  {
   SetIndexBuffer (0, buf_0);
   SetIndexStyle (0, DRAW_LINE);
   SetIndexLabel (0, "Maximum");
   SetIndexShift (0, 0);
   
   SetIndexBuffer (1, buf_1);
   SetIndexStyle (1, DRAW_LINE);
   SetIndexLabel (1, "Minimum");
   SetIndexShift (1, 0);
   
   SetIndexBuffer (2, buf_sr);
   SetIndexStyle (2, DRAW_LINE);
   SetIndexLabel (2, "Srednyaya");
   SetIndexShift (2, 0);
   
   return;
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i, k ,t;
   int    counted_bars=IndicatorCounted();
//----
   i = Bars - counted_bars - 1;
   while (i >= 0)
   {
      double max = 0;
      double min = 999999999999.99;
   
   for (k=i ; k<=i+Buy_bars-1; k++)
      {
      if (High[k] > max) max = High[k];
      }
   for (t=i; t<=i+Sell_bars-1; t++)  
      {
      if (Low[t] < min) min = Low[t];
      }
        
   i--;
   

   buf_sr[i] = (max/min);
   }
   return;
  }
//+------------------------------------------------------------------+

Signalez l'erreur.

Merci d'avance.

Raison: