Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1103

 
MIKHAIL VINOGRADOV:

Saluti!

Non posso chiudere ordini opposti di lotti diversi usando CTrade.PositionCloseBy(ticket1,ticket2).

ResultRetCode() - ottengo l'errore 10035.

Si prega di consigliare qual è la ragione?

10035

TRADE_RETCODE_INVALID_ORDER

Tipo di ordine non valido o proibito


Guarda attentamente quello che stai facendo lì.

 

Ho capito bene - la funzione SetIndexBuffer è necessaria per legare il/i buffer a una costruzione grafica specifica, E PER NUMERARE L'ACCESSO AD ESSI ATTRAVERSO iCustom?

Così, per esempio, se creo un array per i prezzi alti, è sufficiente dichiararlo senza legarlo tramite SetIndexBuffer e in ...

#property indicator_buffers

... ... può essere ignorato.

Inoltre, con SetIndexBuffer potete legare solo gli array di tipo doppio, mentre datetime e altri array non possono.


Solo che non capisco bene questo punto (o l'ho capito), e ora ho un'idea - voglio chiarirlo...

 
Alexandr Sokolov:

Ho capito bene - la funzione SetIndexBuffer è necessaria per legare il/i buffer a una costruzione grafica specifica, E PER NUMERARE L'ACCESSO AD ESSI ATTRAVERSO iCustom?

Così, per esempio, se creo un array per i prezzi alti, è sufficiente dichiararlo senza legarlo tramite SetIndexBuffer e in ...

... ... può essere ignorato.

Inoltre, con SetIndexBuffer potete legare solo gli array di tipo doppio, mentre datetime e altri array non possono.


Solo che non capisco bene questo punto (o l'ho capito), e ora ho un'idea - voglio chiarirlo...

Non è una costruzione, è un insieme di dati. Pertanto, non credo che funzionerà in questo modo. Anche se non ho controllato.

Per quanto riguarda il tipo datetime, potete scriverlo in double e applicarlo forzatamente in lettura.

 
Happy:

Buongiorno.

Domanda. Nel tester, all'interfaccia lato giorno (quando passa la linea del giorno successivo) il programma dovrebbe aver piazzato un ordine pendente. L'ordine pendente che era già presente e il prezzo l'ha toccato, è stato aperto ma l'istruzione di aprire un altroordine pendente è stata ignorata dal sistema per qualche motivo. Può succedere anche in un conto reale dove le istruzioni del robot vengono semplicemente ignorate e quindi l'azione richiesta non viene eseguita?


E un'altra domanda. Sto eseguendo uno Strategy Tester ma sono stato molto confuso dal fatto che va una settimana circa nella visualizzazione e poi visualizza il seguente messaggio

177564 eventi tick (447 barre, 7888506 stati delle barre) processati in 0:17:42.694 (tempo totale 0:17:48.217)

177564 eventi tick (447 barre, 7888506 stati delle barre) processati in 0:17:42.694 (tempo totale 0:17:48.217)

Non capisco, è troppo occupato per continuare a fare test? O è così premuroso e preoccupato delle risorse del mio computer? Non vedo alcun messaggio di errore. Semplicemente termina da solo. Anche se ho fissato la data non a 7 giorni, ma a 7 mesi. Mi piacerebbe vedere l'intero percorso di prova dall'inizio alla fine.

Quale religione non gli permette di testare visivamente per esempio un anno o diversi anni? E puoi vedere visivamente come ha funzionato il tuo programma durante l'anno precedente, per esempio.


E un'altra domanda. (Anche se può essere senza risposta)) ) Come può accadere che il tester 2 giri che funziona come dovrebbe, e appena prima della suddetta iscrizione il giorno ignora tutte le istruzioni. Come è possibile che il programma abbia funzionato correttamente per diversi giri (ordini aperti e poi chiusi), e poi, boom, ignora tutto. Non si apre né si chiude. È a causa della fine di un periodo di test o ci sono altre ragioni?

 
I grafici brent e wti sullo schermo principale del sito ftm sono diversi dalle quotazioni stesse nel mio conto personale. Qualche pensiero? Sono sicuro che la gestione dei grafici, in particolare dei grafici "petrolio", avviene nella "cucina" di ftm. Non c'è una spiegazione. La prova è nella foto, allo stesso tempo i prezzi nel mio armadio personale differiscono nella direzione opposta a quelli reali e sono sempre meno per il commerciante. C'è odore di truffa...
 
Yevhenii Levchenko:

........... Ma ad un certo punto deve determinare se ha chiuso il proprio trade o se è stato qualcun altro che è entrato e l'ha chiuso....

Scrivi senza ambiguità, stai chiedendo come prescrivere o su come usare un EA senza editing

 
come posso gestire l'errore 4403?
 

  • Ciao!

    Volevo usare l'indicatore A/D per il mio EA, ma non nella sua forma pura, la sua media mobile.

    Ecco perché ho inventato delle funzioni:

    //+------------------------------------------------------------------+

    //| funzione A/D |

    //+------------------------------------------------------------------+

    doppio A_D(ENUM_TIMEFRAMES tf, int shift)

    {

    doppio res=0;



    res=iAD(NULL,tf, shift);



    ritorno res;





    }



    //+------------------------------------------------------------------+

    //| funzione A/D |

    //+------------------------------------------------------------------+

    double A_D_moving(ENUM_TIMEFRAMES tf, int period)

    {

    doppio res=0;

    doppio a[];





    for(int i=periodo; i>=1; i--)

    {

    a[i]= A_D(tf, i);

    }



    for(int i=periodo; i>=1; i--)

    {

    res=iMAOnArray(a,0,periodo,0,MODE_SMA,0);

    }



    ritorno res;





    }

    Ma durante i test, è diventato ovvio che A_D_moving() è buggato in questa revisione, poiché c'è un errore critico quando si esegue il test.

    Per favore chi può aiutare:

    Quanto è corretto scrivere A_D_moving()? Se ci sono errori, si prega di indicare...

    Grazie!


 
AurelianoV:

Si prega di inserire il codice correttamente:


 
Artyom Trishkin:

Si prega di inserire il codice correttamente:


Spiacente1

/+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D(ENUM_TIMEFRAMES tf, int shift)
  {
   double res=0;
   res=iAD(NULL,tf, shift);
   return res;
  }

//+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D_moving(ENUM_TIMEFRAMES tf, int period)
  {
   double res=0;
   double a[];
   
   for(int i=period; i>=1; i--)
     {
      a[i]= A_D(tf, i);
     }
   for(int i=period; i>=1; i--)
     {
      res=iMAOnArray(a,0,period,0,MODE_SMA,0);
     }
   return res;
  }


scusa