Come liberare risorse indiore? indiore chiamato da EA

 

Publi

Come liberare risorse indiore? indiore chiamato da EA

 

Publi

Risultati da 1 a 7 di 7

Discussione: Come liberare risorse indiore? indiore chiamato da EA

  1. #1
    Con
    http://docs.mql4.com/indiors/icustomSto chiamando un indiore.
    Diventa lento, ma non questo il problema.

    A EA c'è un segno di spunta e ogni volta che lo chiama e non risponde e non può terminare un test (non un'ottimizzazione)
    Mi chiedo come devo implementare qualcosa per liberare le risorse dall'indiore?

    Il mio indiore usa buffer ausiliari per filtrare i segnali e ha questo tipo:
    Codice inserito int OnInit () {//---- 4 buffer aggiuntivi sono utilizzati per il conteggio. IndiorBuffers (4 4);
    Sospetto che almeno quei 4 non siano cancellati.

    Qualsiasi aiuto?

  2. #2
    dalla mia esperienza personale una cosa, che è estremamente rallentando iCustom, è il passare dei parametri più parametri di input il tuo indiore ha, il più lento iCustom sarà quello di aggirare questo, sarebbe meglio chiamare iCustom senza alcun parametro e utilizzare le impostazioni predefinite dell'indiore

  3. #3
    Ciao, non ho trovato un meccanismo per liberare risorse da un indiore dopo aver incluso inclusochiamato in un EA (o un altro indiore) tramite iCustom (). Inoltre, non ho esperienza paragonabile all'esperienza di iwjw, ma interessante !!! Un certo numero di cose può aiutare a risolvere il tuo problema: 1. controlla in dettaglio cosa succede nei tuoi indiori e poi nel tuo EA, e controlla per quanto tempo le diverse parti dei tuoi calcoli prendono: Puoi usare t0 = GetTickCount () ... do loopcalculations .... t1 = GetTickCount () e quindi stampare con alcune informazioni aggiuntive per consentire l'analisi 2. hai davvero bisogno di calcolare il tuo indiore con ogni tick? La tua egia richiede la conoscenza di tutto ciò che il tuo indiore calcola su ogni tick, o potresti semplicemente accedere alle informazioni dal tuo indiore all'inizio di una nuova barra e quindi consentire l'inserimento commerciale all'inizio della nuova barra se le condizioni sono corrette. Se quest'ultimo è vero ... puoi semplicemente accedere al tuo indi in una costruzione come: if (NEWBAR) {.... access icustom (indi) .... fai la tua cosa basandoti sui calcoli} 3. se l'accesso all'indi è richiesto ogni tick, e se la soluzione di iwjw non aiuta anche perché è necessariovolere variare questi parametri, è possibile trasferire la logica e i calcoli dall'indiore al proprio EA. La principale differenza tra indiore e codice EA (per la tua domanda) è che in un EA non hai accesso ai buffer. A seconda della struttura del codice nell'indiore e del modo in cui le informazioni provenienti dai buffer delle barre precedentichiamate influenzano il valore dei buffer sulla barra corrente, è possibile considerare un'implementazione dell'indiore senza buffer. Se è possibile chiamare il proprio indiore su NEWBAR, è possibile memorizzare i valori precedenti delle variabili rilevanti in un array breve o anche singole variabili prima di calcolare i valori per la barra corrente. Il rovescio della medaglia è che devi fare una manipolazione dei dati da solo (e aver bisogno di capirlo - e considerare conseguenze inaspettate), ma il lato positivo è enorme, perché evita di chiamare iCustom (indiore). Spero che un po 'di quello aiuti. Ma: se il tuo terminale si blocca a causa della chiamata a iCustom (indiore) potrebbe esserci qualcos'altro di sbagliato nel tuo indiore. A meno che il tuo indiore non faccia una quantità ridicola di calcoli. Ho implementato una varietà di EA con l'accesso a indiori molto dispendiosi in termini di tempo. In tali casi, il terminale ha subito un rallentamento e in tali casi il terminale stampa le istruzioni nel file di registro lungo le linee di ???riscrittura dell'indiore poiché impiega troppo tempo per calcolare???. L'entrata nel dettaglio della carne dell'indiore tende a risolvere il problema. Cheerio, John

  4. #4
    Qualcuno mi ha dato un suggerimento non come la colpa dell'indi, ma l'EA, perché sto controllando i miei ordini esistenti e così via. Ho rimosso quasi tutto da EA e ho lasciato solo una chiamata. Codice inserito doppio ExtBufUpValue = iCustom (Symbol (), PERIOD_CURRENT, myIndi, My12ParForIndi, 0, 1); if (ExtBufUpValue gt; 0) {//Segnale lungo: tutto il codice rimosso da EA per il test} else {double ExtBufDownValue = iCustom (Symbol (), PERIOD_CURRENT, myIndi, My12ParForIndi 1, 1); if (ExtBufDownValue gt; 0) {//Segnale breve: tutto il codice rimosso da EA per il test}} Questa parte del codice è ESPONENTALMENTE RALLENTATA. Vorrei scambiare esattamente ciò che mostra l'Indi. Se prendo tutta la logica da Indi a EA, allora non sarà esponenzialmente lento, solo lento, come lo sto usando su MT4. BTW: che indi ha: codice inserito iLowest codice inserito iHighest e codice inserito iMAOnArray chiama il codice per fare le sue cose. Whem è in visualizzazione grafico normale, vedo che è un chiaro problema con lui e che si comporta molto lentamente a timeframechnages (carico e scarico) e clic su tempi diversi non aiuta: diventa più lento, ma può essere solo 6-7 volte .

  5. #5
    C'è il problema:
    https://www.forexmad.com/trading-sys...t-trading.htmlIl codice inserito iMAOnArray ha una perdita, MT4.0 Build 840, 12 Jun2015 - l'ultimo sul mio broker

  6. #6
    1 allegatoi
    Le metaquote hanno confermato il bug e hanno risposto 1. Devi aprire l'account demo sul server MetaQuotes-Demo ed effettuare il login. Account Apri un account fai clic su aggiungi nuovo broker ... entra demo.metaquotes.net fai clic su Scansione seleziona demo.metaquotes.net fai clic su Avanti . 2. Riavvia il terminale. 3. Attendere fino a quando il record di LiveUpdate finito verrà visualizzato nella scheda Diario. 4. Riavvia il terminale ancora una volta. 5. Controlla la build del terminale.

  7. #7
    Saluti ... non molto bello ... a tutti ... ma almeno è stato risolto? Cheerio, John

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Il sito di forexmad utilizza cookie
Il sito di forexmad utilizza cookie, alcuni dei quali già installati. Per avere maggiori informazioni sui nostri cookie ti preghiamo di cliccare qui. Ti preghiamo di cliccare sul bottone a destra per accettare i nostri cookie. Se continui a navigare sul sito di forexmad assumeremo che sei d'accordo ad utilizzarli.