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

 
La gente. Por favor, ayuda. Esta es la pregunta. Estoy haciendo un EA basado en el indicador MACD. En realidad, hay dos condiciones de apertura y dos condiciones de cierre. La primera condición para cerrar la compra: la señal es más de 0, el MACD es más de 0, la primera barra es menos que la segunda y la segunda es más que la tercera. La segunda condición: La señal es menor que 0, el MACD es menor que 0, la primera barra es menor que la segunda y la segunda es menor que la primera. Pero hay un pero.... Estas condiciones copian completamente las condiciones del acuerdo para cerrar la venta. ¿Cómo separarlos? Por favor, avisa. Tengo una idea de que el pico se repite en el histograma, pero entonces ¿cómo describo que el pico ya ha estado allí? ¿Cómo crear una memoria de este tipo en el EA?
 

Hola a todos, estoy escribiendo un EA. La esencia es la siguiente - abre dos órdenes de parada dirigidas de manera diferente cuando uno de ellos se dispara el segundo se elimina, pero en el probador se elimina sólo la orden de compra al tratar de eliminar sellstop sale 4108 error boleto incorrecto. Por favor, ayúdenme a entender esto. Se ha insertado una función que borra la orden.

¡¡¡Gracias de antemano!!!

void DellSell()
  {
   int dell;
   for(int i=OrdersTotal() -1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_SELLSTOP && CountBuyDell()>0)
               dell=OrderDelete(OrderTicket());
            if(!dell)
              {
               Print("Ордер SellStop не удален");
              }
           }
        }
     }
   return;
  }
 

Saludos. Por favor, indique cómo tomar los datos del indicador.

Necesita datos de los iconos rojo y azul. Hay algunos valores astronómicos en los respectivos buffers cuando no hay dibujo. Los he limitado a un número de 10000. Parece que funciona, pero hay señales de salto. ¿Cómo solucionarlo? Así es como lo he estropeado:

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);
si (PrecioAlto1<10000) PrecioAlto=PrecioAlto1; si no, PrecioAlto=0;
if (PriceLow1<10000) PriceLow=PriceLow1; si no, PriceLow=0;
Archivos adjuntos:
 
Andrey Sokolov:

Saludos. Me pueden decir cómo obtener los datos correctos del indicador.

Necesito datos de los iconos rojo y azul. Hay algunos valores astronómicos en los respectivos buffers cuando no hay dibujo. Los he limitado a un número de 10000. Parece que funciona, pero hay señales de salto. ¿Cómo solucionarlo? Así es como lo he estropeado:

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);
si (PriceHigh1<10000) PriceHigh=PriceHigh1; si no, PriceHigh=0;
if (PriceLow1<10000) PriceLow=PriceLow1; si no, PriceLow=0;

No he mirado el código, pero puedo suponer que esto ayudará. Puede que me equivoque:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
 
Vitaly Muzichenko:

No he mirado el código, pero puedo suponer que ayudará. Podría estar equivocado:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
Gracias por no pasar, pero no sirvió de nada.
 
Andrey Sokolov:
Gracias por no pasar, pero no sirvió de nada.
Prueba a comparar también con EMPTY_VALUE, ya que hay valores "astronómicos".
 
ArraySearchDouble() y EquationDirect()en la versión antigua de mql 4. ¿Tiene la nueva versión algún análogo?
 
27311065:
ArraySearchDouble() y EquationDirect()en la versión antigua de mql 4. Y la nueva versión tiene cualquier análogo.
¿Dónde los has visto en la versión antigua? Se trata de funciones escritas por uno mismo. ¿No?
 
gracias por el consejo
 

Por favor, aconsejar la mejor manera de trabajar con los datos - dada una serie de números, que se dividirá en subgrupos, dependiendo de los resultados del cálculo, estos grupos deben ser almacenados en una matriz, además, cada grupo tendrá dos o más indicadores por grupo (un grupo de números por separado pertenecerá a la cifra calculada). Los datos tendrán el siguiente aspecto

1/1,2,3,4/23/33

2/1,4,5/26/11

3/3,4,5,33,56,38/21/44

y así sucesivamente