[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 87

 
sergeev:

713
borilunad 15.01.2013 12:10

Potresti risolvere un mistero: perché quando ho inserito questa funzione || isCloseLastPosByTake() == True || l'esperto nel tester ha iniziato a rallentare molto, 10 volte! Questa è una delle 4 condizioni mutuamente esclusive, quindi non posso usare la catena if come nelle condizioni sommate per rendere il codice più veloce. Cosa può consigliarmi? Grazie in anticipo per i vostri consigli!

Questa funzione passa attraverso gli ordini per trovare l'ultima chiusura al valore di presa. Rielaborare questa funzione per velocizzarla. Sono tutti universali nel caso di Kim, il che significa che ci si può sbarazzare di un sacco di cose inutili da lì. Di nuovo, tutto dipende dalla logica del tuo Expert Advisor.
 

Potete dirmi per favore come aprire gli ordini di acquisto? Condizioni di ordine di venditaif(OrdersTotal()==0&& ma0<ma1 && ma1<ma2). Capisco che dovremmo usareun interruttore. Cosa dovrei scrivere al posto di(x,a,b)?

se(OrdiniTotali()==0)

switch(x)caso'a':caso'b':

Grazie in anticipo!


 
artmedia70:
Questa funzione passa attraverso gli ordini per trovare l'ultimo chiuso al take. Rielaborare questa funzione per velocizzarla. Sono tutti universali nel programma di Kim, il che significa che molte cose inutili possono essere rimosse da essi. Di nuovo, tutto dipende dalla logica del tuo Expert Advisor.
Grazie mille! Stavo pensando che potrei usare qualche operatore, ma non passano i casi con "o" per una stessa azione.
 
KoOr:

Potete dirmi come aprire un ordine di acquisto? Condizioni di ordine di venditaif(OrdersTotal()==0&& ma0<ma1 && ma1<ma2). Capisco che dovremmo usareun interruttore. Cosa dovrei scrivere al posto di(x,a,b)?

se(OrdiniTotali()==0)

switch(x)caso'a':caso'b':

Grazie in anticipo!




if(OrdersTotal()==0)
 {
  if( ma0<ma1 && ma1<ma2) OrderSend(....,OP_SELL,.......);
  if( ma0>ma1 && ma1>ma2) OrderSend(....,OP_BUY,.......);
 }
Si aprirà un solo ordine, non più di questo, sia per vendere che per comprare.
 

Ho lottato tutto il giorno per capire perché la funzione restituisce -1

int typ(string t, int m)
{  datetime z=0 ; int p=-1,i;
   int d=OrdersHistoryTotal();
   if ( t=="0") t=Symbol(); 
   for( i=0;i<=d;i++){
   if ( OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ) {                     
   if ( (OrderSymbol() == t || t=="0" ) && ( OrderMagicNumber() == m || m==-1 ) ){
   if ( OrderCloseTime()>z&&OrderType()<=1)  
   {
   z =OrderCloseTime(); 
   p =OrderType();
   }}}}
return(p);
} 

La chiamata va così

Comment(typ("0",-1));

Tutti gli ordini sono nella storia!

Quale può essere l'errore?

 
VOLDEMAR:

Ho lottato tutto il giorno per capire perché la funzione restituisce -1

La chiamata va così

Tutti gli ordini sono nella storia!

Quale può essere l'errore?



Comment(typ(Symbol(),-1));
Non c'è "0", c'è "EURUSD", "AUDUSD" ecc.
 
Sepulca:


Non c'è un simbolo "0", c'è "EURUSD", "AUDUSD" ecc.

Se non c'è un tale simbolo if ( t=="0") t=Symbol(); allora rendiamo t uguale al nostro simbolo a cui è collegato l'EA;
 
ma come può essere che la condizione se DayOfWeek( ) ==1 ... ...sarebbe stato incontrato di martedì?
 
VOLDEMAR:

Se non c'è un tale simbolo if ( t=="0") t=Symbol(); allora rendiamo t uguale al nostro simbolo a cui è collegato l'EA;

Mi dispiace, non ho notato... Allora eccolo qui:

for( i=0;i<d; i++){

L'ultimo numero d'ordine è OrdersTotal()-1; Ma non è questo il punto. Ho provato, risulta che la storia degli ordini chiusi non è visibile nel tester, sul conto demo il tuo codice funziona.

 

Non ho quello che hai scritto nel mio codice.

Lo faccio.

int d=OrdersHistoryTotal();

e passa prima...

Beh, non importa, ho trovato il problema altrove nel codice ....

Motivazione: