[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 132

 
Sergey_Rogozin:

Então, acho que é isso:

Isso é verdade?

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

Agora eu entendi.

Obrigado.

 
IgorM:

não existe tal função integrada, você mesmo tem que escrevê-la, eu mostrei um exemplo aqui:https://www.mql5.com/ru/forum/131277/page113


obrigado

 
IgorM:

Não existe tal função integrada, você mesmo tem que escrevê-la, eu mostrei um exemplo aqui:https://www.mql5.com/ru/forum/131277/page113

E como prescrever que o Expert Advisor tenha apenas esta condição para abrir negócios.
 

alsu:

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

Então você não precisa do tamanho 1, caso contrário, a primeira execução indexará 0-1 e o tamanho da matriz será zero.

Então, deveria ser assim:

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

Então você não precisa do tamanho 1, caso contrário a indexação será 0-1 e o tamanho da matriz será zero na primeira execução.

Então, é assim:



Há inicialização no início do programa int size=1;

 
IgorM:

não existe tal função integrada, você mesmo tem que escrevê-la, eu mostrei um exemplo aqui:https://www.mql5.com/ru/forum/131277/page113

Por que quando eu anexar este código ele abrirá um número inacreditavelmente grande de negócios?
 
alsu:

Há uma inicialização no início do programa int size=1;


Não o pegou... Só me lembro do primeiro, onde o tamanho era originalmente zero.
 
sto_mat:

Por que é que quando eu anexar este código ele abre um número inacreditavelmente grande de negócios?


Não pode ser, porque no 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);
}


sem negócios https://book.mql4.com/ru/trading/ordersend

 
IgorM:


não pode ser o mesmo porque no código:

sem negócios https://book.mql4.com/ru/trading/ordersend


Eu inseri

if(profit == 0 &&time == 0){//ações se o histórico estiver limpo

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


retornar;
}
if(profit >= 0){// ação se a última ordem foi lucrativa, ou zero

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


retornar;
}
if(lucro < 0 ){//ações if(lucro < 0 ){/ações se a última encomenda não foi rentável

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


retornar;
}
retorno(0);
}

Razão: