AIUTARE CHI PUÒ!!! - pagina 4

 

Mi piacerebbe conoscere un Expert Advisor come questo... apre 2 diversi ordini pendenti e chiude il resto quando uno di essi scatta...

c'era un codice base doppio in attesa di 2 chiamato ... ora non c'è ...

 
Techno:
quello che intende è che ha tutte le operazioni su tutti gli ordini mescolati in un ciclo, con un'iterazione che influenza significativamente il risultato dell'altra, e non riesce a capire perché non funziona.

Quindi dobbiamo prima separare le cotolette dalle mosche... Non avevo pensato a questo caos :-)
 
sllawa3:

Mi piacerebbe conoscere un Expert Advisor come questo... apre 2 diversi ordini pendenti e chiude il resto quando uno di essi scatta...

c'era un 2 in sospeso nel codice è stato chiamato ... non più ...


fa scorrere gli ordini aperti in base a OrderType() e imposta il contatore:

int count=0;

if(OrderType()<2) count++;

se(count==0)

{ qui c'è un selettore - non appena si incontra OrderType()>1 - cancellarlo: OrderDelete(.....); se la cancellazione ha successo (vedi Documentazione), impostare attivo: OrderSend(...); } Elementare, Watson!

Ho sbagliato un po': se(OrdersTotal()==0) {metti 2 ordini in sospeso} e poi controlla con il selettore del tipo di ordine: una volta trovato uno <2, cerca il secondo >2 e cancellalo

 

Ecco un ciclo per controllare lo stato degli ordini, dopo di che fare controlli e chiusure e modifiche, dopo ogni azione restituire l'operatore per far sì che il ciclo aggiorni lo stato degli ordini

for(int i=0;i<OrdersTotal();i++)
        {
          if(OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MAGA)
          switch(OrderType())
          {
          case 0:DB=1;break;
          case 1:DS=1;break;
          case 4:ZB=1;break;
          case 5:ZS=1;break;
          }
        }
 
OK... capisco che non puoi aiutarmi... è inutile dare consigli finché non lo vedo comunque... ne cercherò uno simile (non funziona neanche con questo ciclo di controllo... tutto rimane uguale... e anche con diversi cicli per operazione...)
 
QUALSIASI CICLO CHE NON INIZIA MOSTRERÀ L'ULTIMO VALORE DELLA VARIABILE... E NON PARTE SE NON C'È UN ORDINE
 
sllawa3:
ok... immaginavo che non saresti stato di grande aiuto... è inutile dare consigli finché non lo vedo comunque... ne cercherò uno simile (non funziona neanche con questo check loop... tutto è uguale... e anche con diversi cicli per operazione...)

Sei diventato pigro... scrivi una funzione (o due, se non sai come fare) che restituisca il numero di ordini nel mercato (storico) per i parametri specificati: simbolo, mago, tipo di ordine, cioè, in qualsiasi combinazione...

poi su ogni tick (o altro time frame con cui inizia l'EA) si definisce il numero di ordini a mercato e di ordini pendenti e usando le loro combinazioni si eseguono le azioni richieste...

mercato == 0 e ordini pendenti == 0

mercato == 0 e ordini pendenti == 2 non fanno nulla

mercato == 1 e ordini pendenti == 1 eliminare un ordine pendente

mercato == 1 e pause == 0 esca

Non posso credere che sia così difficile da fare ...


Mi dispiace. è ora di dimenticare la programmazione procedurale - usa le funzioni...

una variabile salva l'ultimo valore, è ridicolo...

 

NON C'È NESSUN PROBLEMA NELLA CRONOLOGIA, MA COME FACCIO A SAPERE SE È APERTO O NO? SE IL SELETTORE MANTIENE L'ULTIMO VALORE FINCHÉ NON VIENE RIAVVIATO...

È BURROSO.

 
sllawa3:
NON C'È NESSUN PROBLEMA NELLA CRONOLOGIA, MA COME FACCIO A SAPERE SE È APERTO O NO? SE IL SELETTORE MANTIENE L'ULTIMO VALORE FINCHÉ NON VIENE RIAVVIATO...
ti è già stato detto 5 volte come farlo da 3 persone, se non capisci, cercane uno già pronto, o chiedi a qualcuno di scriverlo per te
 
NON È SOLO QUESTO EA CHE È IL PROBLEMA, È QUALSIASI EA... CHE FINCHÉ IL SELETTORE NON VIENE RIAVVIATO (FINCHÉ NON APPARE L'ORDINE) AVRÀ L'ULTIMO VALORE BLOCCATO IN ESSO