Digamos que tengo 2 indicadores, el primero tiene 4 buffers, el segundo tiene 2. Los pongo en un gráfico y abro la ventana de datos (CTRL+D). La lista contiene 6 buffers de 0 a 5. ¿Cómo puedo leer el valor del buffer 5, por ejemplo, de esta lista en MQL? No es conveniente utilizar iCustom por el indicador requerido. Es más conveniente utilizar esta lista. Sé que lo hacen, pero ¿cómo?
Estudiando los ejemplos de la ayuda, la creación de objetos se hace siempre con una comprobación:
//--- сбросим значение ошибки ResetLastError();
//--- создадим кнопку if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
{
Print(__FUNCTION__,
": не удалось создать кнопку! Код ошибки = ",GetLastError());
return(false);
}
¿Por qué se hace esto para los objetos? ¿Cuál es la probabilidad de que un objeto no se cree?
En general, me interesa saber dónde puedo leer sobre reglas de buenas maneras en la programación de mql, para saber en qué arbustos se encuentra el rastrillo, aconsejar.
Estudiando los ejemplos de la ayuda, la creación de objetos se hace siempre con una comprobación:
¿Por qué se hace esto para los objetos? ¿Cuál es la probabilidad de que un objeto no se cree?
En general, me interesa saber dónde puedo leer sobre las buenas maneras en la programación de mql, para saber dónde están las trampas, aconséjame.
Por ejemplo, un objeto con este nombre ya existe.
Las reglas de la buena forma son las mismas para cualquier idioma. Recibir datos - comprobar lo que tienes, crear un objeto, comprobar lo que has creado, y si lo has creado... Y así sucesivamente.
Cómo llenar un array de 4 dimensiones con valores del formato int Mas[1][2][2][2], cómo asignar un valor a cada celda del array, tenemos en mente tal notación por ejemplo un array de 2 dimensiones int Arr[1][2]={3,4};, ¿cómo llenar 4 dimensiones?
Artyom Trishkin: Por ejemplo, un objeto con este nombre ya existe.
Y las reglas de etiqueta son las mismas para cualquier idioma. Recibe datos - comprueba lo que ha recibido, crea un objeto, comprueba lo que ha creado y si lo ha creado... Y así sucesivamente.
Cuando creo un botón dentro de una función, me sale una palabrota
return(false);
'return' - La función 'void' devuelve un valor 112 16
Seric29: ¿Cómo llenar un array de 4 dimensiones con valores del formato int Mas[1][2][2][2], cómo asignar un valor a cada celda del array, en este caso, hay un array de 2 dimensiones int Arr[1][2]={3,4}; cómo llenar 4 dimensiones?
Las matrices multidimensionales suelen rellenarse en los bucles con los valores correctos - eso hace más difícil cometer un error, para una matriz de cuatro dimensiones debería ser algo así, pero podría estar equivocado:
Camaradas - miren el indicador para ver si es correcto. Hay una fórmula Valor = (Open[0]-SMA(P,n))/SMA(P,n))*100%.
Lo pongo en el gráfico - calcula y traza todo. Comienzo a comprobar en alguna barra de la calculadora - su valor no coincide con el dibujado...
Aquí hay un ejemplo - Calculo 1,0178 para la Apertura y 1,0182 para la MA(13) usando la fórmula ((1,0178-1,0182)/1,0182) * 100% - el resultado en la calculadora es -0,0393. Y el gráfico de MT4 muestra -0,0929. ¿Es un error en el código o la calculadora no calcula correctamente algunos valores allí? Por favor, ayuda. Adjunto el indicador.
#property indicator_separate_window#property indicator_buffers1// Количество буферов#property indicator_color1 Blue // Цвет линии 0 буфера#property indicator_level11#property indicator_level2 -1//--------------------------------------------------------------- 2 --//---- indicator parameters externint History =5000; // Колич.баров в расчётной историиexternint Period_SMA =13;
double
Line_0[]; // Инд. массив ravi //--------------------------------------------------------------- 4 --int init() // Специальная функция init()
{
SetIndexBuffer(0,Line_0); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
IndicatorShortName("KRI");
//--------------------------------------------------------------- 5 --return(0); // Выход из спец. функции init()
}
//--------------------------------------------------------------- 8 --int start() // Специальная функция start()
{
//--------------------------------------------------------------- 9 --double
SMA; // МА для расчета значений индикатора // формyла (PRICE-SMA/SMA)*100); int
i, // Индекс бара
n, // Формальн. параметр(индекс бара)
Counted_bars; // Количество просчитанных баров //-------------------------------------------------------------- 10 --
Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars-1; // Индекс первого непосчитанногоif (i>History-1) // Если много баров то ..
i=History-1; // ..рассчитывать заданное колич.//-------------------------------------------------------------- 11 --while(i>=0) // Цикл по непосчитанным барам
{
//-------------------------------------------------------- 12 --
SMA=iMA(NULL,0,Period_SMA,0,MODE_SMA,PRICE_CLOSE,i); // Значение SМА
Line_0[i] =0;
if (SMA>0) Line_0[i] = ((Open[0]-SMA)/SMA)*100; // Индик. массив линии KPI//-------------------------------------------------------- 13 --
i--; // Расчёт индекса следующего бара//-------------------------------------------------------- 14 --
}
return(0); // Выход из спец. ф-ии start()
}
//-------------------------------------------------------------- 15 --
Artyom Trishkin: Si estás haciendo la devolución de un valor de tipo bool desde la función, entonces el tipo de la función no debería ser void, pero adivina cuál es.
¿Y si quieres devolver datos de una función?
¿Es posible hacer un bucle a través de las posiciones sólo para un símbolo determinado sin utilizar PositionsTotal cada vez?
De momento, lo único que se me ha ocurrido es escribir los tickets en un array y trabajar con ellos por separado, pero quizá haya una opción más sencilla.
¿Es posible hacer un bucle a través de las posiciones sólo para un símbolo determinado sin utilizar PositionsTotal cada vez?
De momento, lo único que se me ha ocurrido es escribir las entradas en un array y trabajar con ellas por separado, pero quizá haya una opción más sencilla.
No está claro lo que se necesita al final - algunos pensamientos inconexos.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Hola.
Digamos que tengo 2 indicadores, el primero tiene 4 buffers, el segundo tiene 2. Los pongo en un gráfico y abro la ventana de datos (CTRL+D). La lista contiene 6 buffers de 0 a 5. ¿Cómo puedo leer el valor del buffer 5, por ejemplo, de esta lista en MQL? No es conveniente utilizar iCustom por el indicador requerido. Es más conveniente utilizar esta lista. Sé que lo hacen, pero ¿cómo?
Estudiando los ejemplos de la ayuda, la creación de objetos se hace siempre con una comprobación:
¿Por qué se hace esto para los objetos? ¿Cuál es la probabilidad de que un objeto no se cree?
En general, me interesa saber dónde puedo leer sobre reglas de buenas maneras en la programación de mql, para saber en qué arbustos se encuentra el rastrillo, aconsejar.
Estudiando los ejemplos de la ayuda, la creación de objetos se hace siempre con una comprobación:
¿Por qué se hace esto para los objetos? ¿Cuál es la probabilidad de que un objeto no se cree?
En general, me interesa saber dónde puedo leer sobre las buenas maneras en la programación de mql, para saber dónde están las trampas, aconséjame.
Por ejemplo, un objeto con este nombre ya existe.
Cuando creo un botón dentro de una función, me sale una palabrota
'return' - La función 'void' devuelve un valor 112 16
¿Qué debo hacer en este caso?
¿Cómo llenar un array de 4 dimensiones con valores del formato int Mas[1][2][2][2], cómo asignar un valor a cada celda del array, en este caso, hay un array de 2 dimensiones int Arr[1][2]={3,4}; cómo llenar 4 dimensiones?
Las matrices multidimensionales suelen rellenarse en los bucles con los valores correctos - eso hace más difícil cometer un error, para una matriz de cuatro dimensiones debería ser algo así, pero podría estar equivocado:
Cuando creo un botón dentro de una función, se me jura
La función 'return' - 'void' devuelve un valor 112 16
¿Qué debo hacer en este caso?
empezar a leer la ayudaen https://www.mql5.com/ru/docs/basis/function
Si necesitas más ayuda, deberías leer cualquier libro de C++. El primer capítulo debería explicar las funciones
Cuando creo un botón dentro de una función, me sale una palabrota
La función 'return' - 'void' devuelve un valor breakeven_fish.mq5 112 16
¿Qué hacer en este caso?
Camaradas - miren el indicador para ver si es correcto. Hay una fórmula Valor = (Open[0]-SMA(P,n))/SMA(P,n))*100%.
Lo pongo en el gráfico - calcula y traza todo. Comienzo a comprobar en alguna barra de la calculadora - su valor no coincide con el dibujado...
Aquí hay un ejemplo - Calculo 1,0178 para la Apertura y 1,0182 para la MA(13) usando la fórmula ((1,0178-1,0182)/1,0182) * 100% - el resultado en la calculadora es -0,0393. Y el gráfico de MT4 muestra -0,0929. ¿Es un error en el código o la calculadora no calcula correctamente algunos valores allí? Por favor, ayuda. Adjunto el indicador.
Si estás haciendo la devolución de un valor de tipo bool desde la función, entonces el tipo de la función no debería ser void, pero adivina cuál es.
¿Y si quieres devolver datos de una función?
¿Es posible hacer un bucle a través de las posiciones sólo para un símbolo determinado sin utilizar PositionsTotal cada vez?
De momento, lo único que se me ha ocurrido es escribir los tickets en un array y trabajar con ellos por separado, pero quizá haya una opción más sencilla.
¿Y si quieres devolver datos de una función?
¿Es posible hacer un bucle a través de las posiciones sólo para un símbolo determinado sin utilizar PositionsTotal cada vez?
De momento, lo único que se me ha ocurrido es escribir las entradas en un array y trabajar con ellas por separado, pero quizá haya una opción más sencilla.
No está claro lo que se necesita al final - algunos pensamientos inconexos.