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

 
igrok2008 >> :

Bonjour.

Il existe un expert SimpleMA, je l'ai un peu modifié pour moi, juste un peu ...:-))) et appelé MASimple_v2x.

ensuite j'ai essayé de l'améliorer MAIS MAIS

J'ai eu une erreur après l'expérience.

QU'EST-CE QUE J'AI FAIT DE MAL ?????????????

>> Merci d'avance.



Essayez de cette façon :

au lieu de - si MAF_0 - MAF_1= A
si MAS_0 - MAS_1= B

ce - double A = MAF_0 - MAF_1 ;

double B = MAS_0 - MAS_1 ;

 

Si je comprends bien, vous suivez une situation où les deux MA évoluent dans la même direction. De nombreuses autres découvertes intéressantes vous attendent :))

//это выражение не имеет смысла, if здесь лишний
   if MAF_0 - MAF_1= A
   if MAS_0 - MAS_1= B
//если требовалось определить разницу значений МА на 1-ом и нулевом баре, то можно так
   double A = MAF_0 - MAF_1;
   double B = MAS_0 - MAS_1;
 
rushman >> :

Pouvez-vous me dire s'il est possible d'augmenter le nombre de lots d'un ordre au marché sans en ouvrir de nouveaux ?

Pas à ce que je sache ! Seulement lorsque vous ouvrez un nouveau lot. Quel est l'intérêt d'augmenter les lots après l'accord ? Ou voulez-vous dire que vous voyez que vous avez ouvert dans la bonne direction, et que vous voulez de plus en plus d'argent ?

 
alsu 23.10.2009 10:22
>>

И что теперь с этим делать?

NormalizeDouble(Bid,4);   //:))))


Probablement meilleur (plus polyvalent) :

NormalizeDouble(Bid,Digits);
 

Aidez-moi à trouver un bug dans le code. Pas d'erreur lors de la compilation mais les calculs et les transactions ne passent pas( Merci d'avance aux pros qui sont ici.

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
extern int    EMA1 = 14;                                  // Период 1-й EМА
extern int    EMA2 = 48;                                  // Период 2-й EМА
extern int    EMA3 = 144;                                  // Период 3-й EМА                             
extern int period=12;
extern int porog =3;
extern int metod =1;
extern int metod2=1;
extern int prise =0;
extern double SL =  1000;                                  // СтопЛосс ордера
extern double TP =  500;                                  // ТэйкПрофит ордера
extern double Lots= 0.1;  
//--------------------------------------------------------------------------------------------
int
   New_Bar,                                              // 0/1 Факт образования нового бара
   Time_0,                                               // Время начала нового бара
   total;                                                // Крличество открытых ордеров
//--------------------------------------------------------------------------------------------
double 
   Lot,                                                  // Количество лотов
   Norm,                                                 // Предыдущее значение 1-й МА (розов)
   Fast,                                                  // Текущее    значение 1-й МА (розов)
   Slow,                                                // Текущее    значение 2-й МА(голубая)
   Signal[];
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int init()  
   {
//============================================================================================
   SL = SL*Point;                                        // SL в пунктах
   TP = TP*Point;                                        // ТР в пунктах
   return;
//============================================================================================
   }  
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int start()  
   {
//============================================================================================
   total=OrdersTotal();                                  // Общее количество ордеров
   if ( total==2)return;                                  // Уже открыты оба ордера

//----------------------------------------------------------------------------- Новый бар ----
   New_Bar=0;                                            // Для начала обнулимся
   if ( Time_0 != Time[0])                                // Если уже другое время начала бара
      {
      New_Bar= 1;                                        // А вот и новый бар
      Time_0 = Time[0];                                  // Запомним время начала нового бара
      } 
//--------------------------------------------------------------------------------------------
//---расчет тренда ввех или вниз (XMA)
   int limit;
   double tmp1, tmp2;
   int counted_bars=IndicatorCounted();
   int i;
   if( counted_bars<0) return(-1);
   if( counted_bars>0) counted_bars--;
   limit=Bars- counted_bars;
   for ( i = limit; i>=0; i--){
     tmp1=iMA(Symbol(),0, period,0, metod, prise, i);
     tmp2=iMA(Symbol(),0, period,1, metod2, prise, i); 
     if(MathAbs( tmp1- tmp2)>= porog*Point)
     {       Signal[ i]= tmp2;      }
     
//--------------------------------------------------------------------------------------------
   Fast  =iMA(NULL,0, EMA1, 0,MODE_EMA, PRICE_CLOSE, 0);// Текущее    значение 1-й EМА
   Norm =iMA(NULL,0, EMA2, 0,MODE_EMA, PRICE_CLOSE, 0);// Предыдущее значение 2-й EМА
   Slow=iMA(NULL,0, EMA3, 0,MODE_EMA, PRICE_CLOSE, 0);// Текущее    значение 3-й EМА
   
//--------------------------------------------------------------------------------------------
   if ( Fast> Norm && Norm> Slow && New_Bar==1 && Close[ i]> Signal[ i]) Open_Buy();      // Движение снизу вверх = откр. Buy
   if ( Fast< Norm && Norm< Slow && New_Bar==1 && Close[ i]< Signal[ i]) Open_Sell();     // Движение сверху вниз = откр. Sell
   
   }
      return;
//============================================================================================
   }  
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Open_Buy()  
   {
   if ( total==1)
      {
      OrderSelect(0, SELECT_BY_POS);                     // Выделим ордер
      if (OrderType()==0)return;                         // Если он buy, то не открываемся
      }
   OrderSend(Symbol(),0, Lots, Ask, 0, Ask- SL, Ask+ TP, "", 0, 0, Blue);// Открываемся
   return;
   }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Open_Sell() 
   {
   if ( total==1)
      {
      OrderSelect(0, SELECT_BY_POS);                     // Выделим ордер
      if (OrderType()==1)return;                         // Если он sell, то не открываемся
      }
   OrderSend(Symbol(),1, Lots, Bid, 0, Bid+ SL, Bid- TP, "", 0, 0, Red);// Открываемся
   return;
   }
 

Bonjour à tous, un petit conseil s'il vous plaît !!! J'ai quelques questions, je ne peux pas le faire moi-même :

1. Comment faire en sorte qu'un seul ordre s'ouvre sur une barre ?

2. Il existe plusieurs conditions d'achat et de vente, quelle fonction utiliser pour cela ?

3. Comment organiser le transfert d'une position ouverte vers Breakeven ?

4. Comment appliquer ces trois conditions dans le code de l'EA (si possible, avec un exemple) ?

J'attends vos réponses avec impatience. Merci beaucoup d'avance.

 
Piboli >> :

Bonjour. Je suis tombé par hasard sur un article traitant d'un sujet qui m'intéresse. A savoir ça : Choisir la taille de la fenêtre. .... Des résultats optimaux sont obtenus

dans le cas de la sélection d'une taille de fenêtre de l'ordre de la dimension fractale des données. Pour le calculer, il faut "découper" la série avec une fenêtre glissante d'une taille suffisamment grande

(voir la figure 5 ), puis calculez la dimensionnalité fractale des données résultantes en utilisant, par exemple, la méthode Box-count.....

Veuillez me conseiller (de préférence de manière plus simple), comment calculer la taille de cette fenêtre coulissante. Ou du moins où le regarder.


Les coordonnées de l'auteur sont sur le site web, je recommande de consulter la source originale.
 

HOURRA POUR LE TRAVAIL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Merci à maniac et granit77.

Une anecdote récente. Un cours de littérature dans un laboratoire informatique, dirigé par un professeur d'informatique.

-Gerasim était, ce.....thim......nu......a et il n'avait pas de carte son :-)))))))))))))))))

Pour ce qui est de l'expert, j'ai essayé de raccourcir les conditions de négociation. Vous savez, pour une meilleure perception.

En d'autres termes, s'il y a des calculs mathématiques, il est préférable de les appeler via le double.

 
Maniac >> :

Bonjour à tous, un petit conseil s'il vous plaît !!! J'ai quelques questions, je ne peux pas le faire moi-même :

1. Comment faire en sorte qu'un seul ordre s'ouvre sur une barre ?

....... ...

J'attends vos réponses. Merci beaucoup d'avance.

https://www.mql5.com/ru/forum/102366

//-----------------

https://www.mql5.com/ru/forum/113983/page2

//-------------

https://www.mql5.com/ru/forum/110184

 
morok >> :

Aidez-moi à trouver un bug dans le code. pas d'erreur lors de la compilation mais les calculs et les trades ne passent pas( Merci d'avance aux pros qui sont ici.

La première chose qui attire mon attention dans votre code et dont je ne suis pas sûr est l'exactitude de l'utilisation de la fonction IndicatorCounted() dans le Conseiller Expert. Je ne l'ai pas vérifié mais je crois que son exactitude n'est garantie que dans les indicateurs personnalisés.

Raison: