[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 132

 
Sergey_Rogozin:

Allora credo che sia tutto:

È giusto?

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

Ora ho capito.

Grazie.

 
IgorM:

non c'è una tale funzione incorporata, dovete scriverla voi stessi, ho mostrato un esempio qui:https://www.mql5.com/ru/forum/131277/page113


grazie

 
IgorM:

Non c'è una tale funzione incorporata, dovete scriverla voi stessi, ho mostrato un esempio qui:https://www.mql5.com/ru/forum/131277/page113

E come prescrivere che l'Expert Advisor abbia solo questa condizione per aprire i trade.
 

alsu:

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

Allora non avete bisogno di size-1, altrimenti la prima esecuzione indicizzerà 0-1 e la dimensione dell'array sarà zero.

Allora dovrebbe essere così:

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

Allora non avete bisogno di size-1, altrimenti l'indicizzazione sarà 0-1 e la dimensione dell'array sarà zero alla prima esecuzione.

Allora va così:



Ci inizializzazione all'inizio del programma int size=1;

 
IgorM:

non c'è una tale funzione incorporata, dovete scriverla voi stessi, ho mostrato un esempio qui:https://www.mql5.com/ru/forum/131277/page113

Perché quando allego questo codice apre un numero incredibilmente grande di trade?
 
alsu:

C'è un'inizializzazione all'inizio del programma int size=1;


Non l'ha preso... Ricordo solo il primo, dove la dimensione era originariamente zero.
 
sto_mat:

Perché quando allego questo codice apre un numero incredibilmente grande di trade?


Non può essere, perché nel codice

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);
}


niente scambi https://book.mql4.com/ru/trading/ordersend

 
IgorM:


non può essere lo stesso perché nel codice:

niente scambi https://book.mql4.com/ru/trading/ordersend


Ho inserito

if(profit == 0 &&time == 0){//azioni se la storia è pulita

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


ritorno;
}
if(profitto >= 0){// azione se l'ultimo ordine era redditizio, o zero

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


ritorno;
}
if(profitto < 0 ){//azioni if(profitto < 0 ){/azioni se l'ultimo ordine non era redditizio

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


ritorno;
}
ritorno(0);
}