[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 611

 

Aidez-moi à écrire un indicateur simple qui dessine des lignes de hauts et de bas dans la fenêtre principale pour la période requise (qui est définie avec une variable externe).

 

S'il vous plaît, dites-moi où trouver un agenda de 15 jours pour la semaine.

Veuillez me donner un lien, un fichier ou un nom.

Et comme toujours, merci pour votre temps.

 
41ckm39fi:

Bonsoir.

Pourriez-vous me dire quelle est l'erreur, l'indicateur ne donne pas de message sur le croisement de deux MAs.


Avez-vous bien réfléchi avant de rédiger cet indicateur ?

Veuillez expliquer la logique, au moins pour vous-même.

#property indicator_chart_window

extern int        Period_MA_fast         = 5,
                  Period_MA_med          = 8,
                  Period_MA_slow         = 16,
                  period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  Speed_MA_fast[],
                  Speed_MA_med[],
                  Speed_MA_slow[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   IndicatorBuffers(4);
   SetIndexBuffer(0,DeMarker_buffer0);
   SetIndexBuffer(1,Speed_MA_fast);
   SetIndexBuffer(2,Speed_MA_med);
   SetIndexBuffer(3,Speed_MA_slow);
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_NONE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
   //----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
   
   if(counted_bars>0) counted_bars--;
      limit=Bars-counted_bars;
   //----
   for(i=limit; i>=0; i--) {
      DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
      Speed_MA_med[i]=iMA(NULL,0,Period_MA_med,0,MODE_LWMA,PRICE_CLOSE,i);
      Speed_MA_slow[i]=iMA(NULL,0,Period_MA_slow,0,MODE_LWMA,PRICE_CLOSE,i);
   }
   
   for(i=limit; i>=0; i--)
      Speed_MA_fast[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
   
   static int PrevTime = 0;

   if(PrevTime >= Time[0] ) return(0);
   PrevTime = Time[0];

   if(Speed_MA_fast[SIGNAL_BAR] - 0.3 > 0)
      if (0.3 - Speed_MA_fast[SIGNAL_BAR+1] >= 0)
         Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );

   if(0.7 - Speed_MA_fast[SIGNAL_BAR] > 0)
      if (Speed_MA_fast[SIGNAL_BAR+1] - 0.7 >= 0)
         Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");

   if(Speed_MA_med[SIGNAL_BAR] - Speed_MA_slow[SIGNAL_BAR] > 0)
      if (Speed_MA_med[SIGNAL_BAR+1] - Speed_MA_slow[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );   

   if(Speed_MA_slow[SIGNAL_BAR] - Speed_MA_med[SIGNAL_BAR] > 0)
      if (Speed_MA_slow[SIGNAL_BAR+1] - Speed_MA_med[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SELL!!!" );     
  
  
   return(0);
}
//+------------------------------------------------------------------+
Cela pourrait fonctionner, mais je ne l'ai pas testé.
 

Merci à tous ! Il y a encore une question..........

J'ai un EA avec des conditions d'entrée et de sortie basées sur certains signaux(quoi qu'il arrive).

c'est-à-dire trois écrans - un indicateur, par exemple Force ou Stohostick

conditions de sortie également seulement par elle -

tout est OK, mais un Stop Loss supplémentaire est nécessaire pour protéger les positions

c'est-à-dire =10p.

................. Puis-je utiliser cet EA sans pertes supplémentaires, au minimum ?

il peut être possible d'utiliser un tel conseiller expert sans pertes supplémentaires, au moins pour les petits lots=0.01, car le signal de sortie sera de toute manière

P.S. Je pensais à l'email ou à ICQ - je viens d'ouvrir et MT t'a envoyé un message.

et tu réfléchis au meilleur endroit pour t'arrêter.

....... ne dites pas non à ceux qui vous le demandent.

 
KlugerX35:

Merci à tous ! Il y a encore une question..........

J'ai un EA avec des conditions d'entrée et de sortie basées sur certains signaux(quoi qu'il arrive).

c'est-à-dire trois écrans - un indicateur, par exemple Force ou Stohostick

conditions de sortie également seulement par elle -

tout est OK, mais un Stop Loss supplémentaire est nécessaire pour protéger les positions

c'est-à-dire =10p.

................. Puis-je utiliser cet EA sans pertes supplémentaires, au minimum ?

il peut être possible d'utiliser un tel conseiller expert sans pertes supplémentaires, au moins pour les petits lots=0.01, car le signal de sortie sera de toute manière

P.S. Je pensais à l'email ou à ICQ - je viens d'ouvrir et MT t'a envoyé un message.

et tu réfléchis au meilleur endroit pour t'arrêter.

....... ne dites pas non à ceux qui vous le demandent.


Si le Conseiller Expert a une sortie "technique", il n'a pas besoin de stop, si vous voulez mettre un stop juste au cas où, pour l'assurance, alors mettez-en un plus grand.

10p est une perte réelle.

Pour quelle période est-elle si petite, pour une minute ? Bien sûr, il est détraqué et peut même détruire des transactions potentiellement rentables.

Est-il possible d'utiliser un tel conseiller expert sans LOS supplémentaire, au moins ?

utilisez simplement un petit lot=0.01

S'il fonctionne de manière stable, qu'il traite les erreurs normalement et que vous êtes satisfait des résultats des transactions, alors vous pouvez le faire.
 

C'est une question - quelqu'un peut-il m'expliquer ?

Pourquoi est-il indiqué que la fermeture par contre-ordre permet de gagner un écart ? Après tout, la première transaction, par exemple Acheter, est achetée au prix de l'Offre et vendue au prix de l'Offre à ce moment-là (aucun profit dans la taille totale de la position), et la deuxième transaction - Vendre - est ouverte à l'Offre et, en conséquence, la longueur de la position est calculée sur la base du prix de clôture de l'Offre.

Le manuel donne quelques exemples peu clairs https://book.mql4.com/ru/trading/orderclose où la différence n'est pas dans l'écart comme indiqué, mais dans la taille de la deuxième transaction - dans une clôture de 2 pour 15 d'une transaction, et de l'autre - seulement 15, c'est-à-dire que toutes les pertes de la transaction disparaissent, mais pas l'écart.

Alors quel est le piège ici ?

 
FatyM:

S'il vous plaît, dites-moi où trouver un agenda de 15 jours pour la semaine.

Veuillez me donner un lien, un fichier ou un nom.

Et comme toujours, merci pour votre temps.

Dossiers :
 
Vinin:


Avez-vous bien réfléchi avant de rédiger cet indicateur ?

Notez la logique, au moins pour vous-même.

Peut-être que ça marchera, je n'ai pas vérifié

.
J'ai réécrit la logique de la comparaison des muwings toujours pas de messages, je n'arrive pas à comprendre quelle est l'erreur.
#property indicator_chart_window
#property  indicator_level1 0.3
#property  indicator_level2 0.7
//---- 
extern int        Period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  MA0[],
                  MA1[],
                  MA11[],
                  MA2[],                        
                  MA22[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
IndicatorBuffers(6);
SetIndexBuffer(0,DeMarker_buffer0);
SetIndexBuffer(1,MA0);
SetIndexBuffer(2,MA1);
SetIndexBuffer(3,MA2);
SetIndexBuffer(4,MA11);
SetIndexBuffer(5,MA22);
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_NONE);
SetIndexStyle(2,DRAW_NONE);
SetIndexStyle(3,DRAW_NONE);
SetIndexStyle(4,DRAW_NONE);
SetIndexStyle(5,DRAW_NONE);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
//----
if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
  for(i=limit; i>=0; i--)
  DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
//---- 
  for(i=limit; i>=0; i--)
  
  MA0[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
//----   
  static int PrevTime = 0;
//---- 
  if(PrevTime >= Time[0]) return(0);
//---- 
  PrevTime = Time[0];
//----
                if(MA0[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA0[SIGNAL_BAR+1] >= 0)  
//---- 
                                Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );
//----
if(PrevTime <= Time[0]) 

return(0);
//---- 
  PrevTime = Time[0];
//----          
                if(0.7 - MA0[SIGNAL_BAR] > 0 && MA0[SIGNAL_BAR+1] - 0.7 >= 0)
//----               
                                Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");
                                
                                
MA1[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA2[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);

MA11[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA22[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);                                                       
                
//----   
if((MA1[i]>MA2[i]) && (MA11[i+1]<MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL1!!!" );    

if((MA1[i]<MA2[i]) && (MA11[i+1]>MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL2!!!" );   

   return(0);
  }
 

Comment faire pour que MathRand fonctionne correctement, j'obtiens le même ensemble de nombres aléatoires à chaque fois que je l'exécute. Ce qui signifie qu'ils ne sont pas aléatoires.

 

Comment faire pour que MathRand fonctionne correctement, j'obtiens le même ensemble de nombres aléatoires à chaque fois que je l'exécute. Ce qui signifie qu'ils ne sont pas aléatoires.