DEAL_TYPE
Rodzaj transakcji, niekoniecznie handlowej. Wpłata na rachunek też jest transakcją. Widnieje w historii jako
long HistoryDealGetInteger(ulong bilet, DEAL_TYPE);
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Poza DEAL_TYPE_BUY i DEAL_TYPE_SELL istnieje kilkanaście typów niehandlowych: operacje bilansowe, kredyt, prowizje rozliczane osobno, korekty, dywidendy i podatki.
Dlaczego to nie jest oczywiste
Wpłata na rachunek też jest transakcją. Widnieje w historii jako DEAL_TYPE_BALANCE, ma pusty symbol, zerowy wolumen i kwotę w polu DEAL_PROFIT. To jest najczęstsza przyczyna raportów, w których strategia „zarobiła" dokładnie tyle, ile wynosił depozyt początkowy.
Ta sama pułapka dotyczy dywidend na akcjach, korekt brokera i odsetek. Każdy z tych wpisów wpada do pętli po historii i dokłada się do wyniku, jeśli nikt nie sprawdził typu.
Kod
for(int i = 0; i < HistoryDealsTotal(); i++)
{
ulong bilet = HistoryDealGetTicket(i);
if(bilet == 0)
continue;
long typ = HistoryDealGetInteger(bilet, DEAL_TYPE);
//--- do wyniku strategii licza sie wylacznie transakcje handlowe
if(typ != DEAL_TYPE_BUY && typ != DEAL_TYPE_SELL)
{
PrintFormat("pomijam wpis niehandlowy typu %d, kwota %.2f",
(int)typ, HistoryDealGetDouble(bilet, DEAL_PROFIT));
continue;
}
}