Il consigliere è adatto alla vita reale? - pagina 30

 
FOReignEXchange:

Andrò sicuramente avanti quando sarà il momento.

Buona fortuna a voi
 
dentraf:

Buona fortuna a voi!

Grazie!
 
FOReignEXchange:

L'idea è di fare trading in un mercato disordinato con alta volatilità. Tutte le principali coppie di valute sono così adesso. La volatilità è alta, la logica e nessun sistema funzionano. È il caos. ....
Andiamo. Tutto funziona come prima.
 

Dopo la volatilità di oggi, ho confrontato i risultati del tester con quelli reali. Sfortunatamente sono state rivelate discrepanze significative in tale mercato.

Ho smontato i log del terminale al minuto e ho visto una buona cosa. Tutti i pip sono stati fissati esattamente su un punto. Il robot ha raccolto tutto il profitto che poteva su questo settore. Ma tutto questo profitto è stato sprecato, perché c'era un problema. Il problema è risolvibile, ma non riesco a capire perché sia un problema. Cioè, non possiamo cancellare gli ordini inutili. Credo che ci siano due ragioni per questo.

Primo: nel registro c'è scritto questo

22:23:30 '882613': cancellare l 'ordine pendente #26344474 buy stop 4.00 EURUSD a 1.3787 sl: 1.3773 tp: 1.3799
22:23:30 '882613': cancellare l'ordine pendente #26344474 buy stop 4.00 EURUSD a 1.3787 sl: 1.3773 tp: 1.3799 fallito [parametri non validi]

22:37:27 '882613': cancellare l'ordine pendente #26347980 vendere stop 4.00 EURUSD a 1.3668 sl: 1.3682 tp: 1.3656
22:37:27 '882613': cancellare l'ordine pendente #26347980 vendere stop 4.00 EURUSD a 1.3668 sl: 1.3682 tp: 1.3656 fallito [parametri non validi]
22:37:27 '882613': cancellare l'ordine pendente #26347980 vendere stop 4.00 EURUSD a 1.3668 sl: 1.3682 tp: 1.3656
22:37:28 '882613': cancellare l'ordine pendente #26347980 vendere 4,00 EURUSD a 1,3668 sl: 1,3682 tp: 1,3656 fallito [parametri non validi]

Questi due ordini non sono stati cancellati ed entrambi hanno causato perdite. Il secondo ordine ha cercato di essere cancellato due volte. Non capisco perché non vengono cancellati. Tutto funziona bene per tutto il giorno, ma qui no, anche se si mette RefreshRates() prima della funzione di cancellazione.

E in secondo luogo:

Penso che sia un bug. Sembra che il terminale non abbia abbastanza memoria o cervello. Dimentica che noi selezioniamo un ordine. Questi sono i pezzi che non funzionano.

if (//Тут условие//)
   {
   if (OrderSelect(ticket_buy,SELECT_BY_TICKET)==true)
     {
     if (OrderType()==OP_BUYSTOP && Ask>(OrderOpenPrice()-4*Point)) 
        {
        i=0;
        while (i<10)
              {
              if (i>0) Sleep(500);      
              RefreshRates(); OrderDelete(ticket_buy); 
              err=GetLastError();
              if (err==0)
                 {
                 ticket_buy=0; return;
                 }
              i++;
              }
        }
     }
   }

Tutte le condizioni sono soddisfatte, le ho controllate con i commenti. Nella fase di controllo del tipo di ordine tutto si blocca. La funzione di cancellazione non viene più utilizzata. Anche se dovrebbero, dato che tutte le condizioni sono soddisfatte e tutti i commenti le controllano. Non è la prima volta che ho notato che quando selezioniamo un ordine e poi specifichiamo qualsiasi parametro dell'ordine selezionato nella condizione, a volte non riusciamo a leggere correttamente questa condizione. Maggiore è il numero di parametri d'ordine nella condizione, più spesso la condizione fallisce. In questo caso, abbiamo i parametri OrderType() e OrderOpenPrice(). Penso che molti di noi abbiano notato questa stranezza. Come possiamo liberarcene? O forse il problema sta in qualcos'altro? Ho dimenticato di dire, nessun errore nel log in questo caso, solo che la condizione non è soddisfatta, anche se dovrebbe.

Penso che non ci possa essere un problema nell'altro, perché la condizione non è soddisfatta raramente, di solito tutto funziona bene in questa parte, ma a volte non funziona e porta perdite.

Non giudicare duramente per un codice così analfabeta, sono un autodidatta.

Perché esattamente la rimozione degli ordini avviene con tali problemi? I miei ordini sono piazzati esattamente come necessario e il robot raccoglie tutti i profitti. Ma tutto si sta incasinando perché non possiamo cancellare gli ordini inutili! Se vi sbarazzate di questi problemi, tutto funzionerà come dovrebbe!

 
FOReignEXchange:

A giudicare dal log, il codice non è arrivato in tempo.

Cioè, la cancellazione era già in corso quando l'ordine è stato attivato.

 
TheXpert:

A giudicare dal log, il codice non è arrivato in tempo.

Cioè, la cancellazione era già in corso quando l'ordine è stato attivato.


E gli ordini pendenti sono impostati esattamente allo stesso tempo e non vengono persi. Perché c'è un problema con la cancellazione? Soprattutto nel secondo caso ha cercato di cancellarlo due volte.
 
FOReignEXchange:
E gli ordini pendenti sono impostati esattamente allo stesso tempo e non vengono persi. Perché c'è un problema con la cancellazione? Tanto più che nel secondo caso ha cercato di cancellarlo due volte.

Guarda attentamente: questa è la seconda volta che stai cercando di cancellare un ordine eseguito, non un ordine limite.

E per l'impostazione ci sono i livelli Stop e per la rimozione ci sono solo i livelli Frees.

 
TheXpert:

Guarda bene: è la seconda volta che cerchi di cancellare un ordine eseguito, non un ordine limite.

E ci sono stoplines per fare un ordine, ma solo freesliders da cancellare, e questo se ce ne sono.


Tutto è chiaro nel primo caso. Grazie mille! Conosci il secondo? È più importante perché succede più spesso e causa più perdite. Tutto è a posto in termini di condizioni. E non è la velocità del mercato e c'è molto tempo per rimuoverlo. La condizione non è soddisfatta, anche se dovrebbe esserlo.
 
FOReignEXchange:

Conosci il secondo per caso? La condizione semplicemente non funziona, anche se dovrebbe.

Forse questa condizione a volte fallisce, cioè il suo lato destro

if (OrderType()==OP_BUYSTOP && Ask>(OrderOpenPrice()-4*Point))

Normalizzare Ask prima di confrontare.

 
OnGoing:

Forse questa condizione a volte non riesce

Normalizzare l'Ask prima di confrontarlo.


Come questo?

NormalizeDouble(Ask,Digits)>(OrderOpenPrice()-4*Point))