Przejdź do treści
MQL5 · MetaTrader 5 · po polsku
kod odczarowany

MQL5 / Błędy

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.

Powiązane