Du kannst iPos_H doch nicht
NACH jedem Schleifendurchlauf verringern und gleichzeitig
im Schleifenkörper jedesmal erhöhen.
Außerdem ist dein Array unnötig groß. Beim ersten Durchlauf ist er so groß wie OrderHistoryTotal() und bei jedem weiteren +1.
Alle vorherigen Plätze im Array (also 0 - OrdersHistoryTotal()-1) sind bei dir leer.
Das ist echte Verschwendung.
Dein Code würde so "richtiger" sein.
Code:
int ArOrdersHistory[], arr_count = 0;
for (int iPos_H=OrdersHistoryTotal()-1; iPos_H > OrdersHistoryTotal() - 6; iPos_H--)
{
if (OrderSelect(iPos_H, SELECT_BY_POS, MODE_HISTORY))
{
arr_count++;
ArrayResize(ArOrdersHistory, arr_count);
ArOrdersHistory[arr_count-1] = OrderOpenPrice();
}
}