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

 

Chicos, tengo una función OnTimer() que debe ser ejecutada al inicio de cada día y a cierto resultado de la ejecución el EA debe ir a dormir. Si establezco la hora de la próxima ejecución de la función OnTimer() al principio del próximo día y después de ella el EA entrará en reposo hasta el mismo momento (-1 segundo por ejemplo), ¿el contador de tiempo seguirá corriendo y la función se ejecutará después de salir del reposo después de 1 segundo?


P. S. Otra pregunta un poco preocupante, ¿cómo es posible que la documentación esté escrita con un estilo tan cursi? Me refiero a los espacios de código y a la puesta en escena de los paréntesis, nunca he visto a nadie, salvo a "escolares en laboratorios de programación" y a tipos que escriben en mql, producir algo así

for(int x=0;x<10;x++)

{

}


El sitio se corrige de alguna manera, sobre los paréntesis me refiero a que los paréntesis se colocan con la tabulación, es decir, no podemos trazar verticalmente intuitivamente donde va un paréntesis.

 
ukrop1203:

Chicos, tengo una función OnTimer() que debe ser ejecutada al principio de cada día y a cierto resultado de la ejecución EA debe ir a dormir. Si establezco la hora de la próxima ejecución de la función OnTimer() al principio del próximo día y después de ella el EA entrará en reposo hasta el mismo momento (-1 segundo por ejemplo), ¿el contador de tiempo seguirá corriendo y la función se ejecutará después de salir del reposo después de 1 segundo?


P. S. Otra pregunta un poco preocupante, ¿cómo es posible que la documentación esté escrita con un estilo tan cursi? Me refiero a los espacios de código y a la puesta en escena de los paréntesis, nunca he visto a nadie, salvo a "escolares en laboratorios de programación" y a tipos que escriben en mql, producir algo así

for(int x=0;x<10;x++)

{

}


En cuanto a los paréntesis, me refiero a que los paréntesis se colocan con tabulación, es decir, es imposible seguir intuitivamente dónde va un paréntesis en vertical.

No puedes trazar verticalmente donde va el paréntesis, así que no podrás ver dónde va. Puedes ponerlo en reposo durante 5 minutos y poner Imprimir en OnTimer cada 10 segundos. Esto responderá a su pregunta. ¿Por qué ir a dormir si se puede simplemente cambiar la clave que determina el modo del algoritmo principal en cualquier otra función?

 

Hola a todos.


Pregunta sobre MT5. Las marcas de texto (números) se ponen como una fina barra gris. Los puntos son un tampón de control para visualizar las meteduras de pata de la MT5 en mi cabeza....


Comparado con la documentación de OBJ_TEXT, parece ser el mismo....

//| Вывод текстовой метки с размером интервала "тела" свечи          |
//+------------------------------------------------------------------+
void LabText(const long  chart_ID=0,
             string      name="Text", 
             string      text="text", // ТЕКСТ ДЛЯ ВЫВОДА НА ГРАФИК
             datetime    time=0, 
             double      price=0,
             int         fontsizes=0,
             color       clr=0)
  {
  if(ObjectFind(chart_ID,name)!=0)
     {
   ObjectCreate(chart_ID,name,OBJ_TEXT,0,0,0);
   ObjectSetInteger(chart_ID,name,OBJPROP_TIME,time);
   ObjectSetDouble(chart_ID,name,OBJPROP_PRICE,price);
//--- установим угол наклона текста 
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,0.0); 
//--- установим способ привязки 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LEFT); 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,fontsizes);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,true);
     }
  }

********************** В КОДЕ *********************************
    

    double  LW=iLow(NULL,PERIOD_H1,i);  //   ЦИКЛ I

                        *********** 

   LabText(0,"NAME  ("+string(i)+")",DoubleToString(bbull[i],0),iTime(NULL,PERIOD_H1,i),
              LW-(8*_Point),12,clrWhite);
   ExtLineBuffer1[i]=iHigh(NULL,PERIOD_H1,i);


 
kopeyka2:

Hola a todos.


Pregunta sobre MT5. Las marcas de texto (números) se ponen como una fina barra gris. Los puntos son un tampón de control para visualizar las meteduras de pata de la MT5 en mi cabeza....


Comparado con la documentación de OBJ_TEXT, parece ser el mismo....


Mira lo que pasas en el parámetro fontsizes

 
Artyom Trishkin:

Mira lo que pasas en el parámetro fontsizes

¡¡¡GRACIAS!!!He puesto los tamaños de las fuentes desde las variables globales. Establézcalo en la función vacía LabText. Funcionó...


 

Quiero añadir y borrar indicadores en el gráfico con el script, ya que al aplicar la plantilla se borran todas las líneas dibujadas.


#property indicator_label1  "MA8"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1


int indicator_handle;

void OnStart()
  {

   indicator_handle = iMA(0,0,8,0,MODE_EMA,PRICE_CLOSE);

   Print(indicator_handle);

   //ChartIndicatorAdd(0,0,indicator_handle);

   
  }

Recibo respuesta

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) no puede cargar el indicador 'Media móvil' [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


Sin embargo, el código se compila sin errores.


 
psyman:

Quiero añadir y borrar indicadores en el gráfico con el script, ya que al aplicar la plantilla se borran todas las líneas dibujadas.


Recibo respuesta

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) no puede cargar el indicador 'Media móvil' [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


Aunque el código se compila sin errores.


ERR_MARKET_NOT_SELECTED

4302

Símbolo no seleccionado en MarketWatch


¿Por qué pone 0 en lugar del nombre del símbolo? Si quieres la actual, tienes que escribir NULL, o su nombre, por ejemplo "EURUSD".

iMA

Devuelve el asa del indicador de media móvil. Sólo un búfer.

intiMA(
cadena símbolo, // nombre del símbolo
ENUM_TIMEFRAMESperiodo, // periodo
int ma_period, // período de media
int ma_shift, // indicador de desplazamiento horizontal
ENUM_MA_METHODma_method, // tipo de alisado
ENUM_APPLIED_PRICE applied_price // tipo de precio o mango
);

Parámetros

símbolo

[in] Nombre del símbolo del instrumento cuyos datos se utilizarán para calcular el indicador. NULL significa símbolo actual.

período

[in ] El valor del período puede ser uno de los valores de la enumeración ENUM_TIMEFRAMES, 0 significa el marco temporal actual.

ma_period

[en] Período de promediación para el cálculo de la media móvil.

ma_shift

[in] Desplazamiento del indicador en relación con el gráfico de precios.

ma_method

[en] Método de promediación. Puede ser cualquiera de los valores de ENUM_MA_METHOD.

precio_aplicado

[en] Precio utilizado. Puede ser cualquiera de las constantes de precio de ENUM_APPLIED_PRICE o un manejador de otro indicador.

Valor devuelto

Devuelve el handle del indicador técnico especificado, en caso de fallo devuelve INVALID_HANDLE. La función IndicatorRelease() se utiliza para liberar la memoria del ordenador de un indicador que ya no está en uso.

 
hola, podriais decirme como hacer que un array de manillas MA devuelva los precios normales, me refiero a como deberian, 5 decimales, no 8
int OnInit()
  {
 ima1_handle        = iMA (Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE);
 ima2_handle        =  iMA (Symbol(),0,64,0,MODE_EMA,PRICE_CLOSE);               //хендл
 Stoch_handle       = iStochastic (Symbol(),0,20,15,15,MODE_EMA,STO_CLOSECLOSE);//хендл
 ATR_handle         = iATR        (Symbol(),0,21);                              //хендл

   if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);
  }
void OnDeinit(const int reason)
  {

  }

void OnTick()
  { 
    double ima1_massiv [];                                          //динамический массив для быстрой машки
    ArraySetAsSeries(ima1_massiv, true);   
    int ima_count1 = CopyBuffer(ima1_handle,0,0,2,ima1_massiv);    //скопировал данные из 2х буферов быстрой машки
    //double ima1_normal = NormalizeDouble(ima1_massiv[0], Digits);
    string ima1_massiv_str0 = DoubleToString (ima1_massiv[0]);
    string ima1_massiv_str1 = DoubleToString (ima1_massiv[1]);
    printf ("сегодня = "+ ima1_massiv_str0 + " вчера = "+ ima1_massiv_str1);  
    
  }    
lenguaje mt5
 
Sergey Lobzankin:
Hola, podríais decirme cómo hacer que un array de manillas MA devuelva precios normales, me refiero a como deberían, 5 dígitos después del punto decimal y no 8
if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);

cool)

double normalMA=NormalizeDouble(MA,_Digits);    
 

Hola, podríais decirme cómo hacer que un array de manillas MA devuelva precios normales, me refiero a como deberían, 5 dígitos después del punto decimal y no 8

lenguaje mt5

DoubleToStr en mt5, no hayDoubleToString(); pero no ayuda
DoubleToStr - Преобразование данных - Справочник MQL4
DoubleToStr - Преобразование данных - Справочник MQL4
  • docs.mql4.com
DoubleToStr - Преобразование данных - Справочник MQL4
Razón de la queja: