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

 

Vous voulez dire :

double LastOpenPrice(int ordertype)    { 
double OpenPrice;                            
datetime lastOpen;    
for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)       
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
    &&OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number
    &&OrderSymbol() == Symbol()    // and my pair.
    &&OrderType() == ordertype       
    &&OrderOpenTime() > lastOpen )  {        
            if(OpenPrice = OrderOpenPrice()&&OpenPrice!=0)          
               break;          }
               return (OpenPrice);} //  
S'il vous plaît, j'ai besoin de voir votre sulotion
 
Hand:

S'il vous plaît, j'ai besoin de voir votre sulotion

NON. . . vous avez BESOIN d'apprendre . . . faites un effort vous-même pour changer, lisez le livre ( https://book.mql4.com// ) lisez la documentation ( https://docs.mql4.com// ) . . . . avoir des numéros magiques différents pour les transactions longues et les transactions triées est idiot et PAS nécessaire . . .
 

peut-être que de cette façon cela fonctionnera .

si ( ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030=0.0030<Bid : TRUE // je pense que cela va fonctionner
{ BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

 
Hand:

peut-être que de cette façon cela fonctionnera .

si ( ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030=0.0030<Bid : TRUE // je pense que cela va fonctionner
{ BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

Quand je demande "quel est votre plan de match ?", je le pense vraiment. Pour reformuler, quelle est votre STRATEGIE ?

Si vous ne voulez PAS TRADER lorsqu'il n'y a pas de dernier prix ouvert, pouvez-vous considérer comme tel ?

if(LastOpenPrice(OP_SELL) <=0) { retour ? faire quoi ? -----case de la vente

if(LastOpenPrice(OP_BUY) <=0) { return ? ...ou faire quoi ? ------ cas d'achat

ensuite, le reste du code procède....

avec une erreur comme celle-ci, je crains que vous ne puissiez pas "combler les trous" ici et là dans vos codes. Votre stratégie semble ruinée.

Ce genre d'erreur vous "informe" que vous devez revoir la stratégie à un niveau plus élevé ---> QUAND négocier (et quand ne pas le faire). Avez-vous des réponses, des idées, etc, à ce sujet ?

 
Hand:

Tu veux dire :

S'il vous plaît, j'ai besoin de voir votre sulotion

J'ai complètement oublié d'en parler mais c'est le plus important pour l'ensemble, et l'éternité des choses, liées. C'est juste une folie totale que VOUS ayez la pensée de voir MA=Votre solution, pour laquelle je n'en ai pas.

Où sur la planète terre, êtes-vous ? Qui pensez-vous que je suis ? Votre ange gardien, votre shaman, votre génie personnel, etc ?

Peu importe ce que vous vous mettez dans la tête, je ne peux vraiment pas vous aider, juste pour votre information.

 

les gars,

Veuillez vérifier les fonctions ci-dessous (si elles sont correctes ou non), j'ai besoin de faire ces conditions

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

{ faire quelque chose }

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);
  }
 

Je peux aider avec le premier, peut-être que d'autres peuvent venir pour le reste.

<-------------------- can consider to use if(OrdersTotal()>0..then proceed  ---------------->
double lastOpenedOpenPriceBuy()  <----- what a name...confusing, maybe.
  {
   double ret = 0;
   datetime time=0; <---- can consider setting Lowest Limit to -9999, at least -1, rather than 0.  
   for(int i=0; i<OrdersTotal(); i++) { <----- do consider counting down.
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES); <------ This returns some BOOLEAN result.then what? -----(?)
      if(OrderType()==OP_BUY && OrderOpenTime()>time) { <------ This can return runtime OrderSelect ERR bec. of above line (?). ------ (!) 
         time = OrderOpenTime(); 
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);<------ return double as UnNormalized price. you sure about this?
  }

 

Veuillez noter que :

quand je mets cette condition

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) )  )") ;}

cela ne fonctionne pas, mais quand j'ai ajouté une autre condiction

if (  (lastOpenedOpenPriceBuy()>0)&&((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) )  )") ;}
cela semble bien (lastOpenedOpenPriceBuy()>0)
 
<-------------------- peut envisager d'utiliser if(OrdersTotal()>0..alors procéder---------------->
double lastOpenedOpenPriceBuy() <----- quel nom...déroutant, peut-être.
{double ret = 0; datetime time=0; <---- peut envisager de fixer la limite la plus basse à -9999, au moins -1, plutôt que 0. Aucun temps d'ouverture d'ordre ne pourrait <= 0for(int i=0; i<OrdersTotal() ; i++) { <----- envisager un décompte. Rien de différent.OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ; <------ Cela retourne un certain résultat BOOLEAN.alors quoi ? -----( ?) Si dans la boucle, l'ordre doit exister, quand l'ordre existe, l'OrderSelect ne causera pas d'erreur. Si elle n'est pas dans la boucle, cette ligne ne sera pas exécutée.if(OrderType()==OP_BUY && OrderOpenTime()>time) { <------ Ceci peut retourner une erreur d'exécution de l'OrderSelect à cause de la ligne ci-dessus ( ?). ------ ( !) Même raison que la dernière ligne.
time = OrderOpenTime() ; ret = OrderOpenPrice
() ; } } return(ret); <------ return double as UnNormalized price. you sure about this ?Déjà défini ret = 0 à la première ligne.}
 

Mon dieu, mon dieu, vous êtes tout simplement incroyable. Merci d'avoir souligné ces points, ceci :

OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ;<------Si dans la boucle, l'ordre doit exister, quand l'ordre existe, l'OrderSelect ne causera pas d'erreur. Si elle n'est pas dans la boucle, cette ligne ne sera pas exécutée.Je pense que cette ligne a des pouvoirs d'Houdini pour disparaître de la boucle en l'absence d'ordre et réapparaître quand il y en a.