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

 
sur un signal : fractal (indicateur olyakish). 1 seule position est ouverte, qui est fermée sur le fractal opposé et la position opposée est immédiatement ouverte. Objectif : coder un stop à la valeur minimale ou maximale de la fractale à laquelle la position a été ouverte +\- 5 pips.
 
Vous devez absolument vérifier
- si le prix au moment de l'ouverture de l'ordre s'est éloigné de +/-5 pt de la fractale
- ou attraper le moment d'ouvrir lorsque le prix est dans le couloir +/-5 de la fractale
= mettre des stops / sticks + puis vérifier les niveaux de gel.
 

Bonjour Messieurs les professionnels !

Enfin, mon cerveau a compris comment installer un EA, mais..,

J'ai installé Rabbit3 - je l'ai lancé, j'ai défini l'autorisation de commerce automatique. J'ai Rabbit3, je l'ai, j'ai un bouton Vendre ou Acheter, et ensuite j'ai eu une confirmation. Lot 0.01, les boutons Vendre et Acheter sont inactifs, et quand je change le lot à 0.1, "Pas assez d'argent". Que dois-je faire ? Cet EA est-il capable de négocier des micro-lots ou non ?

 

J'ai décidé de coder une ouverture de position en utilisant l'indicateur MACD_Histogram(trouvé dans la base https://www.mql5.com/ru/code/8253), mais je n'arrive pas à trouver comment le coder correctement. Je devrais ajouter quelques corrections à l'indicateur, il n'a pas d'erreurs à la compilation, mais le testeur accuse les tampons. Veuillez m'indiquer comment et quoi réparer.

//+------------------------------------------------------------------+
//|                                                           E .mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//---- input parameters
extern string separator1 = "*** MACD Settings ***";
extern int FastMAPeriod = 12;
extern int SlowMAPeriod = 26;
extern int SignalMAPeriod = 9;
extern double Lots = 0.01;
#define arrowsDisplacement 0.0001

//---- buffers
double MACDLineBuffer[];
double SignalLineBuffer[];
double HistogramBuffer[];
double bullishDivergence[];
double bearishDivergence[];
//---- variables
double alpha = 0;
double alpha_1 = 0;
static datetime lastAlertTime;
static string   indicatorName;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  { 
//---- 
   SetIndexStyle(0, DRAW_LINE);                        SetIndexBuffer(0, MACDLineBuffer);
   SetIndexStyle(1, DRAW_LINE);                        SetIndexBuffer(1, SignalLineBuffer);
   SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID,2);    SetIndexBuffer(2, HistogramBuffer);
   SetIndexStyle(3, DRAW_ARROW);                       SetIndexArrow(3, 233);
   SetIndexStyle(4, DRAW_ARROW);                       SetIndexArrow(4, 234);
//----
	  alpha = 2.0 / ( SignalMAPeriod + 1.0);
	  alpha_1 = 1.0 - alpha;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   for(int i = ObjectsTotal() - 1; i >= 0; i--)
     {
       string label = ObjectName( i);
       if(StringSubstr( label, 0, 19) != "MACD_DivergenceLine")
           continue;
       ObjectDelete( label);   
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   int limit;
   int counted_bars = IndicatorCounted();
   //---- check for possible errors
   if( counted_bars < 0) 
       return(-1);
   //---- last counted bar will be recounted
   if( counted_bars > 0) 
       counted_bars--;
   limit = Bars - counted_bars;
   CalculateIndicator( counted_bars);
//----
   for(int i = limit; i >= 0; i--)
     {
       MACDLineBuffer[ i] = iMA(NULL, 0, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i) - 
                           iMA(NULL, 0, SlowMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i);
       SignalLineBuffer[ i] = alpha* MACDLineBuffer[ i] + alpha_1* SignalLineBuffer[ i+1];
       HistogramBuffer[ i] = MACDLineBuffer[ i] - SignalLineBuffer[ i];
     }

//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateIndicator(int countedBars)
  {
   for(int i = Bars - countedBars; i >= 0; i--)
     {
       CalculateMACD( i);
       CatchBullishDivergence( i + 2);
       CatchBearishDivergence( i + 2);
     }              
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateMACD(int i)
  {
   MACDLineBuffer[ i] = iMA(NULL, 0, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i) - 
                       iMA(NULL, 0, SlowMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i);
   SignalLineBuffer[ i] = alpha* MACDLineBuffer[ i] + alpha_1* SignalLineBuffer[ i+1];
   HistogramBuffer[ i] = MACDLineBuffer[ i] - SignalLineBuffer[ i];      
  }
//+------------------------------------------------------------------+
//|         сигнал                                                         |
//+------------------------------------------------------------------+
void CatchBullishDivergence(int shift)
  {   
   int currentTrough = shift;
   int lastTrough = GetIndicatorLastTrough( shift);
//----   
   if( MACDLineBuffer[ currentTrough] > MACDLineBuffer[ lastTrough] && 
      Low[ currentTrough] < Low[ lastTrough])
     {
       bullishDivergence[ currentTrough] = MACDLineBuffer[ currentTrough] - 
                                          arrowsDisplacement;
       // OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",0,0,Red);
       //----
       
       //----
       
       //----
       
     }
//----   
 
Est-ce que quelqu'un peut m'aider avec une question...
 
vous devez définir les propriétés
- #propriété tampons
- #propriété couleurs
voir des exemples dans le même code MASD
 
Korey >> :
nécessité de définir les propriétés
- #propriété tampons
- #propriété couleurs
voir des exemples dans le même code MASD

Malheureusement, cela n'aide pas. Le même journal indique 2009.02.11 00:08:10 2009.01.05 00:00 E_ EURGBP,M1 : La fonction SetIndexBuffer doit être appelée uniquement depuis un indicateur personnalisé.

Il se répète 3 fois et ..... semble qu'il y ait un problème...qu'y a-t-il d'autre ?

Voici la traduction...2009.02.11 00:08:10 2009.01.05 00:00 E_ EURGBP,M1 : La fonction SetIndexBuffer doit être appelée depuis un indicateur personnalisé uniquement.

 
amur писал(а) >>

Voici la traduction...2009.02.11 00:08:10 2009.01.05 00:00 E_ EURGBP, M1 : la fonction SetIndexBuffer ne doit être appelée que par un indicateur personnalisé.

Custom ?) Dans le testeur, vous testez les Expert Advisors, pas les indicateurs, et si ce sont des indicateurs, vous testez les Expert Advisors. Et cela reste un indicateur, même s'il est tordu par des mains téméraires. Si vous voulez coder par vous-même, vous devez combler les lacunes de vos connaissances.

 
Figar0 >> :

Customs ?) Dans le testeur, vous testez les EA, pas les indicateurs, et s'il y a des indicateurs, alors en testant les EA. Et cela reste un indicateur, même s'il est mutilé par des mains ternes. Si vous voulez coder par vous-même, vous devez combler les lacunes de vos connaissances.

Figar0, j'essaie d'apprendre, j'ai écrit ci-dessus que je ne peux pas comprendre comment décrire les tampons du tutoriel - en général, le conseiller expert pour le commerce des signaux de l'indicateur MACD_Histogramme.

>> C'est pourquoi j'ai décidé de demander de l'aide à vous - professionnels. Merci pour votre aide))


 
amur писал(а) >>

Figar0, j'essaie d'apprendre, ci-dessus j'ai écrit que je ne peux pas comprendre du tutoriel comment décrire les tampons - en général, que le Conseiller Expert a négocié sur les signaux de l'indicateur MACD_Histogram.

J'ai décidé de demander de l'aide à vous, professionnels. Merci pour votre aide))

Prenez le conseiller expert, par exemple l'échantillon MACD, livré avec MT4. Regardez son code. Il utilise l'indicateur MACD mais ne dispose pas de tampons. N'est-ce pas ? Au lieu de cela, il accède aux valeurs de l'indicateur via iMACD(....). C'est la même chose dans votre cas, vous ne devez pas refaire l'indicateur pour le trading, mais prendre votre Expert Advisor et le modifier pour qu'il fonctionne avec votre indicateur. Et d'adresser les valeurs des indicateurs par iCustom (....) (Les règles d'utilisation sont dans l'aide et le tutoriel). Si vous avez des questions plus précises, n'hésitez pas à les poser.