Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 199

 

Bonsoir.

Pourriez-vous me dire comment ajouter la fermeture de toutes les positions et la suppression de tous les ordres à la fin de la semaine de négociation ?

Merci !

 
Antonius:

Bonsoir.

Pourriez-vous me dire comment ajouter la fermeture de toutes les positions et la suppression de tous les ordres à la fin de la semaine de négociation ?

Merci !

Écrivez un tel script, puis lancez-le sur le graphique lorsque vous voulez fermer et tout supprimer. C'est tout...

Vous êtes les bienvenus !

 
artmedia70:

Écrivez un tel script, puis lancez-le sur le graphique lorsque vous voulez fermer et tout supprimer. Le fait est que...

S'il vous plaît !



Merci :) Clarifier la demande.

Nous devons ajouter un code à l'EA qui fermera tous les ordres et toutes les positions à la fin de la semaine de négociation.

Pourriez-vous écrire ce code ?

 
Antonius:


Merci :) Clarifier la demande.

Nous devons ajouter un code à l'EA qui fermera tous les ordres et toutes les positions à la fin de la semaine de négociation.

Pourriez-vous écrire ce code ?

Je peux le faire. Pas de problème. Avez-vous déjà fait quelque chose vous-même ? Ce fil de discussion ne vise pas à obtenir des trucs gratuits, mais à aider les personnes qui essaient de coder pour elles-mêmes.
 
artmedia70:
Je peux le faire. Pas de problème. Avez-vous déjà fait quelque chose vous-même ? Ce fil de discussion ne vise pas à obtenir quelque chose de prêt gratuitement, mais à aider ceux qui essaient de coder par eux-mêmes.


Je l'ai vérifié sur https://book.mql4.com/ru/trading/orderclose.

J'ai cherché sur google, sur le forum. Je n'en ai pas trouvé. Peut-être que j'écris mal la requête.

J'ai pensé demander dans le fil des débutants.

 

Comment dois-je prescrire ?

Lorsque vous exécutez le script :

Une fenêtre s'ouvre avec les onglets "général" et "paramètres d'entrée".

J'ai besoin d'entrer une date dans les paramètres de saisie.

Est-il possible que lorsque je lance le script, une boîte de date apparaisse, que j'entre la date, que je clique sur ok et que tout fonctionne ?

Et puis-je faire en sorte que le script se souvienne de la dernière date que j'ai saisie ?

 
artmedia70:

La fonction déterminant la dernière position fermée de la butée est de type bool, alors que vous essayez de lui retourner le type double. En conséquence, il renvoie soit 0 soit 1.

Je vous ai écrit que vous deviez y ajouter le passage d'une variable par référence :

Maintenant, vérifiez le dernier Buy, par exemple :

Comme ça...


Merci beaucoup.
 
artmedia70:

La fonction déterminant la dernière position fermée de la butée est de type bool, alors que vous essayez de lui retourner le type double. En conséquence, il renvoie soit 0 soit 1.

Je vous ai dit que vous deviez y ajouter le passage d'une variable par référence :

Maintenant, vérifiez le dernier Buy, par exemple :

Comme ça...


J'ai fait tout ce que vous avez dit. Tout a été compilé...... mais la fonction ne fonctionne pas lors du test du conseiller..... toutes les positions le conseiller ouvre 0.1 lot.

double  Magic, Lot;

int start()
  {
        

  
 double Price=iOpen (Symbol (),0,0);
 

          
 int last_order_bar = 0;                                                                                                                        
 int ot = OrdersTotal();                                                                                                                        
                                                                                                                        
 if (ot>0) //если есть ордера в рынке                                                                                                                   
 {                                                                                                                      
   if (OrderSelect (ot-1,SELECT_BY_POS))                                                                                                                        
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )                                                                                                                       
         last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());                                                                                                             
 }                                                                                                                      
                                                                                                                        
 int last_hist_order_bar = 0;                                                                                                                   
 int oht = OrdersHistoryTotal();                                                                                                                        
                                                                                                                
 if (oht>0)                                                                                                                     
 {                                                                                                                      
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))                                                                                                                         
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)                                                                                                                        
         last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
                                                                                                        
        }

                                                                                                        
if (ot==0)

 if (Bid ==Price)
//=============================================================== 
  
if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))

//============================================================
                                                                           // задавать минимальное значение лота я не стал,мне кажется для тестера это не обязательно
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))                        
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{

Lot=0.1;        
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
   return(0);
  }
//============================================================  
bool isCloseLastPosByStop(string sy, int op, int mn, double ll)       //у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.
{
   double   pt;
   datetime t;                                                       //у вас тип переменной t был int - я сделал datetime
   int       dg, i, j=-1, k=OrdersHistoryTotal()-1;

   for (i=k; i>=0; i--) 
   {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
     {
         if (OrderMagicNumber()!=mn)   continue;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)        continue;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)           continue;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) 
         {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
      
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) 
   {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);      // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
      if (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
      { 
         ll=OrderLots();                              // записываем количество лотов в ордере, закрытом по стопу
         return(true);                                // возвращаем истину
         }
      }
      
   return(False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}

S'il vous plaît, dites-moi quelle est mon erreur.

Je ne comprends pas ce point - comme vous l'avez correctement remarqué, la fonction renvoie la valeur de type bool, mais dans l'appel de fonction, dans lequel la fonction doit mettre la valeur de type bool.

Vous avez proposé de spécifier d'autres types de valeurs.

Merci.

 
solnce600:

J'ai fait tout ce que vous avez dit. Tout se compile...... mais la fonction ne fonctionne pas quand on teste l'EA..... toutes les positions l'EA ouvre 0.1 lots.

Pourriez-vous me dire quelle est mon erreur ?

Je ne comprends pas ce moment - comme vous l'avez correctement remarqué, la fonction renvoie une valeur de type bool, mais dans l'appel de la fonction, dans lequel la fonction devrait mettre une valeur de type bool

Suggérez-vous de spécifier d'autres types de valeurs ?

Merci.


bool isCloseLastPosByStop(string sy, int op, int mn, double ll)       //у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.

Pourquoi l'avez-vous retiré ? Si tu l'avais laissé, tout aurait fonctionné.

 
Vinin:

Pourquoi l'enlever. S'ils l'avaient fait, tout aurait fonctionné

Je me demande ..... ce que ce signe signifie.... Je ne vois rien dans le manuel à ce sujet.
Raison: