Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 19.07.17
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Über den Button # bekommst Du diesen Code (nach Korrekturen! und Bereinigung):

Code:
double ArrayName[];
int iPos = OrdersTotal();

ArrayResize(ArrayName, iPos);
ArrayInitialize(ArrayName, 0);

for (iPos = 0; iPos < OrdersTotal(); iPos++) {
   if (OrderSelect(iPos, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY) {
            ArrayName[iPos] = OrderOpenPrice();
         }
      }
   }
}
Aufgrund der Tatsache, dass das Array über alle möglichen offenen MarketOrders und evtl. gesetzten PendingOrders deklariert wird, aber auf der anderen Seite nach der Selektion mittels der MagicNumber nachselektiert wird, würde ich auch das Array dynamisch nur so groß deklarieren wie nötig. Beim Ermitteln des minimalen Preises der Sellorders würde, falls ein Feld den Wert 0 hat, weil das Array unnötig zu groß ist, dann als kleinsten Wert auch 0 ausgeben und nicht den minimalsten OpenPrice:

Code:
double ArrayName_Buy[];
double ArrayName_Sell[];
int cnt_buy = 0, cnt_sell = 0;
double max_price = 0, min_price = 0;

for (int iPos = 0; iPos < OrdersTotal(); iPos++) {
   if (OrderSelect(iPos, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY) {
            ArrayResize(ArrayName_Buy, cnt_buy+1);
            ArrayName_Buy[cnt_buy] = OrderOpenPrice();
            cnt_buy++;
         }
         if (OrderType() == OP_SELL) {
            ArrayResize(ArrayName_Sell, cnt_sell+1);
            ArrayName_Sell[cnt_sell] = OrderOpenPrice();
            cnt_sell++;
         }
      }
   }
}

if (cnt_buy > 0) {
   int max_value_idx = ArrayMaximum(ArrayName_Buy, WHOLE_ARRAY, 0);
   max_price = ArrayName_Buy[max_value_idx];
}
if (cnt_sell > 0) {
   int min_value_idx = ArrayMinimum(ArrayName_Sell, WHOLE_ARRAY, 0);
   min_price = ArrayName_Sell[min_value_idx];
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.