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

 
Artyom Trishkin:
Se trata de una simple restricción de software, no relacionada con la configuración por defecto de la ventana de ajustes del EA - estos ajustes pertenecen a la configuración del EA, y se controlan en el propio EA.

Gracias) Ahora entiendo cómo se implementa

 
Alexandr Sokolov:
¿Cómo obtener los valores de pérdidas y ganancias cuando se alcanza el TP o el SL en el código?

Por ejemplo, existe la función AccountFreeMarginCheck(), con la que se puede obtener el margen. Y no hay funciones para determinar el valor del punto al menos para el símbolo, el volumen y el tipo de orden especificados

MQL4

https://www.mql5.com/ru/forum/131859/page3

Puedes encontrar un montón de funciones aquí. Tal vez puedas arreglar algo por ti mismo y estarás bien.

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 

y ¿cómo puedo configurar la función de recálculo cuando estimo el gráfico TF?

 
Lomonosov1991:

y ¿cómo puedo configurar la función de recálculo cuando estimo el gráfico TF?

Hay documentación. A veces es posible mirar a través de ella. Existe una función: UninitializeReason(), que devuelve el código de la razón de desinicialización. E incluso hay ejemplos.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
  • www.mql5.com
//| get text description                                             | //| Expert deinitialization function                                 |
 

Buenas noches. A petición de un amigo he hecho una versión modificada del indicadorestocástico estándar de MT5 Stoch_HISTOGRAM_MQL5_3

Esta versión muestra el indicador como un gráfico de barras. Mi amigo pidió que las barras por encima de 50 fueran verdes y las que estuvieran por debajo de 50 fueran rojas.

He conseguido manejar los bargraphs pero no sé cómo cambiar el color, me ha dejado alucinado. Ayuda consejo plz.

Voy a pegar el código a continuación, voy a adjuntar el archivo.

//+------------------------------------------------------------------+
//|                                       Stoch_HISTOGRAM_MQL5_3.mq5 |
//|                   Copyright 2009-2017, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009-2017, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_plots   3
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_type3   DRAW_HISTOGRAM2
#property indicator_type4   DRAW_HISTOGRAM2
#property indicator_color1  LightSeaGreen
#property indicator_color2  Blue
#property indicator_color3  Green
#property indicator_style2  STYLE_DOT
#property indicator_style3  STYLE_SOLID
//--- input parameters
input int InpKPeriod=5;  // K period
input int InpDPeriod=3;  // D period
input int InpSlowing=3;  // Slowing
//--- indicator buffers
double    ExtMainBuffer[];
double    ExtSignalBuffer[];
double    HISTOGRAM2_1[];
double    HISTOGRAM2_2[];
double    ExtHighesBuffer[];
double    ExtLowesBuffer[];
color     colors[]={clrRed,clrGreen};
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtMainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtSignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,HISTOGRAM2_1,INDICATOR_DATA);
   SetIndexBuffer(3,HISTOGRAM2_2,INDICATOR_DATA);
   SetIndexBuffer(4,ExtHighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(5,ExtLowesBuffer,INDICATOR_CALCULATIONS);
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,2);
//--- set levels
   IndicatorSetInteger(INDICATOR_LEVELS,3);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,50);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,2,80);
////--- установим пустое значение для HISTOGRAM2
//   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);   
//--- set maximum and minimum for subwindow 
   IndicatorSetDouble(INDICATOR_MINIMUM,0);
   IndicatorSetDouble(INDICATOR_MAXIMUM,100);
//--- name for DataWindow and indicator subwindow label
   IndicatorSetString(INDICATOR_SHORTNAME,"Stoch_HISTOGRAM("+(string)InpKPeriod+","+(string)InpDPeriod+","+(string)InpSlowing+")");
   PlotIndexSetString(0,PLOT_LABEL,"Main");
   PlotIndexSetString(1,PLOT_LABEL,"Signal");
   PlotIndexSetString(2,PLOT_LABEL,"UP");
   PlotIndexSetString(3,PLOT_LABEL,"LOW");
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpKPeriod+InpSlowing-2);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpKPeriod+InpDPeriod);
   PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpKPeriod+InpSlowing-2);
   PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,InpKPeriod+InpSlowing-2);
//--- initialization done
  }
//+------------------------------------------------------------------+
//| Stochastic Oscillator                                            |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,k,start;
//--- check for bars count
   if(rates_total<=InpKPeriod+InpDPeriod+InpSlowing)
      return(0);
//---
   start=InpKPeriod-1;
   if(start+1<prev_calculated) start=prev_calculated-2;
   else
     {
      for(i=0;i<start;i++)
        {
         ExtLowesBuffer[i]=0.0;
         ExtHighesBuffer[i]=0.0;
        }
     }
//--- calculate HighesBuffer[] and ExtHighesBuffer[]
   for(i=start;i<rates_total && !IsStopped();i++)
     {
      double dmin=1000000.0;
      double dmax=-1000000.0;
      for(k=i-InpKPeriod+1;k<=i;k++)
        {
         if(dmin>low[k])  dmin=low[k];
         if(dmax<high[k]) dmax=high[k];
        }
      ExtLowesBuffer[i]=dmin;
      ExtHighesBuffer[i]=dmax;
     }
//--- %K
   start=InpKPeriod-1+InpSlowing-1;
   if(start+1<prev_calculated) start=prev_calculated-2;
   else
     {
      for(i=0;i<start;i++) ExtMainBuffer[i]=0.0;
     }
//--- main cycle
   for(i=start;i<rates_total && !IsStopped();i++)
     {
      double sumlow=0.0;
      double sumhigh=0.0;
      for(k=(i-InpSlowing+1);k<=i;k++)
        {
         sumlow +=(close[k]-ExtLowesBuffer[k]);
         sumhigh+=(ExtHighesBuffer[k]-ExtLowesBuffer[k]);
        }
      if(sumhigh==0.0) ExtMainBuffer[i]=100.0;
         else          ExtMainBuffer[i]=sumlow/sumhigh*100;
      if(ExtMainBuffer[i]>50){
         HISTOGRAM2_1[i]=50; 
         HISTOGRAM2_2[i]=ExtMainBuffer[i]; 
         //colors[i]=clrGreen;
         //PlotIndexSetInteger(2,PLOT_LINE_COLOR,clrGreen);
         } 
      if(ExtMainBuffer[i]<50){
         HISTOGRAM2_1[i]=ExtMainBuffer[i]; 
         HISTOGRAM2_2[i]=50; 
         //colors[i]=clrRed;
         //PlotIndexSetInteger(2,PLOT_LINE_COLOR,clrRed);
         } 
      //PlotIndexSetInteger(2,PLOT_LINE_COLOR,colors[i]);
     }
//--- signal
   start=InpDPeriod-1;
   if(start+1<prev_calculated) start=prev_calculated-2;
   else
     {
      for(i=0;i<start;i++) ExtSignalBuffer[i]=0.0;
     }
   for(i=start;i<rates_total && !IsStopped();i++)
     {
      double sum=0.0;
      for(k=0;k<InpDPeriod;k++) sum+=ExtMainBuffer[i-k];
      ExtSignalBuffer[i]=sum/InpDPeriod;
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }
//+------------------------------------------------------------------+
Archivos adjuntos:
 
Sergey Voytsekhovsky:

Buenas noches. A petición de un amigo he hecho una versión modificada del indicadorestocástico estándar de MT5 Stoch_HISTOGRAM_MQL5_3

Esta versión muestra el indicador como un gráfico de barras. Mi amigo pidió que las barras por encima de 50 fueran verdes y las que estuvieran por debajo de 50 fueran rojas.

He conseguido manejar los bargraphs pero no sé cómo cambiar el color, me ha dejado alucinado. Ayuda consejo plz.

Pego el código abajo y adjunto el archivo.

Es simplemente increíble. ¿Cómo puede uno leer la documentación y ver DRAW_HISTOGRAM2 y no ver DRAW_COLOR_HISTOGRAM2

Ah, y se han declarado topes adicionales.
 
Alexey Viktorov:

Es simplemente increíble. ¿Cómo puede uno leer la documentación y ver DRAW_HISTOGRAM2 y no ver DRAW_COLOR_HISTOGRAM2

Ah, y los topes son redundantes.

Gracias por su comentario. Oooh, no te haces una idea de todo lo que puedes NO notar, leyendo documentación, cuando buscas caminos y soluciones por tanteo, como en la niebla, cuando no hay maestro, mentor, compañero más experimentado, etc. Muchas gracias, ya he encontrado DRAW_COLOR_HISTOGRAM2, entiendo su significado, lo reharé ahora.

¿Podría decirme algo más sobre los topes adicionales? No se puede tener demasiada experiencia, pero sí demasiados topes. :-0

 
Sergey Voytsekhovsky:

Gracias por su comentario. Oooh, no te haces una idea de todo lo que puedes NO notar, leyendo documentación, cuando buscas caminos y soluciones por tanteo, como en la niebla, cuando no hay maestro, mentor, compañero más experimentado, etc. Muchas gracias, ya he encontrado DRAW_COLOR_HISTOGRAM2, entiendo su significado, lo reharé ahora.

¿Podría decirme algo más sobre los topes adicionales? No se puede tener demasiada experiencia, pero sí demasiados topes. :-0

Bueno... Si el estocástico tiene 2 buffers, si no tengo todos los chips de memoria quemados. Para ser exactos, 2 de ellos lo son. En consecuencia, sólo deben guardarse, sustituyéndolos por una visualización del histograma. En realidad, para dos parcelas DRAW_COLOR_HISTOGRAM2 necesitará 6 buffers. Pero aunque dije número, me refería a estas líneas

#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_type3   DRAW_HISTOGRAM2
#property indicator_type4   DRAW_HISTOGRAM2

En mi opinión, debería ser así

#property indicator_buffers 5
#property indicator_plots   2
#property indicator_type1   DRAW_COLOR_HISTOGRAM2 // основная 
#property indicator_type2   DRAW_LINE             // сигнальная
#property indicator_color1  clrGreen,clrRed       // цвет гистограмм
#property indicator_color2  clrBlue               // цвет линии
 

¡Saludos a todos!
Una pista, si lo sabes.

Como ves, el verde (Vigor=0,1154) ni siquiera cruzó el rojo (Señal=0,1133) en las cercanías, pero se vendió. Y no es un caso aislado.

Aquí hay otra.

Aquí están "fusionados", pero siguen siendo Vigor=0,0543 y Señal=0,0525.

Todo está "pronormalizado" en todas partes.

Código de esta condición: && RVI_S_S >0 && RVI_S_M < RVI_S_S && RVI_S_M1 > RVI_S_S1

RVI_S_S (Señal-rojo), respectivamente RVI_S_M (Vigor-verde).

Si alguien tiene algo que valga la pena decir, le estaría muy agradecido.

 
KrasAleks:

¡Saludos a todos!
Una pista, si lo sabes.

Como ves, el verde (Vigor=0,1154) ni siquiera cruzó el rojo (Señal=0,1133) en las cercanías, pero se vendió. Y este no es un caso aislado.

Aquí hay otra.

Aquí están "fusionados", pero siguen siendo Vigor=0,0543 y Señal=0,0525.

Todo está "pronormalizado" en todas partes.

Código de esta condición: && RVI_S_S >0 && RVI_S_M < RVI_S_S && RVI_S_M1 > RVI_S_S1

RVI_S_S (Señal-rojo), respectivamente RVI_S_M (Vigor-verde).

Si alguien tiene algo que valga la pena decir, le estaría muy agradecido.

Probablemente hubo un cruce, pero fue redibujado.
Compruebe la señal después del cierre de la vela.

Razón de la queja: