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

 
Igor Makanu :

questo funzionerà:

Molto probabilmente avete descritto la struttura a livello globale, e lì a livello globale volevate assegnare dei valori ai campi della struttura, questo non funzionerà

Grazie per la risposta.

Potete dirmi, quando scrivo #define FXT_HEADER.intSize 70, perché dà un errore?

 
//+------------------------------------------------------------------+
//|  Функция 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, int shift)
  {
   double res=0;
   double a[1];
  
   
   for(int i=period-1; i>=0; i--)
     {
   ArrayResize(a,period,0);
      a[i]= A_D(tf, i);    
     }
   for(int j=shift; j>=1; j--)
     {
      res=iMAOnArray(a,0, period,0,MODE_SMA,j);
     }
   return res;
  }

Ciao!

Cercando di creare una funzione di media mobile da iAD(). Non ha funzionato fino alla fine. La funzione nella versione precedente emette il valore della media mobile da iAD() sulla barra corrente. Non dipende dal valore della variabile shift.

Ma ho bisogno che la variabile shift sia l'indice della barra in cui la funzione restituisce il valore corrispondente della media mobile da iAD(). L'errore descritto è stato rilevato dal seguente codice inserito in OnTick():

   Comment("\n  #0= ", DoubleToString(A_D_moving(0, 20, 0)),
           "\n  ++++++++++++++",
           "\n  #1= ", DoubleToString(A_D_moving(0, 20, 1)),
           "\n  ----------------------",
           "\n  #2= ", DoubleToString(A_D_moving(0, 20, 2)));
   

Se qualcuno può, per favore, consigliare come risolvere l'errore.

 

Puoi aiutarmi con un compito primitivo?
- l'indicatore ha un controllo per il numero di conto... se il numero di conto non è quello specificato - l'indicatore dà un messaggio (l'indicatore è solo per amici, ecc.)
- dopo che l'indicatore è installato sul grafico - tutto funziona bene ... l'assegno passa attraverso... l'indicatore funziona

Ma dopo aver riavviato il terminale - l'indicatore fallisce il test ... Capisco che il codice dell'indicatore è caricato prima della connessione al broker? Devo reinstallarlo sul grafico... Questa non è un'opzione...
Puoi dirmi in quale posto inserire correttamente questo codice? Voglio essere in grado di metterlo sul grafico una volta, salvarlo come modello e tutto ...

 {

   if (AccountInfoInteger(ACCOUNT_LOGIN)  != 123456) {

      Alert("Если не работает: блаблабла");

      return(INIT_FAILED);

   }
 
Roman Agafonkin:

Sapete dove inserire questo codice? In modo da poterlo mettere una volta sul grafico, salvarlo come modello e basta...

prova a mettere while() prima di esso, aspettando il login entro certi limiti. non so quale funzioneAccountInfoInteger(ACCOUNT_LOGIN) dà fuori se non si è ancora loggati - staccalo e incollalo al posto dei punti interrogativi.

while (AccountInfoInteger(ACCOUNT_LOGIN)==????) Sleep (100);
 
Igor Zakharov:

Prova while() prima di questo, aspettando il login entro certi limiti. Non so quale funzioneAccountInfoInteger(ACCOUNT_LOGIN) dà fuori se non ancora loggato - staccala e incollala al posto dei punti interrogativi.

Non si può eseguire qualcosa di lungo in OnInit - il terminale può scaricare il codice

nell'indicatore non deve scivolare per funzionare

Non capisco perché il codice sorgente non funziona - o il vostro broker non ha buoni server o internet è troppo lento - di solito questo codice è condiviso dai vostri "amici" su tutti i forum )))


Penso che tu debba aggiungere una variabile di controllo statico nel corpo dell'indicatore, quando arriva un tick si collegherà al broker e all'autorizzazione, l'unica cosa che darei al primo tick quando carica il grafico - ma può essere gestito, a proposito prev_calculated ==0 è un ottimo motivo per controllare la "licenza".

 
Ho iniziato a insegnare a mia figlia a fare trading. Aveva questa domanda: "Capisco se, diciamo, compro una sterlina, ma non capisco come posso vendere una sterlina se non l'ho comprata e non ce l'ho". Ad essere sincero, non riuscivo a spiegarglielo chiaramente, ho detto qualcosa di vago, che era una transazione non in contanti, virtuale e non era necessario avere queste sterline in magazzino per vendere. In generale, non mi è piaciuta la mia risposta. E quale sarebbe stata la risposta giusta a questa domanda?
 
khorosh:
Ho iniziato a insegnare a mia figlia a commerciare. Aveva questa domanda: capisco se, diciamo, per comprare una libbra, ma non è chiaro come si può vendere una libbra, se non l'ho comprato e non ho. Per essere onesti, non ho potuto spiegare a lei chiaramente, ho detto qualcosa di vago, che era un non-cash, transazione virtuale e hanno queste libbre in magazzino per vendere, non necessariamente. In generale, non mi è piaciuta la mia risposta. E quale sarebbe stata la risposta giusta a questa domanda?

Non c'è bisogno di capire le cose per ottenere un profitto. Meno sai, piùfacile è giocare. Credo di sì.

È bello che sia in grado di iniziare a farlo così presto) Nel processo troverà le risposte alle domande (che si porrà), se ce ne sono...
 
onedollarusd:

Non c'è bisogno di capire le cose per ottenere un profitto. Meno sai, più facile è giocare. Imho.

Se le dico che quando il prezzo è sceso di una distanza decente e si è girato, preme il pulsante di acquisto, e viceversa. Pensi che sarà sufficiente? )

 
Igor Makanu:

non si può eseguire qualcosa di lungo in OnInit - il terminale potrebbe scaricare il codice

nell'indicatore non deve funzionare

Non so perché il codice sorgente non funziona - o il vostro broker non ha buoni server o internet è troppo lento - di solito questo codice è condiviso dai vostri "amici" su tutti i forum )))


Penso di dover aggiungere una variabile di controllo statico nel corpo dell'indicatore, quando arriva un tick, si collegherà al broker e all'autorizzazione; l'unica cosa che vedo è che il primo tick viene caricato sul grafico da solo - ma può essere gestito, a proposito prev_calculated ==0 è una buona occasione per controllare la "licenza".

Ho risolto lo stesso problema e ho inserito il seguente codice all'inizio della funzione OnCalculate:

 if(account_number>0)
 {
   int akk;
   akk=AccountInfoInteger(ACCOUNT_LOGIN);
   if(akk==0)return(0);
   if(akk!=account_number)
   {
     Alert("Неверный номер счёта.");
     int window=ChartWindowFind();
     ChartIndicatorDelete(0,window,MeName);
     return(0);
   }
 }              

account_number è definito con #define (è possibile anche una variabile di visibilità globale), MeName è lo stesso, ma in generale è il nome breve dell'indicatore.

 
Yurij Kozhevnikov:

Ho risolto lo stesso problema inserendo questo codice all'inizio della funzione OnCalculate:

account_number è definito con #define (si può usare la variabile di visibilità globale), MeName - in modo simile, ma in generale è un nome di indicatore breve.

Sì, hai un buon esempio, è di questo che sto scrivendo

ma è necessario elaborare il primo avvio dell'indicatore - il primo avvio può o non può essere una connessione, e se la licenza non è passata, si dovrebbe scaricare l'indicatore in una volta, come un contatore e 2-3 volte senza licenza, quindi scaricare l'indicatore

Motivazione: