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

 
Xaoss1990:

Ayuda, por favor... He estado luchando durante días....

¿Dónde está el código? ¿Cómo puedo ayudar?
 
Roger:
¿Dónde está el código? ¿Cómo puedo ayudar?

Aquí está la parte del código donde hacemos los tratos:

//+------------------------------------------------------------------+
//+----------------------CIERRE UN PUNTO---------------------+
//+------------------------------------------------------------------+
if (POINT_BUY_M15 >= Strgh_UP_M15 &&& POINT_BUY_H1 >= Strgh_UP_H1 && POINT_BUY_H4 >= Strgh_UP_H4 && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 5, 0, 0, "Mi pedido #", 111, 0, Blue);
if(ticket < 0)
{
Print("Pedido no establecido. Error - #",GetLastError());
return(0);
}
}

//+------------------------------------------------------------------+
//+-------------------------СТАВИМ СПОП ЛОСС-------------------------+
//+------------------------------------------------------------------+
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();

if (POINT_BUY_M15 < Strgh_UP_M15 || POINT_BUY_H1 < Strgh_UP_H1 || POINT_BUY_H4 < Strgh_UP_H4 && OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)
{
close = 1;
}
if (close == 1)
{
if (OrderClose(OrderTicket(), lots, Bid, 5, Yellow) == true) Alert("OrderTicket() = ", OrderTicket(), ", lots = ", lots, ", Bid = ", Bid);
else Print ("Stop not set;)

}

//+------------------------------------------------------------------+
//+----------------------CONCLAIM SALE---------------------+
//+------------------------------------------------------------------+
if (POINT_SELL_M15 >= Strgh_DOWN_M15 && POINT_SELL_H1 >= Strgh_DOWN_H1 && POINT_SELL_H4 >= Strgh_DOWN_H4 && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 5, 0, 0, 0, "My order #", 222, 0, Green);
if(ticket < 0)
{
Print("Order not set. Error - #",GetLastError());
return(0);
}
}
//------------------------------------------------Imprimir los parámetros a seleccionar----------------------------------------------------
//Imprimir("Vender M15 = ", POINT_SELL_M15, ", Vender H1 = ", POINT_SELL_H1, ", Vender H4 = ", POINT_SELL_H4, ", número de orden = ", ticket);
//------------------------------------------------Печать параметров на выбор----------------------------------------------------

//+------------------------------------------------------------------+
//+-------------------------СТАВИМ СПОП ЛОСС-------------------------+
//+------------------------------------------------------------------+
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();

if (POINT_SELL_M15 < Strgh_DOWN_M15 || POINT_SELL_H1 < Strgh_DOWN_H1 || POINT_SELL_H4 < Strgh_DOWN_H4 && OrdersTotal() == 1 && Magic == 222 && OrderType( ) == 1)
{
close = 1;
}
if (close == 1)
{
OrderClose(OrderTicket(), lots, Ask, 5, Red);
}

 
Esta no es la parte del código donde podría haber un error.
 
Roger:
Esta no es la parte del código donde podría haber un error.

em.... y el resto del código está calculando los valores ( POINT_BUY_M15, POINT_BUY_H, POINT_BUY_H4, POINT_SELL_M15, POINT_SELL_H, POINT_SELL_H4 ) para hacer operaciones, funciona correctamente... lo he comprobado. es simple allí....

 
Si el error estuviera aquí, los registros dirían "Stop not set", pero no es el caso.
 
Por favor, avisa. Una orden se abrió por una determinada condición y se cerró por arrastre. Cómo puedo hacer que una posición no se abra de nuevo en esta vela si la condición es verdadera.
 

Se está comprobando una condición en la función init:

...
extern int proc_zahlest=50;

int init() 
{
if (proc_zahlest>100)
{
Alert("Параметр proc_zahlest д.б. <100% !!!");
}
return(0);
}

Cómo detener la ejecución del indicador (evitar que se ejecute la función de inicio) si proc_zahlest>100

 
prom18:
Por favor, avisa. Una orden se abrió por una determinada condición y se cerró por arrastre. Cómo puedo hacer que una posición no se abra de nuevo en esta vela si la condición es verdadera.


Si sólo se puede abrir un pedido, es fácil

start()
{
static int newbar;
if(newbar==Time[0])return(0);
if(OrdersTotal()>0)newbar=Time[0];
...
 
Roger:


Si sólo se puede abrir un pedido, es fácil

Por favor, explique con palabras la lógica de lo escrito.
 
prom18:
Por favor, explique con palabras la lógica de lo escrito.

Cuando se abre una orden, se asigna a la variable newbar el valor de la hora de apertura de la barra actual. En los siguientes ticks, hasta la nueva barra, el EA se bloqueará. Si la orden aún no se ha cerrado, la operación se repite. Y así seguimos haciéndolo hasta que se cierre la orden. Luego, en la siguiente barra, el Asesor Experto está listo para nuevas aperturas.
Razón de la queja: