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

 

Tengo una pregunta sobre cómo llamar a los indicadores a través de iCustom.

1. Existe la posibilidad de excluir algunos parámetros del indicador de la lista de parámetros pasados a iCustom. Por ejemplo, no quiero pasar algún parámetro de cadena o cualquier otro. ¿un parámetro externo del indicador con el modificador sinput debe especificarse también en iCustom cuando se llama desde un Asesor Experto?

2. ¿Cuál es la mejor solución, si el indicador tiene muchos parámetros (unos cientos)? ¿Existe alguna solución para llamar a este indicador?

Gracias.

 

Quiero que el EA cierre las posiciones abiertas cuando el precio cruce la MA.

Por favor, aconséjeme cómo ponerlo en práctica.

Gracias

 
RichLux:

Quiero que el EA cierre las posiciones abiertas cuando el precio cruce la MA.

Por favor, aconséjeme cómo ponerlo en práctica.

Gracias

void CheckForClose_MA()
  {
   double MA=iMA(NULL,0,ma_period,ma_shift,MODE_SMMA,PRICE_MEDIAN,0);

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
        //---- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Low[1]>=MA) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
     }
//----


dobleiMA(
símbolo de cadena,// nombre del símbolo
inttimeframe,// marco temporal
intma_period,// período
intma_shift,// Desplazamiento de la media
intma_method,// método de promediación
intapplied_price,//tipo de precio
intdesplazamiento // desplazamiento
);

 

Cómo saber qué parámetros se han enviado al Asesor Experto a través de iCustom. Recibo un valor incorrecto del buffer especificado en iCustom, quiero comprobar si los datos han "llegado" al indicador después de que se haya llamado a iCustom.

¿Cómo puedo depurar en absoluto?

 
Александр:

Hay una función.


Cada llamada a la función cambiará la variable ХХ, y necesito que ХХ sea externa (la lógica que necesito), pero cada llamada a la función comenzó con ХХ siendo 0 y en consecuencia return(ХХ) devolverá su valor. Es decir, no entiendo cómo hacer que la variable XX sea externa y que la función pueda ser llamada de forma "autónoma", aislada. Exactamente por medio de MQ4. Gracias.


Lo he leído varias veces, pero sigo sin entender lo que quiere.

Tal vez esto:

double XX = 0;


double x()
{
   double rez = XX;
   XX++;
   return rez;
}
 
¿Cómo puedo saber si todas las barras están cargadas en el gráfico?
Es necesario llamar al recálculo del indicador sólo cuando está completamente cargado.

La condición
if(time[0] > TimeCurrent() - 60 * ChartPeriod())
no ayuda a resolver el problema.
 

memorizar y comprobar el número total de compases, si el valor no "sube" en unos segundos, entonces "allá vamos".

y luego volver a calcular si

rates_total-prev_calculated > 1
 
Koldun Zloy:

Lo he leído varias veces, pero sigo sin entender lo que busca.

Tal vez lo sea:

Hay una función (es un indicador en mi EA, lo necesito y no se discute, esta un indicador y empieza a funcionar (cuenta atrás) a partir de un nuevo pico). El indicador tiene varios parámetros que cambian todo el tiempo. Como quiero evitar el bucle, hago que estos parámetros sean externos (para la función externa) para no perder sus valores. Y en cualquier nueva llamada a la función, sólo veo el cambio del valor del indicador. Pero quiero tener una nueva "instancia" del indicador a partir de un nuevo pico, mientras la antigua "instancia" sigue funcionando y cambiando valores. Quiero lograr esto usando los métodos estándar de MQ4, porque sé muy poco sobre clases, estructuras y otras herencias. Gracias.
 
Александр:
Tengo una función (es un indicador en mi Asesor Experto, lo necesito y no se cuestiona, esto el pavo y empieza a funcionar (cuenta atrás) desde un nuevo pico). Tengo un indicador con varios parámetros que cambian todo el tiempo. Como quiero evitar un ciclo, hago que estos parámetros sean externos (para la función externa) para no perder sus valores. Y en cualquier nueva llamada a la función, sólo veo el cambio del valor del indicador. Pero quiero tener una nueva "instancia" del indicador a partir de un nuevo pico, mientras la antigua "instancia" sigue funcionando y cambiando valores. Quiero lograr esto usando los métodos estándar de MQ4, porque sé muy poco sobre clases, estructuras y otras herencias. Gracias.

No ayudó.

Probablemente deberías aprender el idioma para no confundirte con los términos al menos.

No creo que todo el mundo entienda lo que se llama una variable externa, lo que significa "llamar a una función de forma autónoma".

Y qué tiene que ver un bucle, que no quieres usar, de nuevo, por razones que sólo tú entiendes.

Bueno, no espero entenderte.


 
//+------------------------------------------------------------------+
//|           Проверка нажатия клавиш на клавиатуре                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   if(id==CHARTEVENT_KEYDOWN)
     {
     Alert(lparam);
     }
   }

¡¿Me puedes decir cómo comprobar la combinación, por ejemplo, Shift+A !