[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 132

 
Sergey_Rogozin:

Dann war's das wohl:

Ist das richtig?

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

Jetzt habe ich es verstanden.

Ich danke Ihnen.

 
IgorM:

es gibt keine solche eingebaute Funktion, Sie müssen sie selbst schreiben, ich habe hier ein Beispiel gezeigt:https://www.mql5.com/ru/forum/131277/page113


danke

 
IgorM:

Es gibt keine solche eingebaute Funktion, Sie müssen sie selbst schreiben, ich habe hier ein Beispiel gezeigt:https://www.mql5.com/ru/forum/131277/page113

Und wie kann man vorschreiben, dass der Expert Advisor nur diese eine Bedingung für die Eröffnung von Trades hat.
 

alsu:

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

Dann brauchen Sie size-1 nicht, da sonst beim ersten Durchlauf der Index 0-1 und die Array-Größe Null sein wird.

Dann sollte es so sein:

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

Dann brauchen Sie size-1 nicht, da sonst die Indizierung 0-1 ist und die Array-Größe beim ersten Durchlauf Null ist.

Dann geht es so:



Dort Initialisierung am Anfang des Programms int size=1;

 
IgorM:

eine solche eingebaute Funktion gibt es nicht, man muss sie selbst schreiben, ein Beispiel habe ich hier gezeigt:https://www.mql5.com/ru/forum/131277/page113

Warum werden beim Anbringen dieses Codes unglaublich viele Abschlüsse eröffnet?
 
alsu:

Es gibt eine Initialisierung am Anfang des Programms int size=1;


Ich habe es nicht verstanden... Ich erinnere mich nur an die erste, bei der die Größe ursprünglich Null war.
 
sto_mat:

Wie kommt es, dass, wenn ich diesen Code einfüge, eine unglaublich große Anzahl von Geschäften eröffnet wird?


Das kann nicht sein, denn im Code steht:

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


kein Handel https://book.mql4.com/ru/trading/ordersend

 
IgorM:


kann es nicht dasselbe sein, weil im Code:

kein Handel https://book.mql4.com/ru/trading/ordersend


Ich habe eingefügt

if(profit == 0 &&time == 0){//actions if history is clean

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


Rückkehr;
}
if(Gewinn >= 0){/// Aktion, wenn die letzte Bestellung gewinnbringend war, oder Null

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


Rückkehr;
}
if(profit < 0 ){//actions if(profit < 0 ){/actions if last order was unprofitable

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


Rückkehr;
}
zurück(0);
}

Grund der Beschwerde: