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

 
È possibile avere diverse watch list (panoramiche di mercato) in Metatrader? Per esempio, uno per gli indici, un altro per le azioni
 
Vladimir Makhnin #:
È possibile avere diverse watch list (panoramiche di mercato) in Metatrader? Per esempio: indici in uno, azioni in un altro

Fatevi da soli. MQL5 rende questo facile.

 
Mihail Matkovskij #:

È tutta una questione di formula per calcolare l'angolo. Il codice mostra che solo una coordinata è usata per calcolarlo e qualche coefficiente, il cui scopo non è chiaro. Che cos'è? Per favore, spiegate quali dati state usando per calcolare l'angolo.

Per quanto posso vedere

double d

è un vettore. Ma è comunque solo una coordinata. Ma per calcolare un angolo, avete bisogno di due coordinate o di un vettore composto da due coordinate.

 

entrambi sul... la mia risposta è stata cancellata

 
Maxim Kuznetsov #:

sia sul... la mia risposta è stata cancellata.

C'è qualcosa di confuso - il tuo post di questo thread non è tra quelli cancellati.

 
Vladimir Karputov #:

C'è qualcosa di confuso - il tuo post di questo thread non è tra quelli cancellati.

Ho guardato anch'io. Non l'ho trovato.

 

OK, lo duplicherò... in risposta ahttps://www.mql5.com/ru/forum/160683/page1884#comment_27290699

CalcAngleTrend non ha niente a che fare con questo. Da qualche altra parte il coefAngle è contato in modo errato o ci sono altri calcoli storti

ps/ e forse il concetto di "pendenza" è generalmente mal interpretato. Non è esprimibile in gradi o radianti (senza uno spazio di tipo curvatura) e la funzione atan restituisce un valore fisicamente errato.

 
Mihail Matkovskij #:

È tutta una questione di formula per calcolare l'angolo. Il codice mostra che solo una coordinata è usata per calcolarlo e qualche coefficiente, il cui scopo non è chiaro. Che cos'è? Per favore, spiegate quali dati state usando per calcolare l'angolo.

Esatto, è un vettore
e si usa un solo valore perché il cambiamento delta diviso per 1 (Uno) sarà delta.
la variabile coefAngle è una costante int uguale a 2.
Ho controllato tutti i dati in ingresso alla funzione sono esattamente gli stessi.
 
Maxim Kuznetsov #:

OK, lo duplicherò... in risposta ahttps://www.mql5.com/ru/forum/160683/page1884#comment_27290699

CalcAngleTrend non ha niente a che fare con questo. Da qualche altra parte il coefAngle è contato in modo errato o ci sono altri calcoli storti

ps/ e forse il concetto di "pendenza" è generalmente mal interpretato. Non è espresso in gradi o in radianti (senza un superamento della curvatura dello spazio) e la funzione atan restituisce un valore fisicamente errato.

il coefficiente è una costante, non cambia
non ci sono calcoli tranne che per questa funzione, la funzione ha ottenuto il valore delta facendo la media dei valori dei vettori su diversi punti, approssimativamente parlando riduzione a un segmento di 2x punti, con un periodo di 1 unità

È chiaro che questa non è una realizzazione completa di vettori, è più per un risultato espressivo "più o meno" adeguato.
tecnicamente si può fare con una semplice applicazione di un coefficiente moltiplicatore e basta...

Comunque, non vedo il motivo per cui questa funzione non funzioni affatto(

L'unica possibilità è che ci sia qualcosa di sbagliato nella conversione dei tipi nell'espressione stessa nel processo di calcolo,

 
Владимир Казаков scrivere un Expert Advisor, e quando lo provo succede una cosa strana...

Ho una funzione

Qual è la situazione, eseguo un'istanza dell'EA su un grafico, ed eseguo la seconda in modalità debug sullo stesso grafico con MT4
I dati di input per la funzione sono gli stessi, ma i dati di output sono diversi!!!? Non capisco qualcosa, sembra...(

consigliare da che parte scavare per le informazioni!!!

PS: calcolato la differenza di esattamente 2,5 volte l'uscita

Decomposto le espressioni in azioni... ...e, oh, mio Dio, i risultati sono tutti uguali!?

double CalcAngleTrend(double d)
 {
Print("d: ", d, " coefAngle: ", (double) coefAngle);
  double
    a = (double) (d*pow(10,_Digits-2));
Print("(d*pow(10,_Digits-2)): ", a);
    double rad = (double) (180/M_PI);
Print("rad: ", rad);
    a = (double) (atan(a));
Print("(atan(a)): ", a);
    a = (double) (a*rad*(double) coefAngle);
Print("(a*rad*(double) coefAngle): ", a);
  return(NormalizeDouble(a, ANGLE_DIGITS));
 }

Così tutto lo stesso con la riduzione dei tipi non è qualcosa che funziona come vorrei

di esperti e capitori qualcuno può spiegare quale era il problema?!
per non ripetere l'errore)))

PS: ecco la stessa espressione in questo formato funziona allo stesso modo

  double a = (double) ((d*pow(10,_Digits-2))*(180/M_PI)*(double) coefAngle);

Il metodo di esclusione era un doppio infallibile per l'int.

Spero di aver capito bene.

Motivazione: