retcode 10045
10045 — TRADE_RETCODE_FIFO_CLOSE
Pozycje trzeba zamykać w kolejności ich otwarcia. Zasada obowiązująca na rachunkach amerykańskich.
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Co ten kod znaczy
Rachunek pracuje w trybie FIFO: najstarsza pozycja na instrumencie musi zostać zamknięta jako pierwsza. Próba zamknięcia nowszej kończy się odmową.
Skąd się bierze
- strategia zamykająca pozycję najbardziej zyskowną zamiast najstarszej
- ekspert pisany pod rachunek europejski, uruchomiony u brokera amerykańskiego
- zamykanie po numerze magicznym bez uwzględnienia kolejności
Co z tym zrobić
Tryb rachunku sprawdzisz jednym wywołaniem:
if(AccountInfoInteger(ACCOUNT_FIFO_CLOSE))
Print("Rachunek wymaga zamykania w kolejności FIFO.");Na takim rachunku pozycje trzeba posortować po czasie otwarcia (POSITION_TIME) i zamykać od najstarszej. Logika typu „zamknij tę, która zarabia" wymaga przepisania — inaczej ekspert będzie działał u jednego brokera i milczał u drugiego.