![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Sí señor, sólo 1 comercio hecho, pero su ejemplo era grande, será muy útil como base para crear nuevos eas
void OnTick()
{
double up = iIchimoku(NULL,5,9,26,52,3,0),
down = iIchimoku(NULL,5,9,26,52,4,0);
static bool was_above = true;
bool is_above = (MathMax(up,down)< Bid);
if(!trade_made && !was_above && is_above && open_orders()<1)
{
if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
{
printf("OrderSend() failed. Error code: %i",GetLastError());
}
else t rade_made=true;
}
was_above = is_above;
}
int open_orders()
{
int count = 0;
for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
{
if(!OrderSelect(i,SELECT_BY_POS)) continue; // select the order
if(OrderSymbol() != _Symbol) continue; // optional check for same symbol
if(OrderMagicNumber()!= magic_no) continue; // optional check for magic number
if(OrderType() < 2) count++; // 0 == OP_BUY and 1 == OP_SELL
}
return(count);
}
Marco: He probado tu nueva actualización, pero no hace ninguna operación, he puesto tal y como has puesto la última, solo he quitado la segunda int, en el ticket. Pero la primera operación nunca se hace en el probador de estrategias, ¿qué hacer ahora?
Debería colocar una operación porque:
if (MathMax (up,down) < Bid )
ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
//| One Order.mq4 |
//| Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
bool order=0;int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(order==0)
{
double up=iIchimoku(NULL,5,9,26,52,3,0);
double down=iIchimoku(NULL,5,9,26,52,4,0);
{
if(MathMax(up,down)<Bid)
{
ticket=OrderSend(NULL,0,0.01,Ask,3,Bid-150*Point,Bid+100*Point);
{
if(ticket>-1)
{
order=1;
}
}
}
}
}
}
//+------------------------------------------------------------------+
Acabo de probarlo y colocó UNA orden...
Muchas graciashonest_knave eso es exactamente lo que necesitaba, estaré siempre en deuda,
Gracias también al Sr. Marco por su ayuda.
Muchas graciashonest_knave eso es exactamente lo que necesitaba, estaré siempre en deuda,
De nada. ¿Pero está de acuerdo en que la respuesta rara vez es tan sencilla como parece? Lo que puede explicar algunos de los comentarios aquíCODE Help( Urgente).
ya he quitado ese comentario, un simple EA es un problema para mí, no sé nada realmente para decir algo
Oye, todos seguimos aprendiendo. Y tu corazón estaba en el lugar correcto.
Me alegro de que hayas arreglado tu problema.
Hay muchas maneras de hacer lo mismo... Marco y yo abordamos el problema desde diferentes direcciones, y ambas son igualmente correctas.
Buena suerte![](https://c.mql5.com/3/116/images__2.png)
Si Sr.Marco vd Heijden funciona igual que el de honest_knave, lo he intentado de nuevo basandome en el ultimo codigo que usted dispone, funciono muy bien, tomare ambas respuestas, y usare la suya para este script ya que es mas similar a la idea original.
Gracias por tu ayuda
Creo que, a partir del código que usted publica, el EA no abrirá más órdenes de nuevo. A menos que u quitar la EA de la tabla, y volver a adjuntar de nuevo (para inicializar). Supongo que ese era el propósito?
Ahora esperemos que elija la dirección correcta :)
Leí en algún lugar acerca de un tipo que se olvidó de que todavía tenía una posición abierta y adivina lo que pasó ... $$$$$
Creo que, a partir del código que publica, el EA no abrirá más órdenes de nuevo. A no ser que elimine el EA del gráfico, y lo vuelva a colocar (para inicializarlo). ¿Supongo que ese era el propósito?