[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 487

 
midorum:

Es muy sencillo. Crea una variable booleana. Póngalo en falso antes de procesar los pedidos. En cuanto se procese el pedido, cámbialo a verdadero. Después de comprobar todos los pedidos, compruebe el valor de la variable - si sigue siendo falso, significa que no ha habido ningún pedido con la magia necesaria. Abre un nuevo pedido.

Gracias.
 
Roman.:
Intente jugar con (edite a sus necesidades) Kim's isCloseLastPosByStop - Devuelve la bandera para cerrar la última posición por el stop

y NumberOfPositions - Devuelve el número de posiciones, y quizás otros se adapten a su pregunta...


GRACIAS AMIGO, SEGUIRÉ INVESTIGANDO :D
 

Decidí entender cómo funciona el indicador ATR y, al mismo tiempo, estudiar su código. Entendí lo esencial, pero está escrito de forma extraña.

Aquí está su función de inicio:

int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=AtrPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      AtrBuffer[i]=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
   return(0);
  }
//+----------------

Aquí está el primer bloque con la confusión:

//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----

Qué sentido tiene hacer algo si el valor de counted_bars <1. En mi opinión, significa que el indicador no ha contado ninguna barra y debería salir de la función ya que aún no hay valores... ¿Cuál es la trampa?

¿Por qué AtrBuffer tiene el índice[Bars-i]? He entendido que la idea es poner el buffer a 0,0 si no hay valores. Pero resulta que el valor 0.0 está definido sólo para las barras desde (Bars) hasta (AtrPeriod ), mientras que desdeAtrPeriod hasta la barra 0 no se escribe nada en el buffer. ¿Por qué?

No entiendo la lógica de este fragmento de código

En el siguiente bloque:

//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----

En la línea:

if(i==Bars-1) TempBuffer[i]=high-low;

Condición si i==Bars-1. Parece que se tiene en cuenta el valor de la 1ª barra desde el principio del gráfico de la izquierda... Pero esto está muy lejos, ¿de qué sirve este valor?

 

¡Necesito ayuda!

¿Cómo puedo hacer que un EA cierre todas las órdenes abiertas y pendientes a un nivel de reducción determinado, por ejemplo el 30%, y luego reiniciarlo y empezar de nuevo?

Archivos adjuntos:
 
OrderSend
(  string symbol, int cmd, double volume, double price, int slippage,
double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

¿Podríais decirme qué debería haber en el parámetro de fecha de caducidad en la función de colocación de la orden, para que la orden pendiente se borre por sí misma después de 5 minutos si no ha funcionado? ¿Es TimeCurrent()+300 o no?

 
BeerGod:

¿Podríais decirme qué debería haber en el parámetro de fecha de caducidad en la función de colocación de la orden, para que la orden pendiente se borre por sí misma después de 5 minutos si no ha funcionado? ¿Es TimeCurrent()+300 o no?

indica segundos, si no me equivoco. así que tienes razón 5 min serán 300. Intenta utilizar el tiempo de apertura sin stop y beneficio y el tiempo de cierre, imprímelo y ahí podrás comparar.
 
Hola a todos. Me encanta ayudar, apostar 0.10 stop 200pip ¿qué cantidad necesito tener para sostener 200pip?
 
laveosa:
Hola a todos. Me encanta ayudar, apostar 0.10 stop 200pip ¿cuánto tengo que tener para mantener 200pip?
No lo sé, depende del tipo de cuenta que utilices, por ejemplo, normal o cent. A veces 1 pip por 0,01 lotes = 1 céntimo (x10x200 = 20 USD), y a veces 1 pip por 0,01 lotes = 10 céntimos (x10x200 = 200 USD).
 
paladin80:
Depende del tipo de cuenta que utilices, por ejemplo, una cuenta normal o de céntimos. A veces 1 pip por 0,01 lotes = 1 céntimo (x10x200 = 20 USD), y a veces 1 pip por 0,01 lotes = 10 céntimos (x10x200 = 200 USD).
tengo 1 pip - 1 cent. entonces necesito 20 usd para poder parar hasta 200 pips?
 

Voy a duplicar la pregunta, quizás nadie se ha dado cuenta por las preguntas de seguimiento.

Decidí entender cómo funciona el indicadorATR y, al mismo tiempo, estudiar su código. Entendí la esencia de la misma, pero está escrita de forma extraña.

Aquí está su función deinicio:

int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=AtrPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      AtrBuffer[i]=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
   return(0);
  }
//+----------------

Aquí está el primer bloque con algo de confusión:

//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----

Qué sentido tiene hacer algo si el valor de counted_bars <1. En mi opinión, significa que el indicador no ha contado ninguna barra y que debería salir de la función porque todavía no hay ningún valor... ¿Cuál es la trampa?

¿Por quéAtrBuffer tiene el índice[Bars-i]? He entendido que la idea es poner el buffer a 0,0 si no hay valores. Pero resulta que el valor 0.0 está definido sólo para las barras desde(Bars) hasta(AtrPeriod), mientras que desdeAtrPeriod hastala barra 0 no se escribe nada en el buffer. ¿Por qué?

No entiendo la lógica de este fragmento de código

En el siguiente bloque:

//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----

En la línea:

if(i==Bars-1) TempBuffer[i]=high-low;

Condición sii==Bars-1. Parece que se tiene en cuenta el valor dela 1ªbarra desde el principio del gráfico de la izquierda...Pero esto está muy lejos, ¿de qué sirve este valor?

Razón de la queja: