retcode 10046
10046 — TRADE_RETCODE_HEDGE_PROHIBITED
Rachunek nie pozwala trzymać jednocześnie pozycji długiej i krótkiej na tym samym instrumencie.
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Co ten kod znaczy
Zabezpieczanie pozycji przeciwstawnych jest wyłączone. Dotyczy części rachunków amerykańskich i rachunków w trybie netting.
Skąd się bierze
- strategia otwierająca pozycję przeciwną zamiast zamykać istniejącą
- ekspert pisany pod rachunek hedging, uruchomiony na netting
- dwie strategie na jednym instrumencie, handlujące w przeciwnych kierunkach
Co z tym zrobić
Sprawdź tryb rachunku i dostosuj logikę:
long tryb = AccountInfoInteger(ACCOUNT_MARGIN_MODE);
bool hedging = (tryb == ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
if(!hedging && PositionSelect(_Symbol))
{
//--- na netting sygnał przeciwny zamyka pozycję, nie otwiera drugiej
ZamknijPozycje();
return;
}To jest ta sama różnica, która sprawia, że kod przepisany z MQL4 zachowuje się inaczej, niż zakładał autor — opisaliśmy ją przy migracji OrderSend.