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

 

Parece que algo no funciona. POR FAVOR, AYUDA.

La idea es la siguiente: si la vela es mayor que un determinado valor, entonces prohíbe seguir negociando.

bool Trade=true;

//---------- start()

{.......

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen(); //--------open order if (no order is open) AND (candlestick is not bigger than)

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==-1) Trade=false; //--------- poner Tradeen falso siempre que (no haya órdenes abiertas) Y (la vela sea mayor que)

......}

//------- El comercio se utiliza en la función CheckForOpen().

void CheckForOpen() //------------------- comprobar las condiciones y abrir la orden

{int res;

if( Trade && A()==-1 && B()==-1) //------- comprobar las condiciones de apertura

{ res=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,Ask+SL*Point,Bid-TP*Point,"",MAGICMA,0,Red); //--------- si se cumple la condición, se abre la orden

trade=false; } //--------Trade tiene asignado un valor de prohibición de comercio. Y aquí funciona. Si la orden se cierra en la orden de toma, entonces espera a que lleguen las nuevas condiciones definitivas, aunque las antiguas sigan vigentes (antes, el asesor abría órdenes continuamente)

.........}

//-------------------------- comprobar la altura de la vela

int ComprobarVolumen()

{ double volume=High[1]-Low[1]; //-------medir la altura de la vela

if (volume <= CandleVolume*Point) return (1); //---------- si la vela es inferior a

if (volume > CandleVolume*Point) return (-1);//------------si la vela es más de

return(0);}

También probé la versión, pero no funcionó:

void start()

{ .....

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen();

.....}

.....

int ComprobarVolumen()

{ double volume=Alto[1]-Bajo[1]; //-------medida de la altura de la vela

if (volume <= CandleVolume*Point) return (1); //---------- si la vela es inferior a

if (volume > CandleVolume*Point) {Trade=false; return (-1);}//------------si la vela es superior a

return(0);}

 
dzhini:

No hay manera de que funcione.


Tal vez deberíamos hacer un indicador primero
 
Vinin:

Tal vez deberíamos hacer un indicador primero
¿y no hay manera de hacerlo sin él?
[Eliminado]  

¡Ayúdame! Cómo hago para que la impresión aparezca una vez, pero en cada tic tenga una caída de impresión.



while(OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS, MODE_TRADES)){
    if(OrderType() == OP_BUY)
     {
       Print ("-------   ",OrderSymbol()," "," BUY ",OrderLots()," trade was opened at ", OrderOpenPrice(),"; Stop loss:", OrderStopLoss(),
          "; Take profit:", OrderTakeProfit(), "; Ticket:", OrderTicket(),"; Open time:", OrderOpenTime());
                       return(0);
                }
    if(OrderType() == OP_SELL)
      {
       Print ("-------   ",OrderSymbol()," "," SELL ",OrderLots()," trade was opened at ", OrderOpenPrice(),"; Stop loss:", OrderStopLoss(),
          "; Take profit:", OrderTakeProfit(), "; Ticket:", OrderTicket(),"; Open time:", OrderOpenTime());
                      
       }
index++;
 
itum:

¡Ayúdame! Cómo hago para que la impresión aparezca una vez, pero en cada tickeo se me caiga la impresión.


Imprime esta huella en el momento de la apertura del pedido.
[Eliminado]  
sergeev:
imprimir esta información cuando se abre el pedido.


Necesito obtener información sobre las órdenes que ya han sido abiertas manualmente o por otro EA.

 
itum:


Necesito mostrar información sobre las órdenes existentes que ya han sido abiertas manualmente o por otro EA.

A continuación, muéstrelos en un comentario en la pantalla. Comentario
[Eliminado]  

¿Qué es este error? Si envío un correo de prueba desde el terminal obtengo un error

- 2010.12.28 18:23:55 Mail: 530 5.7.0 Debe emitir un comando STARTTLS primero. y1sm3265289fak.15

 
dzhini:
¿y no hay manera de hacerlo sin él?

Se puede, por supuesto, pero el indicador facilita la comprobación visual del algoritmo
 
itum:


Necesito mostrar información sobre las órdenes existentes que ya han sido abiertas manualmente o por otro EA.


Alternativamente, podemos hacer un contador de impresiones. Declaramos una variable entera. Entonces comprobamos si no hay pedidos, lo ponemos a cero. Entonces comprobamos si la variable es igual a cero y hay órdenes en el mercado, entonces imprimimos los datos de la orden e incrementamos esta variable en 1. En cuanto se cierren las órdenes, la variable volverá a ponerse a cero. Esto significa que el código esperará a que aparezca al menos una orden y mostrará información sobre ella en el registro.