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

 

Buenos días, queridos amigos. Por favor, aconsejen a un principiante en qué dirección cavar. El problema no está resuelto. La conclusión es la siguiente:

En el H4, la barra rompe la barra de abajo hacia arriba, donde realmente se cierra y esto es una condición de compra. Compramos. Ahora debemos tomar algunos puntos, o aproximadamente diez, para cerrar (todo era simple y claro para mí hasta este momento) y ir a fumar hasta la siguiente barra (esto no funciona). En cuanto se cierra una orden, se abre una nueva (la condición se sigue cumpliendo), ¿cómo evitar la negociación hasta la siguiente barra?

La solución parece ser sencilla, la siento cercana, pero me falta conocimiento (o cerebro)). Debo admitir que no leí 549 páginas y si alguien ya preguntó... No digas demasiadas palabrotas))))

¿Puede ayudarme, por favor?

 

PREGUNTAS FRECUENTES

 
Gracias
 
ex_kalibur:

Hola, ayúdame por favor, no puedo ver lo más obvio((((

double LotsAllPos(int op) {

int i;

doble ll=0;

for (i=0; i<OrdersTotal(); i++) {

si (OrderType()!=op) continuar;

if (OrderSymbol()!=sy) continuar;

if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic+1) ll+=OrderLots();

}

return(ll);

aquí necesito devolver el volumen sumado por mi símbolo, y por tipo

for (i=0; i<OrdersTotal(); i++) {
 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
   if (OrderType()!=op) continue;

....
   }
 
Sepulca:


Gracias por su ayuda.
 

¿Puede decirme cuál puede ser el problema? La variable newlots es 0,2.

Cuando ejecuto un EA, Print 1 imprime primero un mensaje que dice 1 0.2, luego se dispara la condición de abrir una orden, la orden se abre pero la función Print 2 antes de ella no muestra el mensaje, no puedo entender por qué se salta ya que la condición se dispara y si la función de orden está abierta, la función Print también debería abrirse. Además de esto, el registro no muestra un mensaje de que la orden ha sido enviada, el mensaje estándar que se mostraba en la apertura de cada orden.

Pero eso no es lo peor todavía, el principal problema es que la variable newlots es igual a 0,2 y la orden se abre con un volumen de 0,1, cómo es posible en absoluto, ya que se especifica claramente en la función en lugar de volumen como variable newlots.

  Print("1 ",newlots);
  
  if(условие)
    {
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("2 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

// пробовал даже вот так, в этом случае выводятся только первые два сообщение, причем значение выводится что newlots все таки равен 0.2, но третье сообщение
не выводится, и ордер открывается с лотом 0.1.


Print("1 ",newlots); - равен 0.2


Print("2 ",newlots); - равен 0.2

Print("3 ",newlots); - не выводится сообщение, и далее ордер открывается с лотом 0.1



Print("1 ",newlots);
  if(((Ask > (MA1+3*Point*a)) && (Open[0] < (MA1+3*Point*a)) && (Ask < (MA1+5*Point*a))) || ((Low[0] < (MA1+3*Point*a)) && (Bid > (MA1+3*Point*a)) && (Bid < (MA1+5*Point*a))))
    {
    Print("2 ",newlots);
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("3 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

 
sss2019:

¿Puede decirme cuál puede ser el problema? La variable newlots es 0,2.

Cuando ejecuto un EA, la función Print 1 imprime primero un mensaje que dice 1 0.2, luego se dispara la condición de abrir una orden, la orden se abre pero la función Print 2 que la precede no muestra el mensaje, no puedo entender por qué se salta, ya que la condición se dispara y si la función de orden está abierta, la función Print debería estar cerrada también. Además de esto, el registro no muestra un mensaje de que el pedido ha sido enviado, el mensaje estándar que se mostraba cada vez que se abría un pedido.

Pero eso no es lo peor todavía, el principal problema es que la variable newlots es igual a 0,2 y la orden se abre con un volumen de 0,1; puede ocurrir porque se indica claramente en la función en lugar de volumen que la variable newlots.


¿Dónde está la apertura de una orden en el código? ¿Dónde está OrderSend?

En esa sección, que has mostrado, la condición no se ejecuta, y en consecuencia tu Print 2, y en consecuencia, OrderSend en esta condición también, no abre una orden con 0.2 lotes.

Se está ejecutando otro OrderSend.

 
zxc:


¿En qué otro lugar del código se abre la orden? ¿Dónde más está OrderSend?

En la sección que has mostrado, la condición no se cumple y por tanto tu Print 2, y por tanto el OrderSend en esta condición tampoco se abre - una orden con un lote de 0,2 no se abre.

Se ejecuta otro OrderSend.


Aquí está.

if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)

Sólo tengo un OrderSend en mi EA, la condición se cumple y la orden se abre con un volumen poco claro.

 

¿Me pueden decir, cuando un EA viene con un juego, en qué carpeta debo ponerlo? Gracias.

 

¡Buenas tardes!

Pueden ayudar, leyendo del archivo, hay una línea (generalmente habrá más, pero no importa), hace un bucle, como si no viera el final del archivo...

int qq=0;
 while (FileIsEnding(h3)==false)
 {
  int uu=0;
  while (FileIsLineEnding(h3)==false)
  { 
    Histxmas[qq][uu]=StrToDouble(FileReadString(h3));
    Print("Histxmas[",qq,"][",uu,"]=",Histxmas[qq][uu]);
    uu+;
  }
  FileSeek(h3,0,SEEK_END);   
  qq++;
  Print("Бро зациклился, покажи мне кюкю",qq);
 }