[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 132

 
Sergey_Rogozin:

Entonces supongo que eso es todo:

¿Es eso cierto?

int start()
 {
   ArrayResize(ValueArr,size);
   ValueArr[size-1] = GetValue();
   size++;
   return();
 }
 
alsu:

Ahora lo entiendo.

Gracias.

 
IgorM:

no existe tal función incorporada, tienes que escribirla tú mismo, mostré un ejemplo aquí:https://www.mql5.com/ru/forum/131277/page113


gracias

 
IgorM:

No existe tal función incorporada, tienes que escribirla tú mismo, mostré un ejemplo aquí:https://www.mql5.com/ru/forum/131277/page113

Y cómo prescribir que el Asesor Experto tenga sólo esta condición para abrir operaciones.
 

alsu:

int start()
 {
   ArrayResize(ValueArr,size);
   ValueArr[size-1] = GetValue();
   size++;
   return();
 }

Entonces no se necesita size-1, ya que de lo contrario la primera ejecución indexará 0-1 y el tamaño del array será cero.

Entonces debería ser así:

int start()
 {
   size++;
   ArrayResize(ValueArr,size);
   ValueArr[size-1] = GetValue();
   return();
 }
 
artmedia70:

Entonces no necesitas size-1, de lo contrario la indexación será 0-1 y el tamaño del array será cero en la primera ejecución.

Entonces es así:



Hay una inicialización al principio del programa int size=1;

 
IgorM:

no existe tal función incorporada, tienes que escribirla tú mismo, mostré un ejemplo aquí:https://www.mql5.com/ru/forum/131277/page113

¿Por qué cuando adjunto este código se abre un número increíblemente grande de operaciones?
 
alsu:

Hay una inicialización al principio del programa int size=1;


No lo cogí... Sólo recuerdo la primera, en la que el tamaño era originalmente cero.
 
sto_mat:

¿Por qué cuando adjunto este código se abre un número increíblemente grande de operaciones?


No puede ser, porque en el código:

double history(){
int time = 0;double profit = 0;//обьявляем необходимые нам переменные куда мы положим интересующие нас характеристики ордера
for(int i = OrdersHistoryTotal();i>=0;i--){// Перебираем все закрытые ордера
  if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){//если ордер с таким номером (i) в списке закрытых ордеров есть ( не путать с тикетом)
    if(OrderSymbol() == Symbol()){//если выбранный ордер был открыт по нашей валютной паре
      if(time<OrderCloseTime()){//(сравниваем его с хранящимся в пероеменной time) 
        time=OrderCloseTime();//если время закрытия ордера больше - ложим его в переменную
        profit=OrderProfit();//и заодно запоминаем прибыль ордера
      }
    }
  }
}
//по окончании этой процедуры в наших переменных будут сидет наибольшее время закрытия, и его профит. Или по нулям если история чистая.
//теперь мы можем выставлять условия в зависимости от результата процедуры
   
if(profit == 0 &&time == 0){//действия если история чистая

}
if(profit >= 0){//действия если последний ордер был прибыльным, или нулевым

}
if(profit <  0 ){//действия если последний ордер был убыточным

}
return(0);
}


no hay intercambios https://book.mql4.com/ru/trading/ordersend

 
IgorM:


no puede ser el mismo porque en el código

no hay intercambios https://book.mql4.com/ru/trading/ordersend


He insertado

if(profit == 0 &&time == 0){//acciones si el historial está limpio

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,Bid-6*Point);


volver;
}
if(profit >= 0){// acción si el último pedido fue rentable, o cero

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-12*Point,Bid+12*Point);


volver;
}
if(profit < 0 ){/acciones if(profit < 0 ){/acciones si el último pedido no fue rentable

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+15*Point,Bid-15*Point);


volver;
}
return(0);
}

Razón de la queja: