comment puis-je obtenir le prix le plus élevé après l'ouverture de l'ordreopenprice. - page 6

 

J'ai résolu le premier problème ( j'ai fait une erreur Merci diostar)

// Je devrais mettre if(OrdersTotal()>0){
if ( ((lastOpenedOpenPriceBuy()-0.0030)>MarketInfo("EURUSD",MODE_BID)) )
{ SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1, "if ( ((lastOpenedOpenPriceBuy()-0.0030>MarketInfo(EURUSD,MODE_BID) )" ) ;}
}

pour le second :

if ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell() )>=0.0060) &&( lastClosedClosePrice()<beforelastClosedClosePrice()) ) )
{ CLOSESHORT("EURUSD") ;}

Je ne sais pas ce que je dois faire :

pour votre information la fonction CLOSESHORT est :

int CLOSESHORT(string symbol_c) {
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort) ;
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort) ;
return(0) ;
}


Merci

 

Je suis maintenant confus.

Répondez-vous au sujet de la première fonction lastOpenedOpenPriceBuy()?

Il se peut que je ne puisse m'occuper que de cela pour le moment. Donc, quels sont les correctifs que vous étiez en train de mettre en place exactement. A quoi ressemble le code maintenant ?

 
diostar:

Je suis maintenant confus.

Vous n'êtes pas le seul... arrêtez de perdre votre temps.
 
RaptorUK:
Tu n'es pas le seul... arrête de perdre ton temps.

Vous savez, ce fil est probablement l'un des plus longs. Et après 6 pages, je suis confus. Non, je continue à dire que ce n'est pas une "perte".

(Cela signifie simplement qu'il est temps de prendre une nouvelle direction, une nouvelle vie, un nouveau départ. Pour tout le monde.)

 
J'ai passé du temps sur ce fil également, j'ai ajouté du code et fait des suggestions.... ... quand vous traînez le cheval jusqu'à l'eau, que vous l'aromatisez avec du foin et que vous ajoutez des pommes, et que le cheval ne veut toujours pas boire, il est temps de réaliser que le cheval ne veut pas boire... il veut une perfusion intraveineuse pour sa consommation d'eau... à ce moment-là, en ce qui me concerne, le cheval est livré à lui-même.
 
RaptorUK:
J'ai également passé du temps sur ce fil de discussion, j'ai ajouté du code et fait des suggestions.... ... quand vous traînez le cheval jusqu'à l'eau, que vous l'aromatisez avec du foin et ajoutez quelques pommes et que le cheval ne veut toujours pas boire, il est temps de réaliser que le cheval ne veut pas boire... il veut une perfusion intraveineuse pour sa consommation d'eau... à ce moment-là, en ce qui me concerne, le cheval est livré à lui-même.

Je vois. La récompense finale n'est peut-être pas "destinée" à ce que le cheval soit nourri, mais la récompense de ceux qui ont essayé doit être autre chose.

Remerciez le cheval pour cela.

 

Merci diostar pour votre aide.

Maintenant je dois corriger les bugs à 85%. voyons voir :

1- nous avons créé 4 fonctions ( veuillez les voir à la fin de cette page)

*lastOpenedOpenPriceBuy()

*dernièreOpenedOpenPriceSell()

*lastClosedClosePrice()
*beforelastClosedClosePrice()

2- Nous avons rencontré le premier problème lors de l'utilisation :

if (  ((lastOpenedOpenPriceBuy()-0.0030)>MarketInfo("EURUSD",MODE_BID))  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+0.0030)<MarketInfo("EURUSD",MODE_BID))  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}

Nous le corrigeons en ajoutant :

if(OrdersTotal()>0){
  if (  ((lastOpenedOpenPriceBuy()-0.0030)>MarketInfo("EURUSD",MODE_BID))  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+0.0030)<MarketInfo("EURUSD",MODE_BID))  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}
  }

3- Le deuxième problème est :

if ( ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>=0.0060)&&(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/2)<MarketInfo("EURUSD",MODE_BID))
         &&(lastClosedClosePrice()< beforelastClosedClosePrice()) )  
   {  CLOSESHORT("EURUSD") ;}

si j'enlève &&(lastClosedClosePrice()< beforelastClosedClosePrice()) . alors tout ira bien .

pas de problème avec :

*((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>=0.0060)

*(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/2)<MarketInfo("EURUSD",MODE_BID))

le seul problème vient de &&(lastClosedClosePrice()< beforelastClosedClosePrice())

Prenons un exemple :

si l'ordre numéro 5 s'est ouvert et était pour la vente puis l'ordre numéro 6 s'est ouvert et a fermé que l'ordre était pour l'achat puis l'ordre numéro 7 s'est ouvert et était pour l'achat.

Le cas sera (lastClosedClosePrice()< beforelastClosedClosePrice())

( Order Number 6 < Order Number 4 ) // puisque l'ordre numéro 5 n'a toujours pas été clôturé.

Que dois-je faire ? Je ne sais pas. J'ai essayé d'utiliser if(OrdersHistoryTotal()>0){alorsinsérer toutes les conditions mais pas moyen }

double lastOpenedOpenPriceBuy()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }


double lastOpenedOpenPriceSell()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_SELL && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }



double lastClosedClosePrice()
  {
   double ret = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = OrderClosePrice();
      }
   }
   
   return(ret);
  }


double beforelastClosedClosePrice()
  {
   double ret = 0;
   double ret2 = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = ret2;
         ret2 = OrderClosePrice();
      }
   }
   if(ret==0) {
      ret = ret2;
   }
   
   return(ret);
  }
 
double lastOpenedOpenPriceBuy()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }

Ce n'est PAS ce que j'ai suggéré, et "nous" n'avons pas créé ça. C'est 100% à vous.

Raison: