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

 
Forse mi sono spiegato male, devi solo segnare la prima candela su m1 m5 m15 m30 h1 h4, che inizia alle 16:00 ora di Mosca, e l'indicatore segna (per esempio su m15 quattro candele).
 
Yulia:
Forse mi sono spiegato male, devi solo segnare la prima candela su m1 m5 m15 m30 h1 h4, che inizia alle 16:00 ora di Mosca, e l'indicatore segna (bene per esempio su m15 quattro candele).

Aiutare e fare sono cose leggermente diverse. Non siete d'accordo?
 
Vinin:

Non devi impostare la dimensione dell'array?


Sì, ho davvero dimenticato, mi sto impantanando. Ora l'array è pieno, ma le linee non sono ancora visualizzate. Gli array sono collegati ai buffer

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

void init()
        {
        SetIndexBuffer(0, HighMass);
        SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1);
        SetIndexBuffer(1, LowMass);
        SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);
        }
 
sss2019:


Sì, infatti, ho dimenticato, sono già esausto. Ora l'array è pieno, ma le linee ancora non appaiono. Gli array sono collegati ai buffer


Avresti dovuto darmi tutto il codice. Non volete indovinare ciò che vi è chiaro.
 
Vinin:

Aiutare e fare sono cose leggermente diverse. Non siete d'accordo?

Sono completamente d'accordo con te, ho chiesto aiuto, ho frugato per quindici giorni e nessun risultato, quindi anche la tua opzione non mi soddisfa, beh grazie mille, lo scoprirò da solo.
 

Buon pomeriggio... Domanda sulla funzione ArrayGetAsSeries. Per capire come funziona la funzione ArrayGetAsSeries ha scritto il seguente script:

//+------------------------------------------------------------------------------------------+
//|                                                                ArrayGetAsSeries_плюс.mq4 |
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
//------------------------------------ НАЧАЛО START -------------------------------------- 1 -
int start()                                           //функция start
  {                                                   //начало start
   double Timestart=GetTickCount();                   //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   double array1[];                                   //объявляем массив-приемник (массив, куда будут скопированы данные)
   int element=ArrayCopy(array1,Open,0,0,WHOLE_ARRAY);//копируем данные по ценам открытия в пользовательский массив (начиная с нулевого бара)
   int size=ArraySize(array1);                        //устанавливаем количество элементов массива array1
   for(int i=0;i<=4;i++)                              //цикл по просмотру скопированных значений (первых пяти)
       {                                              //начало for
        Alert("Значение цены открытия бара № ",i," равно ",array1[i],
              "\nВремя цены открытия бара № ",i,": ",TimeToStr(iTime(NULL,0,i),TIME_DATE|TIME_MINUTES));//cообщение на экран
       }                                                                 //конец for
//----------------------------------------------------------------------------------------- 2 -
   Comment("\nФункция ArrayCopy(array1[],Open,0,0,WHOLE_ARRAY) вернула: ",element,
           "\nФункция ArraySize(array1) вернула: ",size,
           "\nФункция ArrayGetAsSeries(array1) вернула: ",ArrayGetAsSeries(array1),
           "\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000),
           " секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать 
           //сообщения на экран
//----------------------------------------------------------------------------------------- 3 -
   return(0);                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 4 -

Lo script ha copiato un array-tempio di prezzi di apertura delle barre in un array personalizzato. Ovviamente: questo array personalizzato è organizzato come un array di serie temporali perché gli elementi dell'array sono indicizzati dall'ultimo al primo (questo è dimostrato nello screenshot dove la funzione Alert ha emesso il tempo di apertura e il prezzo della quarta barra. Questa barra è segnata con una linea verticale sul grafico; possiamo anche vedere il prezzo aperto di questa barra e nella finestra delle proprietà possiamo vedere che il tempo della barra è lo stesso di quello visualizzato dalla funzioneAlert). Ma la funzione ArrayGetAsSeries restituisce 0 che significa: l'array utente NON è organizzato come un array di serie temporali (angolo superiore sinistro dello screenshot).

Domanda: perché la funzione ArrayGetAsSeries ha restituito 0, anche se l'array utente è organizzato come un array di serie temporali?

P.S. Per non ingombrare il forum, grazie in anticipo per la risposta


 
7777877:
D: Perché la funzione ArrayGetAsSeries ha restituito 0, anche se l'array utente è organizzato come un array di serie temporali?
Solo perché avete copiato i dati in un certo ordine non significa che l'array sia organizzato come una serie temporale
 
ilunga:
Solo perché avete copiato i dati in un certo ordine non significa che l'array sia organizzato come una serie temporale

Ma il punto è che i valori dei prezzi di apertura, che sono riprodotti nel ciclo for da una barra già copiata, sono indicizzati dall'ultimo al primo. Ma, per quanto ho capito, questo significa (cioè l'indicizzazione dall'ultimo al primo) che l'array è organizzato come una serie temporale?

P.S. Grazie per la risposta alla mia precedente domanda sulle funzioni FileIsEnding e FileIsLineEnding

 
7777877:

Ma il punto è che i valori dei prezzi di apertura, che sono riprodotti nel ciclo for da una barra già copiata, sono indicizzati dall'ultimo al primo. Ma, per quanto ho capito, questo significa (cioè l'indicizzazione dall'ultimo al primo) che l'array è organizzato come una serie temporale?

P.S. Grazie per la risposta alla mia precedente domanda sulle funzioni FileIsEnding e FileIsLineEnding

No, significa solo che i dati corrispondono a un pezzo di storia.

Avresti potuto digitarlo manualmente, per esempio. O scritto da un file di testo. O l'ha ricevuto nel calcolo.


Dopo tutto, anche inserendo alcuni dati condizionali "1,25 1,16 1,73 1,35" si può arrivare alla storia di qualche valuta molti anni fa. Ma questo non significa che abbiamo impostato una serie temporale di array

 

Mi scuso per aver duplicato una domanda, ma non posso fare i seguenti esempi finché non risolvo il problema.

Per favore, aiutatemi a capire.

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()
  }

L'ho codificato per strumenti a 4 cifre.

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

Si prega di consigliare come correggere il codice per 5 cifre e perché l'errore 4109 (trading non consentito) viene visualizzato quando lo script viene eseguito?


Motivazione: