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

 
Владимир Казаков #:

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

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

di esperti e capitori qualcuno può spiegare quale era il problema?!
Bene, non ripetere gli errori)))

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

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

Spero di aver capito bene.

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

Saluti, potreste consigliarmi un robot, mt5.

Ho bisogno che gli indici nell'array coincidano con il valore dello spostamento relativo alla barra corrente, come nei buffer degli indicatori.

Come fare?

 
Andrey Sokolov #:

Saluti, potreste consigliarmi un robot, mt5.

Ho bisogno che gli indici nell'array coincidano con il valore dello spostamento relativo alla barra corrente, come nei buffer degli indicatori.

Come fare?

ArraySetAsSeries

 
Vitaly Muzichenko #:

ArraySetAsSeries

Grazie, questo non funziona solo negli indicatori ma anche nei robot?

 
Andrey Sokolov #:

Grazie, questo non funziona solo negli indicatori, ma anche nei robot?

Non conosco il tuo problema, ma capovolge l'array

 
Vitaly Muzichenko #:

Non conosco il tuo problema, ma capovolge l'array

Abbiamobisogno che gli indici nell'array coincidano con il valore di spostamento relativo alla barra corrente, come neibuffer degli indicatori.

Hai bisogno che i valori dell'indice corrispondano alle candele dopo l'apparizione di nuove candele, come negli indicatori.

 
Andrey Sokolov #:

Abbiamobisogno che gli indici nell'array coincidano con il valore di spostamento relativo alla barra corrente, come neibuffer degli indicatori.

È necessario ottenere i valori dell'indice per abbinare i candelieri dopo l'apparizione di nuovi candelieri, come negli indicatori.

Provalo, dovrebbe funzionare

 
Vitaly Muzichenko #:

Provate, dovrebbe funzionare.

Non funziona così. Scrivo 300 nell'indice 0, quando appare una nuova candela dovrebbe essere 300 nell'indice 1, ma no.

#property strict

int bars;
double arr[];

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   bool series = ArraySetAsSeries(arr, true);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[0] = 300;

   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        int res = ArrayResize(arr, bars);
   }
   
   Comment(TimeCurrent(), "  ", bars, "  ", arr[0], "  ", arr[1], "  ", arr[2], "  " , arr[3]);
}//+------------------------------------------------------------------+

Posso scrivere io stesso "spostamento" dell'intera matrice nel ciclo a nuove candele, ma il linguaggio per lavorare con i grafici, probabilmente, c'è qualcosa di standard.

 
Andrey Sokolov #:

non funziona così. Scrivo 300 nell'indice 0, quando appare una nuova candela dovrebbe essere 300 nell'indice 1, ma non è così.

Posso scrivermi lo "spostamento" dell'intera matrice nel ciclo a nuove candele, ma nel linguaggio per lavorare con i grafici, probabilmente, c'è qualcosa di standard.

Si gira, ma non ha senso.

#property strict

int bars;
double arr[]={};

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[res-1] = 300;
   ArraySetAsSeries(arr, true);
   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
static int res;
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        res = ArrayResize(arr, bars);
   }
   
   Print(res, "  ", arr[0], "  ", arr[1], "  ", arr[2]);
}//+------------------------------------------------------------------+

Deve essere riempito in un altro modo

 
Andrey Sokolov #:

non funziona così. Scrivo 300 nell'indice 0, quando appare una nuova candela dovrebbe essere 300 nell'indice 1, ma non è così.

Posso scrivermi lo "spostamento" dell'intera matrice nel ciclo a nuove candele, ma nel linguaggio per lavorare con i grafici, probabilmente, c'è qualcosa di standard.

Sì, ce n'è uno standard... Aggiungi all'array e rimuovi dall'array. L'array dovrebbe essere dinamico. Cercate nella documentazione per maggiori dettagli, non ricordo come sono scritti...

Motivazione: