DEAL_MAGIC
Numer magiczny eksperta, którego zlecenie dało tę transakcję. Transakcje wygenerowane przez serwer — zamknięcie przez stop lossa, take
long HistoryDealGetInteger(ulong bilet, DEAL_MAGIC);
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Numer dziedziczony ze zlecenia. Pozwala policzyć wynik konkretnej strategii wśród transakcji całego rachunku.
Dlaczego to nie jest oczywiste
Transakcje wygenerowane przez serwer — zamknięcie przez stop lossa, take profit albo stop out — dziedziczą numer magiczny pozycji. To dobrze: raport strategii obejmuje również wyjścia, których ekspert nie zlecał świadomie.
Gorzej z operacjami bilansowymi: mają numer zero, tak samo jak transakcje ręczne i jak ekspert z niewypełnionym polem. Filtr po numerze magicznym równym zeru zbiera wtedy wpłatę, wypłatę i wszystko, co użytkownik zrobił ręcznie.
Kod
//--- wynik jednej strategii, z pominieciem wpisow niehandlowych
double WynikStrategii(const ulong magic, const int dni)
{
if(!HistorySelect(TimeCurrent() - dni * 86400, TimeCurrent()))
return 0.0;
double suma = 0.0;
for(int i = 0; i < HistoryDealsTotal(); i++)
{
ulong t = HistoryDealGetTicket(i);
if(t == 0)
continue;
long typ = HistoryDealGetInteger(t, DEAL_TYPE);
if(typ != DEAL_TYPE_BUY && typ != DEAL_TYPE_SELL)
continue;
if(HistoryDealGetInteger(t, DEAL_MAGIC) != (long)magic)
continue;
suma += HistoryDealGetDouble(t, DEAL_PROFIT)
+ HistoryDealGetDouble(t, DEAL_COMMISSION)
+ HistoryDealGetDouble(t, DEAL_SWAP);
}
return suma;
}