[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 447

 
Yulia:
Quizás me he explicado mal, sólo hay que marcar la primera vela en m1 m5 m15 m30 h1 h4, que empieza a las 16:00 hora de Moscú, y el indicador marca (bien por ejemplo en m15 cuatro velas).

Ayudar y hacer son cosas ligeramente diferentes. ¿No estás de acuerdo?
 
Vinin:

¿No hay que fijar el tamaño del array?


Sí, de verdad que se me olvidó, me estoy empantanando. Ahora la matriz está llena, pero las líneas siguen sin aparecer. Las matrices están vinculadas a los buffers

#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í, efectivamente, se me olvidaba, ya me estoy empantanando. Ahora la matriz está llena, pero las líneas siguen sin aparecer. Las matrices están vinculadas a los buffers


Deberías haberme dado el código completo. No quieras adivinar lo que está claro para ti.
 
Vinin:

Ayudar y hacer son cosas ligeramente diferentes. ¿No estás de acuerdo?

Estoy totalmente de acuerdo contigo, he pedido ayuda, he estado hurgando durante quince días y sin resultado, así que tu opción tampoco me vale, bueno muchas gracias, ya lo resolveré por mi cuenta.
 

Buenas tardes... Pregunta sobre la función ArrayGetAsSeries. Para entender cómo funciona la función ArrayGetAsSeries escribió el siguiente 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 -

El script ha copiado un array de series temporales de precios de apertura de barras en un array personalizado. Obviamente: este array personalizado está organizado como un array de series temporales porque los elementos del array están indexados del último al primero (esto se demuestra en la captura de pantalla donde la función de Alerta ha emitido la hora de apertura y el precio de la cuarta barra. Esta barra está marcada con una línea vertical en el gráfico; también podemos ver el precio de apertura de esta barra y en la ventana de propiedades podemos ver que el tiempo de la barra es el mismo que el mostrado por la función deAlerta). Pero la función ArrayGetAsSeries devuelve 0, lo que significa que el array del usuario NO está organizado como un array de series temporales (esquina superior izquierda de la captura de pantalla).

Pregunta: ¿por qué la función ArrayGetAsSeries devuelve 0, aunque el array del usuario esté organizado como un array de series temporales?

P.D. Para no saturar el foro, gracias de antemano por la respuesta


 
7777877:
P: ¿Por qué la función ArrayGetAsSeries devuelve 0, a pesar de que el array del usuario está organizado como un array de series temporales?
El hecho de que hayas copiado los datos en algún orden no significa que la matriz esté organizada como una serie temporal
 
ilunga:
El hecho de que hayas copiado los datos en algún orden no significa que la matriz esté organizada como una serie temporal

Pero la cuestión es que los valores del precio de apertura, que se reproducen en el bucle for a partir de una barra ya copiada, se indexan del último al primero. Pero, por lo que entiendo, esto significa (es decir, indexar del último al primero) que la matriz se organiza como una serie temporal?

P.D. Gracias por la respuesta a mi pregunta anterior sobre las funciones FileIsEnding y FileIsLineEnding

 
7777877:

Pero la cuestión es que los valores del precio de apertura, que se reproducen en el bucle for a partir de una barra ya copiada, se indexan del último al primero. Pero, por lo que entiendo, esto significa (es decir, indexar del último al primero) que la matriz se organiza como una serie temporal?

P.D. Gracias por la respuesta a mi pregunta anterior sobre las funciones FileIsEnding y FileIsLineEnding

No, sólo significa que los datos coinciden con una parte de la historia.

Podrías haberla introducido manualmente, por ejemplo. O bien se escribe desde un archivo de texto. O lo recibió en el cálculo.


Al fin y al cabo, incluso habiendo introducido algunos datos condicionales "1,25 1,16 1,73 1,35" podemos llegar al historial de alguna moneda de hace muchos años. Pero eso no significa que hayamos establecido una serie temporal de arreglos

 

Pido disculpas por duplicar una pregunta, pero no puedo hacer los siguientes ejemplos hasta que no solucione esto.

Por favor, ayúdenme a resolverlo.

Escribí un sencillo script para abrir una orden (del tutorial de MQL4).

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

Lo codifiqué para instrumentos de 4 dígitos.

Tengo una cuenta en una empresa que tiene 5 dígitos después del punto.

Por favor, indíquenos cómo corregir el código de 5 dígitos y por qué aparece el error 4109 (comercio no permitido) cuando se ejecuta el script.


 
Pacman:

Pido disculpas por duplicar una pregunta, pero no puedo hacer los siguientes ejemplos hasta que no solucione esto.

Por favor, ayúdenme a resolverlo.

Escribí un simple script para abrir una orden (desde el tutorial de MQL4).

Lo codifiqué para instrumentos de 4 dígitos.

Tengo una cuenta en una empresa que tiene 5 dígitos después del punto.

¿Puede modificar el código para 5 dígitos y por qué aparece el error 4109 (comercio no permitido) al ejecutar el script?

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

Excepto que no tiene que funcionar en absoluto. Debe comprobar la validez de los tamaños de las paradas y las tomas por parte de su empresa de corretaje

ERR_TRADE_NOT_ALLOWED 4109 El comercio no está permitido. Debe activar la opción "Permitir que el EA opere" en las propiedades del EA.
Razón de la queja: