Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 343

 
¡¡¡Claro que sí!!!
 
Vladimirovits:
Tengo todo el proyecto de visual studio en mi carpeta de expertos... Compilar es un archivo .exe, ¿verdad?

No, la biblioteca compilada es el archivo ExpertSample.dll
 
Forexman77:

La plantilla fue tomada de un libro de texto. Ahora mismo no se me dan bien las funciones de gestión de errores.

En la apertura de la orden, hay RefreshRates(); (he sustituido Bids y Asks por Market Info, como me han dicho)

Y función de tratamiento de errores:

Quería preguntar. ¿Puedo añadir la siguiente línea del error 129?

129

ERR_INVALID_PRICE

Precio incorrecto


Cuando reciba este error, debe revisar la lógica del Asesor Experto. Es el Asesor Experto el que envía un precio incorrecto en una orden de negociación. ¿Y has decidido atascar el servidor con una orden comercial errónea?


La negociación automática se desactivará y ya está.

 
artmedia70:

129

ERR_INVALID_PRICE

Precio incorrecto


Cuando se obtiene este error, es necesario revisar la lógica del EA. Es el Asesor Experto el que envía el precio erróneo en la orden de operación. ¿Y has decidido atascar el servidor con una orden comercial errónea?


La negociación automática se desactivará y ya está.

Revisé todo. Tal vez cuando el Asesor Experto envía una solicitud:

Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
¿recuerda a qué precio comprar?

Y tuve lo siguiente:

if  (iClose(Symbol(),Period(),0) <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }

si la oferta es menor o igual a la MA, entonces compramos. Hemos estado comprando a la demanda, así que estamos jugando a ponernos al día con la demanda.

No he tenido problemas para vender, sólo para comprar.

He encontrado algo de información sobre este tema:

"Si el precio de apertura solicitado no estaba en el flujo de precios o el precio solicitado no estaba normalizado después del punto decimal, se generará el error 129 (ERR_INVALID_PRICE). Si el precio de apertura solicitado está muy desfasado, se generará un error 138 (ERR_REQUOTE) independientemente del valor del parámetro de deslizamiento. Si, por el contrario, el precio solicitado es obsoleto pero sigue presente en el flujo de precios, la posición se abre al precio actual y sólo si el precio actual entra en el rango de precio+deslizamiento".

Si no es oferta y demanda después de todo, entonces la operación debería haberse realizado. Cito " Si el precio solicitado está fuera de fecha pero todavía está presente en el flujo de precios, entonces la posición se abre al precio actual y sólo si el precio actual cae dentro del rango de precio + deslizamiento" El precio al hover estaba en la zona de negociación al 100%. El cierre fue muy inferior a la media móvil.

 

Pregunta para el gurú.

No puedo conseguir que el indicador se represente en algunas zonas. La esencia del indicador, si el movimiento no es más que un cierto valor, el valor se mantiene como en el valor escrito de MA_otshet.

Cuando se sobrepasa el valor, se convierte en el valor correspondiente al momento actual.

A continuación se muestra el código del indicador con explicaciones:

//+------------------------------------------------------------------+
//|                                                         EMAF.mq4 |
//|                                                 Kamil Gazizullin |
//|                                             forexman77@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Kamil Gazizullin"
#property link      "forexman77@yandex.ru"
#property indicator_chart_window
#property indicator_buffers 1
#property  indicator_color1 Aqua 
//--- input parameters
//--- buffers
bool flag=true;
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,MA_1_t,MA_2_t;
    
  if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   static double MA_otshet;  //здесь хранится информация по MA_otshet
  for(int i=0;i<limit;i++)
   {  
      MA_1_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t; //разница между сегодня и вчера по скользящей средней
      raznica_static=MA_1_t-MA_otshet; //разница между сегодня и MA_otshet
      RefreshRates();   
      if(raznica > -0.0035 && raznica < 0.0035 && flag) // если raznica не превышает заданное число 
          {
          MA_otshet=MA_2_t; // записываем значение MA_otshet
          ExtMapBuffer1[i]=MA_otshet; //рисуем значение индикатора, как и вчера
          flag=false; // устанавливаем флаг запрета дальнейших расчетов
          }
      if(raznica_static > -0.0035 && raznica_static < 0.0035) //если raznica_static не превышает заданное число
          {
          ExtMapBuffer1[i]=MA_otshet;  // то рисуем значение индикатора, как записанный MA_otshet
          }
      if((raznica > 0.0035) || (raznica <- 0.0035)) // если raznica превышает заданное число
          {
          ExtMapBuffer1[i]=MA_1_t; // то рисуем значение по текущей цене
          flag=true; // разрешаем дальнейшие вычисления для расчета в диапазоне от -0.0035 до 0.0035
          }
   }  
   return(0);
  }
//+------------------------------------------------------------------+

 
Forexman77:

El indicador no se dibuja en algunas zonas. La esencia del indicador, si el movimiento no es más que un cierto valor, el valor se mantiene como en el valor registrado de MA_otshet.

Cuando se sobrepasa el valor, se convierte en el valor correspondiente al momento actual.

A continuación, el código y la explicación del indicador:


SECCIÓN_DRAGADA

 
Forexman77:

He revisado todo. Tal vez cuando el EA envía una solicitud:

¿Recuerda a qué precio comprar?

Y tuve lo siguiente:

es decir, la oferta es menor o igual que la MA, entonces compramos. No he tenido ningún problema con la venta, pero no he tenido ningún problema con la venta.

No he tenido problemas para vender, sólo para comprar.

He encontrado algo de información sobre este tema:

"Si el precio de apertura solicitado no estaba en el flujo de precios o el precio solicitado no estaba normalizado después del punto decimal, se generará el error 129 (ERR_INVALID_PRICE). Si el precio de apertura solicitado está muy desfasado, se generará un error 138 (ERR_REQUOTE) independientemente del valor del parámetro de deslizamiento. Si, por el contrario, el precio solicitado es obsoleto pero sigue presente en el flujo de precios, la posición se abrirá al precio actual y sólo si el precio actual entra en el rango de precio+desplazamiento".

Si no es oferta y demanda después de todo, entonces la operación debería haberse realizado. Cito " Si el precio solicitado está fuera de fecha pero todavía está presente en el flujo de precios, entonces la posición se abre al precio actual y sólo si el precio actual cae dentro del rango de precio + deslizamiento" El precio en el hover estaba en la zona de negociación 100%. El cierre fue muy inferior a la media móvil.

Partamos de la base de que Ask siempre está normalizado es el precio: no se calcula y no tiene sentido normalizarlo.

¿Por qué el precio podría ser erróneo? ¿Quizá los datos están desfasados? Intente ejecutar RefreshRates() inmediatamente antes de OrderSend().

 
Saludos, queridos comerciantes - ¡¡¡programadores!!!
¿Cuál es el significado de AccountComany?
Se pueden sacar ciertas conclusiones a partir del nombre, pero ¿cómo se relaciona con el lenguaje de programación MT4?

¿CuentaCrédito?

¿Divisa de la cuenta?

¿Cuentas?

¿Margen de la cuenta?

¿Comprobación del margen de la cuenta?

¿Análisis de la cuenta?

¿Nivel de cierre de cuenta?

¿Modo de parada de la cuenta?

¿ArrayBsearch?

Estoy muy interesado en conocer la descripción detallada de cada comando. Por favor, ayúdame.

 

¿ArrayCopy?

¿ArrayCopyRates?

ArrayCopySeries?

¿ArrayDimension?

ArrayGetAsSeries?

 

¿Qué es una tasa de arreglo?