[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 598

 
alsu:

Desmontar completamente la lógica del indicador.

Sustitúyelo primero.

en

También,

Sin más, se ejecuta primero el primer bloque y luego el segundo. Con otro - o el primero o el segundo.



ooo! la logica esta ausente otra vez!) lo cambiare pronto! si, y sobre la marcha: si escribo en todas partes del texto no con la 4ta sino con la 3ra, asi:
iFractals(Symbol(),PERIOD_H1,MODE_UPPER,3);

No tengo oficios, aunque las barras a la 3ª parecen ser suficientes para que todo funcione, ¿cuál es el problema?

Y en cuanto a la lógica del indicador, estoy un poco confundido. Sé cómo funciona el indicador, sólo necesito el algoritmo para asegurar que ifractals no es igual a cero, y me ofrece para eliminar esta condición, es superfluo? ¿Por qué lo escribo dos veces?

 
alsu:

Desmontar completamente la lógica del indicador.

Sustitúyelo primero.

en

Además,

Sin más, se ejecuta primero el primer bloque y luego el segundo. Con otro - o el primero o el segundo.



He sustituido todo, pero sigue saltando igual por alguna razón...((((((
 
Vinin:

Es posible luchar, y el trabajo del EA puede ser interrumpido. Sólo tenemos que cambiar el enfoque.


¿Cómo?

Al principio del código, recorre todas las órdenes abiertas, busca y asigna los valores de los tickets a las órdenes, ¿o hay alguna otra forma?

 
Cruc:


Al principio del código, recorre todas las órdenes abiertas, busca y asigna los valores de los tickets a las órdenes, ¿o hay alguna otra forma?


Puede hacer esto si el EA abre una o dos posiciones.
 
¿Quién sabe qué es lo que hace que el EA deje de funcionar en el probador?
 
Vinin:

Puede hacerlo, siempre que el asesor abra una o dos posiciones.

El EA es multidivisa, por lo que las operaciones sencillas no siempre parecen resolverse a la vez ((. Y no hay experiencia.
 
Cruc:

Mi Asesor Experto es multidivisa, y las operaciones sencillas no siempre parecen resolverse a la vez ((. Y no hay experiencia.


Sólo hay que hacer la contabilidad de los pedidos correctamente. Hay muchos ejemplos.

Y la experiencia. La experiencia viene con el territorio. No irá a ninguna parte.

 
Vinin:


Sólo tiene que asegurarse de que los pedidos se registran correctamente. Hay muchos ejemplos.

Y la experiencia. La experiencia viene con el territorio. No va a ninguna parte.


Gracias por las respuestas, buscaré en los archivos.
 
skyjet:

Buenas noches, pido ayuda con un Asesor Experto MACD multidivisa. El EA sigue los criterios de apertura de posiciones correctamente, pero el cierre "en condiciones" no funciona. Ciertamente he empezado a utilizar un trailing stop, pero el cierre correcto no me da tregua.

Este es el aspecto de la parte principal

Y este es el bloque de cierre. Por favor, ayúdenme a encontrar el error.


Perdona que me repita, pero por mucho que me esfuerce, no consigo encontrar el error.

//+------------------------------------------------------------------+
string lSymbol;
int init ()
{ 
 lSymbol = Symbol();
 return (0);
}
int deinit()
{return(0);}
int start()
  {
   double MacdCurrent, MacdPrevious, SignalCurrent;
   double SignalPrevious, MaCurrent, MaPrevious;
   double bid, ask, point, digits;
   int cnt, ticket, total;
   
  total = SymbolOrdersTotal (lSymbol);
  
  if (total<1);
  {
    bid   = MarketInfo(lSymbol,MODE_BID);
    ask   = MarketInfo(lSymbol,MODE_ASK);
    point = MarketInfo(lSymbol,MODE_POINT);
    digits= MarketInfo(lSymbol,MODE_DIGITS);



Так выглядит оснавная часть, а это злопалучный блок закрытия



 for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==lSymbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*point))
                {
                 OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(bid-OrderOpenPrice()>point*TrailingStop)
                 {
                  if(OrderStopLoss()<bid-point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),bid-point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
              {
               OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-ask)>(point*TrailingStop))
                 {
                  if((OrderStopLoss()>(ask+point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),ask+point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                }
              }
           }
        }
     }
   return(0);
  }
  
   
  int SymbolOrdersTotal(string lSymbol)
{
   int Res=0;
   int total=OrdersTotal();
   for (int i=0;i<total;i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         if (OrderSymbol()==lSymbol)
         {
            Res++;
         }
      }
   }
   return(Res);
}
// the end.
 
Qwertee:
He sustituido todo, pero sigue saltando igual por alguna razón...((((((
anota lo que obtienes y los mensajes que emites en el registro
Razón de la queja: