come posso ottenere il più alto dopo che orderopenprice è stato aperto. - pagina 5

 

Vuoi 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);} //  
Per favore, ho bisogno di vedere la tua solzione
 
Hand:

Per favore, ho bisogno di vedere la tua pozione

NO. . . hai bisogno di imparare . . . fai qualche sforzo tu stesso per cambiare, leggi il libro ( https://book.mql4.com// ) leggi la documentazione ( https://docs.mql4.com// ) . . . avere diversi numeri magici per operazioni lunghe e ordinate è idiota e NON necessario . . .
 

forse in questo modo funzionerà.

if ( ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030=0.0030<Bid: TRUE // penso che funzionerà
{ BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

 
Hand:

forse in questo modo funzionerà.

if ( ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030=0.0030<Bid: TRUE // penso che funzionerà
{ BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

Quando chiedo "qual è il tuo piano di gioco?" lo intendo davvero. Per riformulare, qual è la tua STRATEGIA?

Se non volete fare trading quando non c'è l'ultimo prezzo aperto, potete considerarla tale?

if(LastOpenPrice(OP_SELL) <=0) { return? fare cosa? -----case di vendita

se(LastOpenPrice(OP_BUY) <=0) { return?...o fare cosa? ------ caso di acquisto

poi, il resto del codice procede....

con un errore come questo, temo che tu non possa "riempire i buchi" qua e là nei tuoi codici. La tua strategia sembra rovinata.

Questo tipo di errore "informa" che è necessario rivedere la strategia ad un livello superiore ---> QUANDO fare trading (e quando non farlo). Hai risposte, idee, ecc, a questo?

 
Hand:

Vuoi dire:

Per favore, ho bisogno di vedere il tuo sultano

Ho completamente dimenticato di parlare di questo, ma questo è il più importante per la totalità, e l'eternità delle cose, relative. È solo una follia totale che VOI abbiate il pensiero di vedere la MIA=LORO soluzione, per la quale io non lo faccio.

Dove sei, sul pianeta terra? Chi credi che io sia? Il tuo angelo custode, sciamano, genio personale, ecc?

Qualunque cosa tu ti metta in testa, non posso davvero aiutarti, solo per tua informazione.

 

ragazzi,

Per favore, controllate le funzioni seguenti (se sono corrette o no), ho bisogno di fare queste condizioni

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

{ fare qualcosa }

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

Posso aiutare con il primo, forse altri possono intervenire per il resto.

<-------------------- 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?
  }

 

Si prega di notare che:

quando ho messo questa condizione

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

non funziona, ma quando ho aggiunto un'altra condizione

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) )  )") ;}
sembra che vada bene (lastOpenedOpenPriceBuy()>0)
 
<-------------------- può considerare di utilizzare if(OrdersTotal()>0..then proceed---------------->
double lastOpenedOpenPriceBuy() <----- che nome...confuso, forse.
{double ret = 0; datetime time=0;<---- può considerare l'impostazione di Lowest Limit a -9999, almeno -1, piuttosto che 0. Nessun ordine aperto potrebbe <= 0for(int i=0; i<OrdersTotal(); i++) { <----- considerare il conto alla rovescia. OrderSelect(i, SELECT_BY_POS, MODE_TRADES); <------ Questo restituisce un risultato BOOLEAN.then what? -----(?) Se nel ciclo, l'ordine deve esistere, quando l'ordine esiste, OrderSelect non causa errori. Se non è nel ciclo, questa linea non verrà eseguita.if(OrderType()==OP_BUY && OrderOpenTime()>time) { <------ Questo può restituire OrderSelect ERR di runtime a causa della linea precedente (?). ------ (!) Stesso motivo dell'ultima riga.
time = OrderOpenTime(); ret = OrderOpenPrice
(); } } return(ret);<------ ritorna doppio come prezzo UnNormalized . sei sicuro di questo?Già definire ret = 0 alla prima riga.}
 

Ragazzo oh ragazzo, sei semplicemente incredibile. Grazie per aver sottolineato questi esp, questo:

OrderSelect(i, SELECT_BY_POS, MODE_TRADES); <------Se nel ciclo, l'ordine deve esistere, quando l'ordine esiste, OrderSelect non causa errori. Se non è nel ciclo, questa linea non viene eseguita.Credo che questa vostra linea abbia qualche potere Houdini per scomparire dal ciclo quando non ci sono ordini, riapparendo quando ci sono.