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

 
culler:

Ayúdame a resolver un problema para determinar el momento de intersección de dos líneas MA.

No sé cómo describirlo.

Hay MAfast y MAslow

double MAfast=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1);

double MAslow=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1);

if(MAfast>MAslow) sólo funciona si MAfast está en la parte inferior, cuando la cruza, capta el momento del cruce, pero entonces MAfast está en la parte superior y la orden va a BUY ))))

Tengo en mi código como determinar el momento de cruce y comparar su dirección de abajo a arriba o viceversa.

En mi código es simplemente más o menos. De ahí los errores.

si ((x1 - y1)*(x2 - y2) < 0)
{
// tenemos la intersección
}
 
culler:

Ayúdame a resolver un problema para determinar el momento de intersección de dos líneas MA.

No sé cómo describirlo.

Hay MAfast y MAslow

double MAfast=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1);

double MAslow=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1);

if(MAfast>MAslow) sólo funciona si MAfast está en la parte inferior, cuando la cruza, capta el momento del cruce, pero entonces MAfast está en la parte superior y la orden va a BUY ))))

Tengo en mi código como determinar el momento de cruce y comparar su dirección de abajo a arriba o viceversa.

En mi código es simplemente más o menos. De ahí los errores.

Hay mucho que ver y haceraquí.
 
artmedia70:
si ((x1 - y1)*(x2 - y2) < 0)
{
// tenemos la intersección
}


TarasBY:
Aquí te esperan muchas cosas interesantes.

Gracias. Gracias.
 
culler:

Ayúdame a resolver un problema para determinar el momento de intersección de dos líneas MA.

No sé cómo describirlo.

Hay MAfast y MAslow

double MAfast=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1);

double MAslow=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1);

if(MAfast>MAslow) sólo funciona si MAfast está en la parte inferior, cuando la cruza, capta el momento del cruce, pero entonces MAfast está en la parte superior y la orden va a BUY ))))

Tengo en mi código como determinar el momento de cruce y comparar su dirección de abajo a arriba o viceversa.

En mi código es simplemente más o menos. De ahí los errores.


Un hilo muy útil, ¡y sobre su pregunta!
 
La documentación dice:

bool WindowIsVisible( int índice)
Devuelve TRUE si la subventana del gráfico es visible, en caso contrario devuelve FALSE. La subventana del gráfico puede estar oculta debido a las propiedades de visibilidad del indicador colocado en ella.
Parámetros:
índice - Índice de la subventana del gráfico.
Ejemplo:
 int maywin=WindowFind("MyMACD"); if(maywin>-1 && WindowIsVisible(maywin)==true) Print("Ventana MyMACD visible"); else Print("Ventana MyMACD no encontrada o no visible")
;
Por favor, explique qué significa: "Una subventana del gráfico puede estar oculta debido a las propiedades de visibilidad del indicador colocado en ella". Qué es este indicador propiedad????
 

¿No devuelve stopplay una int?

El compilador da un aviso de "posible pérdida de datos debido a la conversión de tipos" a este código:

   int slevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
да и на 
   int digits = MarketInfo( Symbol(), MODE_DIGITS);
тоже
 

Se necesita ayuda, parte de la posición no se cierra al probar el EA

void Zacritie_poz_sell ()
{
 
 int    i, k=OrdersTotal();
 string sy=Symbol();
 
for (i=0; i<k; i++) 
{
 if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
 {
  if ( OrderSymbol() == sy)
   {
    if (OrderType()==OP_SELL)
     {
       if ( OrderMagicNumber()==Magic)
       {
        double TP = OrderTakeProfit();
        double Prise = OrderOpenPrice();
        double Close_poz = NormalizeDouble( Prise-(Prise-TP)/2,Digits);
        double Lots1 = NormalizeDouble (Lots/4,Digits);
        double TP1 = OrderTakeProfit()+1*Point;
        double SL = OrderOpenPrice()-20*Point;
         if ( Bid == Close_poz && OrderStopLoss() != SL && TP == TP1 && Lots != Lots1)
         {
          
           OrderClose(OrderTicket(),Lots1, Bid, 40*Point, Yellow);

           break;
           Sleep (1000*5);
           RefreshRates();
         
          
         }
         
       }
     }
  
    }
   }
 }
}
 
miha91:

Se necesita ayuda, parte de la posición no se cierra al probar el EA


for (i=k-1; i>=0; i--)
 
evillive:

¿No devuelve stopplay una int?

El compilador genera la advertencia de "posible pérdida de datos debido a la conversión de tipos" en código como éste:

Conversión explícita de tipos:

int slevel = (int)MarketInfo(Symbol(), MODE_STOPLEVEL);
Ver... La función es de tipo double, pero el identificador de la petición puede definir el tipo de retorno int. Por eso es un insulto.
 

Estoy optimizando un EA, hay mucho overshoot, unos 10^17 grados, hay más parámetros, pero no se pueden optimizar más. ¿Por qué existen estas restricciones?

Además de una pregunta sobre el algoritmo genético. Parece que deja de funcionar correctamente con datos tan grandes, el beneficio final salta de forma bastante dramática, a menudo a la baja. Es decir, ahora ha encontrado ajustes rentables, pero no en cualquier otro momento. ¿Los desarrolladores lo van a arreglar?