[¡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?
 

¡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.
 
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
 

¿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.

Razón de la queja: