extern int k=1; extern int x; extern int y; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { int i; //---- ObjectsDeleteAll();
for(i=OrdersTotal()-1; i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS)) { if (OrderType() == OP_BUYSTOP) { OrderDelete(OrderTicket()); } if (OrderType() == OP_SELLSTOP) { OrderDelete(OrderTicket()); } } } //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int ticket1,ticket2, total,i; double price; string Symb; //1.выставление отложенных ордеров Symb=Symbol();
//+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int ticket1,ticket2, total,i;
¿Por qué no se cierra la otra orden pendiente?
Porque se trata de variables locales que ya en el segundo tick almacenan basura en lugar de billete
la fecha es la misma, del 15 de febrero al 16 de febrero
o cualquier otra fecha. las condiciones son todas iguales, pero cada vez el resultado es diferente
¿Cómo puedo saber si una orden pendiente se activa o no?
O en general - dos órdenes pendientes en diferentes direcciones, tan pronto como uno ha disparado, cerramos el segundo ... Estoy aburrido - ayúdame.
o cualquier otra fecha. las condiciones son todas iguales, pero cada vez el resultado es diferente
el diferencial se toma del mercado en el momento y se considera igual durante todo el periodo de prueba
Ahhhh... eso es, ya lo tengo, ¡muchas gracias! )
También hay un elemento de calidad de modelado en el informe, siempre es el 25%. ¿hay alguna forma de mejorarlo?
Ahhhh..., eso es, ya lo tengo, ¡muchas gracias! )
También hay un elemento de calidad de modelado en el informe, siempre es el 25%. ¿hay alguna forma de mejorarlo?
leer algunos artículos sobre el modelado
como https://www.mql5.com/ru/articles/1513
Lea algunos artículos sobre el modelado
Por ejemplo, https://www.mql5.com/ru/articles/1513
oh, gracias de nuevo, justo lo que necesitaba, gracias )
¿Cómo puedo saber si una orden pendiente se ha activado y comparar su ticket?
¿Cómo puedo saber si una orden pendiente se ha activado y comparar su ticket?
//+------------------------------------------------------------------+
//| Stas_helper_v01.mq4 |
//| DOC |
//| DR_GAD@mail.ru |
//+------------------------------------------------------------------+
#property copyright "DOC"
#property link "DR_GAD@mail.ru"
//--- input parameters
extern double Stop=15;
extern double Profit=35;
extern double Lots=1;
extern int k=1;
extern int x;
extern int y;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
int i;
//----
ObjectsDeleteAll();
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int ticket1,ticket2, total,i;
double price;
string Symb;
//1.выставление отложенных ордеров
Symb=Symbol();
if(k==1)
{
price=NormalizeDouble((Ask-Bid)/2,Digits);
ticket1=OrderSend(Symb,OP_BUYSTOP,Lots,Bid+((Stop*Point))+price,3,Bid+(Ask-Bid)/2,Bid+((Stop*Point))+price+Profit*Point, "Отложенник",1,0,Green);
if(ticket1<0)
{
Print("Ошибка!#",GetLastError());
return(0);
}
ticket2=OrderSend(Symb,OP_SELLSTOP,Lots,Bid-((Stop*Point))+price,3,Ask-(Ask-Bid)/2,Bid-((Stop*Point))+price-Profit*Point, "Отложенник2",2,0,Green);
if(ticket2<0)
{
Print("Ошибка!#",GetLastError());
return(0);
}
k=2;
}
//1.-----------------------------
//2. Если ордер открылся.
if (k==2)
{
OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
if (OrderType()==OP_BUY)
{
OrderDelete(ticket2);
k=3;
}
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
if (OrderType()==OP_SELL)
{
OrderDelete(ticket1);
k=3;
}
}
//2----------------------
return(0);
}
//+------------------------------------------------------------------+
¿Por qué no se cierra la otra orden pendiente?
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int ticket1,ticket2, total,i;
¿Por qué no se cierra la otra orden pendiente?