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

 
Alexey Viktorov:

Sì e l'ho cercato anche per risponderti.

Non ho potuto - stavo scrivendo dal mio telefono ed è più veloce scrivere solo la domanda :)

 
Alexey Viktorov:

Non è imposto dagli sviluppatori, ma da un moderatore. Per quanto riguarda i valori BB, quindi Artem ti ha detto che è più facile ottenere tutto direttamente... la sequenza è così...

  1. Dichiarato Maneggiare le variabili e gli array per ottenere i valori dell'indicatore. Se necessario, 3 al massimo. Se non abbiamo bisogno di una media, due array saranno sufficienti.
  2. In OnInit() abbiamo ricevuto il manico dell'indicatore...
  3. In OnTick() o in qualche altra funzione CopyBuffer() per ogni linea separatamente, tante quante sono necessarie.
  4. Da questi array si ottengono i valori delle linee dell'indicatore su quelle barre che sono interessanti...

QUESTO È QUANTO. Perché preoccuparsi di OOP¿¿¿¿¿? Purtroppo non posso rispondere direttamente alla tua domanda, perché non lo sto usando. Per me è più facile come ho descritto. Ci sono solo 4 azioni.

Per favore, ditemi perché non funziona in Inite? E come faccio a farlo funzionare?


#property strict

//--- индикаторные буферы
double         UpperBuffer[];
double         LowerBuffer[];
double         MiddleBuffer[];
//--- переменная для хранения хэндла индикатора iBands
int    bb_handle;

int OnInit(){//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////////OnInit()

bb_handle=iBands(NULL, 0, 20, 0, 2.0, PRICE_CLOSE);

Print("bb_handle ", bb_handle);

Print("OnInit()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

return(INIT_SUCCEEDED);
}
void OnTick(){




Print("OnTick()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

}
//-------------------------------------------------------1
double BB_up(int in_shift){
   CopyBuffer(bb_handle, 1, in_shift, 1, UpperBuffer);
   return UpperBuffer[0];
}
double BB_mi(int in_shift){
   CopyBuffer(bb_handle, 0, in_shift, 1, MiddleBuffer);
   return MiddleBuffer[0];
}
double BB_lo(int in_shift){
   CopyBuffer(bb_handle, 2, in_shift, 1, LowerBuffer);
   return LowerBuffer[0];
}
 
Andrey Sokolov:

Puoi dirmi perché non funziona nell'Inite? E come faccio a farlo funzionare?


iBands - Indicatori tecnici - MQL5 Reference - Riferimento al linguaggio di trading algoritmico/automatico per MetaTrader 5
Документация по MQL5: Технические индикаторы / iBands
Документация по MQL5: Технические индикаторы / iBands
  • www.mql5.com
iBands - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Andrey Sokolov:

quindi perché non funziona?

Vuoi parlare? - O vuoi lavorare su te stesso?

 
SanAlex:

Vuoi parlare? - O vuoi lavorare su te stesso?

Capisco, grazie. Qualcun altro può suggerire qualcosa?

 
Andrey Sokolov:

Puoi dirmi perché non funziona nell'Inite? E come faccio a farlo funzionare?


Perché l'indicatore non è ancora stato calcolato.

https://www.mql5.com/ru/docs/series/barscalculated


la sezione OnInit() non è il posto migliore per ottenere l'ambiente terminale, penso che funzioni logicamente e correttamente
 
Igor Makanu:

perché l'indicatore non è ancora calcolato

https://www.mql5.com/ru/docs/series/barscalculated

👍

 
Igor Makanu:


la sezione OnInit() non è il posto migliore per ottenere l'ambiente terminale, penso che funzioni logicamente e correttamente

Inite perché è necessario fare i calcoli sulla storia all'avvio, aggiunto un'attesa come nell'esempio, tutto va bene, grazie

 
Andrey Sokolov:

aggiunto un'attesa, come nell'esempio, tutto va bene.

Basta non essere sorpresi quando smette di funzionareo funzionaa intermittenza.