[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 446

 

Salve. C'è un problema con la scrittura di un idnikator, fondamentalmente ci sono due array per i buffer,

Massa1

Massa2

E i dati per ogni elemento della matrice sono contati in piccoli numeri, cioè i valori sono 15, 27, 41, 14, ecc.

Se imposto il tipo int degli array e se scorro ogni elemento posso vedere che i valori dell'array corrispondono ai valori calcolati, ma se il tipo è Int allora le linee dell'indicatore non vengono visualizzate nella finestra.

Se imposto il tipo di array doppio, l'array memorizza più valori che non so da dove vengano, per esempio 21456545454, 43654534532, 24325235232 ecc. Che non corrispondono affatto ai valori calcolati.

Quale potrebbe essere il problema?

 

Ciao a tutti!

Aiutami.

Ho scritto un semplice script per aprire un ordine (dal tutorial MQL4).

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

In questo esempio il codice è dato per gli strumenti con 4 cifre.

Ho un conto con una società che ha 5 cifre dopo il punto.

Potete per favore modificare il codice per 5 cifre e perché l'errore 4109 (trading non consentito) viene visualizzato quando lo script viene eseguito.

 
sss2019: Se imposto il tipo di array int, e se scorro ogni elemento, posso vedere che i valori dell'array corrispondono ai valori calcolati, ma se il tipo è Int, le linee dell'indicatore non vengono visualizzate nella finestra.

Se imposto l'array di tipo doppio, l'array memorizza più valori che non so da dove vengano, per esempio 21456545454, 43654534532, 24325235232, ecc. Che non corrispondono affatto ai valori calcolati.

Quale può essere il problema?

Bisogna fare appello ai telepati. Ma è abbastanza possibile che il problema sia un'incongruenza quando si dividono i numeri reali per i numeri interi.
 

Ciao, puoi per favore aiutarmi a gestire l'indicatore. L'idea è che con l'apertura della sessione americana alle 16:00 del timeframe di Mosca un segno viene posto sopra la candela, su qualsiasi timeframe. Ho problemi con le funzioni datetime, ho letto il tutorial più di una volta, guardato altri indicatori, ma ancora non capisco.

File:
exfbtix.mq4  2 kb
 
Yulia:

Ciao, puoi per favore aiutarmi a gestire l'indicatore. L'idea è che con l'apertura della sessione americana alle 16:00 del timeframe di Mosca un segno viene posto sopra la candela, su qualsiasi timeframe. Ho problemi con le funzioni datetime, ho letto il tutorial più di una volta, guardato altri indicatori, ma ancora non capisco.


#property indicator_chart_window // указываем, что идикатор будет рисоваться в окне, где рисуется график валютной пары
#property indicator_buffers 1 // сколько линий будет рисовать наш индикатор
#property indicator_color1 Lime // какого цвета будет первая линия 
//---- buffers
double Buffer[];

extern int hour =9;

//+------------------------------------------------------------------+
int init()
{
  SetIndexStyle(0,DRAW_ARROW);
  SetIndexArrow(0,108);
  SetIndexBuffer(0,Buffer);  
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{

int counted_bars=IndicatorCounted(); // сколько баров уже просчитано для начего индикатора
if(counted_bars<0) return(-1);// проверяем ошибки


int i=0;
    while(i<Bars)
         {
         if(TimeHour(Time[i])==hour)
            {        
            Buffer[i]=High[i]+150*Point;
            }
         
         i++;
         }

return(0);
}
//+------------------------------------------------------------------+

 
 
Grazie mille, ma un po 'sbagliato, ho solo bisogno di un marchio sulla prima candela su M1,M5 ecc, tranne naturalmente il quotidiano e sopra.
 
Reshetov:
Dovrete consultare un telepate. Ma è abbastanza possibile che il problema sia un'incongruenza nel dividere i numeri reali per i numeri interi.


Ecco il codice

int lowsum, highsum;
int Mass1[];
int Mass2[];

                        while(start1 < end1 + 1)
                                {
                                lowsum = lowsum + iVolume(Symbol(), PERIOD_M1, start1);
                                start1++;
                                }
                        while(start2 < end2 + 1)
                                {
                                highsum = highsum + iVolume(Symbol(), PERIOD_M1, start2);
                                start2++;
                                }
                        Mass[i] = lowsum;
                        Mass[i] = highsum;
                        Alert(Mass[i], " ", highsum);

Di conseguenza, l'allarme emette questi messaggi:

Puoi vedere che la variabile ha un valore, ma non puoi assegnare un valore variabile a un array, non riesco a capire qual è il problema

 
Yulia:
Grazie mille, ma un po 'sbagliato, ho solo bisogno di un marchio sulla prima candela su M1,M5 ecc, tranne ovviamente il quotidiano e sopra.

Come l'hai avuto, così rimane
 
sss2019:

Puoi vedere che la variabile ha un valore, ma non puoi assegnare un valore variabile a un array, non riesco a capire qual è il problema

Qual è la dimensione dell'array?
 
sss2019:


Ecco il codice

Di conseguenza, l'allarme emette questi messaggi:

Puoi vedere che la variabile ha un valore, ma non puoi assegnare un valore variabile a un array, non riesco a capire qual è il problema


Non devi impostare la dimensione dell'array?
Motivazione: