Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1467

 

¿Puedes mantenerlo simple?))

¿Dónde puedo conseguir esto?

El indicador tiene un código cerrado, ¿cómo puedo saber el nombre de esta enumeración?

¿Y qué tipo de variable necesito?

Sólo sé cómo fusionar indicadores a través de iCustom, pero no soy capaz de ir más allá).

Si no es muy difícil, ¿podría hacerlo más sencillo? ))))

ENUM_BASE_CORNER probado, sigue sin aparecer.
 
Сергей:

¿Puedes mantenerlo simple?))

¿Dónde puedo conseguir esto?

El indicador tiene un código cerrado, ¿cómo puedo saber el nombre de esta enumeración?

¿Y qué tipo de variable necesito?

Sólo sé cómo fusionar indicadores a través de iCustom, pero no soy capaz de ir más allá).

Si no es muy difícil, ¿podría hacerlo más sencillo? ))))

ENUM_BASE_CORNER probado, sigue sin aparecer.

He aquí un ejemplo.

La primera opción es el uso de la enumeración estándar ENUM_BASE_CORNER.

La segunda variante es utilizar el enum personalizado

A continuación, en iCustom, donde debe ser colocado base o mi_base variable, dependiendo de la variante que usted elija.

Archivos adjuntos:
100.mq4  5 kb
 
Сергей:

Hola.

Podrías darme una pista, estoy en un aprieto.

Prescribo indicador a través de iCustom y se enfrentó a un problema - indicador tiene un menú de texto con una opción, se abre y hay varios elementos prescritos, bueno, creo que es claro)

¿Cómo puedo añadirlo en el menú?

extern int HIT = 0; no funciona, deja de mostrar, no deja de mostrar ningún parámetro.

Tal vez a través de ENUM , allí qué elegir, o tal vez algo más?

Gracias de antemano.

¿Ha introducido todos los parámetros en iCustom(,,,,,,,) en la secuencia correcta?

 

Buenos días a todos. Estoy tratando de recoger datos al abrir órdenes. Quiero registrar el valor del indicador adh en las velas 1,2,3 en un archivo al abrir una orden.

Hago lo siguiente. Abrí el directorio de datos, fui a la carpeta del probador, fui a la carpeta de archivos y creé allí un archivo llamado "ZNA4_ADX.csv". entonces en el archivo de la biblioteca con la extensión .mqh con la extensión . A continuación se muestra el código de la función comentada.

void writing_adx_screen1_to_file(int i_param) // ФУНКЦИЯ ЗАПИСИ ДАННЫХ В ФАЙЛ
   { //---НАЧАЛО ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУЭКРАНУ-----------------------------------------------------------------------+
   
   //-НАЧАЛО ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   int hendel= FileOpen("ZNA4_ADX.csv",FILE_WRITE,';');
   
   //-КОНЕЦ ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   
   
//---НАЧАЛО ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ------------------------------------------------------------------------+

  double adx1= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,1);

//---АДХ_СВЕЧА 2 НАЧАЛО------------------------------------------------------------------------------------------+

double adx2= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,2);
//---АДХ_СВЕЧА 2 КОНЕЦ---------------------------------------------------------------------------------------------+

//---АДХ_СВЕЧА 3 НАЧАЛО------------------------------------------------------------------------------------------+

double adx3= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,3);
//---АДХ_СВЕЧА 3 КОНЕЦ----------------------------------------------------------------------------------------+

//--КОНЕЦ ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ//------------------------------------------------------------------------------+
if(hendel>0)
FileWrite(hendel,"ордер "+(string)i_param+" "+(string)adx1,(string)adx2,(string)adx3); // ЗАПИСЫВАЮ ДАННЫЕ В ФАЙЛ:)

FileClose(hendel);

   
   }//---КОНЕЦ ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУ----------------------------------------------------------------+

Quiero que los datos se escriban como en la captura de pantalla de abajo.

EJEMPLO DE CÓMO QUIERO REGISTRAR LOS DATOS


Es decir, el texto rojo es una cabecera que escribiré manualmente. La línea 2 es lo que quiero establecer con esta función. Es un número de orden en la prueba. Y tenemos tres valores adx. Entonces cuando la segunda orden se abre en la prueba, necesitamos la siguiente línea donde el número de orden se convierte en 2, y los valores de adx se escribirán para tres velas antes de que esta orden se abra, y así sucesivamente como muchas órdenes en la prueba saldrán...

Llamo a la función en sí en el código del EA como se muestra en el siguiente fragmento de código.


  //---КОНЕЦ БАЙ ТРЕНДА СИГНАЛ АО------------------------------------------------------------------------------------------+
  if(f_end_trend_buy_ao_market_order() && count_orders_market_buy == 0 && count_orders_market_sell == 0)
  {// НАЧАЛО ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО
      if(OrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Bid+sl , Bid-tp ,Coment, Magik_number)) Print("ОТКРЫВАЕМ ОРДЕР СЕЛЛ ПО СИГНАЛУ ОКОНЧАНИЯ ТРНЕДА- ДИВЕРЕГЕНЦИЯ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
      writing_adx_screen1_to_file(i_nomer_ordera);// ВЫЗОВ ФУНКЦИ ЗАПИСИ ДАННЫХ В ФАЙЛ
      if (GetLastError()==141){Alert("ОШИБКА № "+string(GetLastError())+"УДАЛЯЕМ ЭКСПЕРТА С ГРАФИКА"); ExpertRemove();}// ПРОВЕРКА ОТ ДОЛБАНИЯ СЕРВЕРА И БАНА СЧЁТА   


  } // КОНЕЦ ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО//-------------------------------------------------------------------------------------------------+
  



La prueba se ejecuta sin ningún error, pero tengo este resultado en el archivo (PANTALLA DE ABAJO ).

LO QUE OBTENGO AL ESCRIBIR EN EL ARCHIVO


Tengo una línea con la primera orden y tres valores, pero había 189 órdenes abiertas en la prueba. ¿Qué y dónde me he olvidado de aumentar la variable para contar el número de pedidos y cómo debo hacer para que se registren los datos posteriores al primer pedido en las líneas 2,3-189? Por favor, no me envíes a la base de código y otros lugares donde me resulta difícil leer el texto, y el código de otras personas es casi imposible. Así que dime de forma clara qué añadir y dónde puedo conseguir los datos que necesito. P/S si no te importa resaltar el punto con la adición ...

 
DanilaMactep:

Buenos días a todos. Estoy tratando de recoger datos al abrir órdenes. Quiero escribir el valor del indicador adh en las velas 1,2,3 en un archivo al abrir una orden.

Hago lo siguiente. Abrí el directorio de datos, fui a la carpeta del probador, fui a la carpeta de archivos y creé allí un archivo llamado "ZNA4_ADX.csv". entonces en el archivo de la biblioteca con la extensión .mqh con la extensión . A continuación se muestra el código de la función comentada.

Quiero que los datos se escriban como en la captura de pantalla de abajo.


Es decir, el texto rojo es una cabecera que escribiré manualmente. La línea 2 es lo que quiero establecer con esta función. Es un número de orden en la prueba. Y tenemos tres valores adx. Entonces cuando la segunda orden se abre en la prueba, necesitamos la siguiente línea donde el número de orden se convierte en 2, y los valores de adx se escribirán para tres velas antes de que esta orden se abra, y así sucesivamente como muchas órdenes en la prueba saldrán...

Estoy llamando a la función en sí en el código de EA como se muestra en el fragmento de código a continuación.




La prueba se ejecuta sin ningún error, pero tengo este resultado en el archivo (PANTALLA DE ABAJO ).


Tengo una línea con la primera orden y tres valores, pero había 189 órdenes abiertas en la prueba. ¿Qué y dónde me he olvidado de aumentar la variable para contar el número de pedidos y cómo debo hacer para que se registren los datos posteriores al primer pedido en las líneas 2,3-189? Por favor, no me envíes a la base de código y otros lugares donde me resulta difícil leer el texto, y el código de otras personas es casi imposible. Así que dime de forma clara qué añadir y dónde puedo conseguir los datos que necesito. P/S si no te importa resaltar el punto con la adición ...

Si se abre un archivo con una sola bandera FILE_WRITE, se elimina todo lo que hay en el archivo. Para guardar los datos existentes en el archivo, es necesario abrir el archivo para leer y escribir.

A continuación, no olvides mover el puntero al final del archivo.

 
Alexey Viktorov:

Si el archivo se abre con una sola bandera FILE_WRITE, se borra todo lo que hay en el archivo. Para guardar los datos existentes en el archivo, debe abrir el archivo para leer y escribir.

A continuación, no olvides mover el puntero al final del archivo.

Alexey, muchas gracias por indicarme dónde hay que "escarbar" el error - de momento he conseguido hacer un registro línea por línea - sólo queda peinar todo en un formato utilizable para el análisis))))
 

Los valores de la matriz están en celdas RAM que se suceden. La longitud máxima de las celdas desocupadas puede depender de.

 
¿Por qué no funciona con las direcciones de las funciones?
template<typename T>
typedef T (*Fun)(const int, const int, const double &[], const double &[], const double &[], const double &[], const int &[]);
Fun    calculation,
       function;

//------------------------------------------------------------------------------------------------------------------------------

int OnInit()
  {
   calculation  = test;
   function     = Dis_HL_Value;
  //-----------------------------------------------------------------
   return(INIT_SUCCEEDED);
  }
 
Hola, ¿podríais decirme si esto es una declaración de un array bidimensional?
      ArrayInitialize(ZigZagBuffer,0.0);
Gracias de antemano.
 
Дмитрий:
Hola, ¿me pueden decir si esto es una declaración de un array bidimensional? Gracias de antemano.

No, es una inicialización de uno ya declarado.

Razón de la queja: