Tâche terminée
Spécifications
Добрый день. Написать функцию: работа с закрытыми сделками.
- найти последнюю закрытую сделку, получить номер бара открытия, номер бара закрытия, определить ее тип (покупка, продажа), далее мой код. Зафиксировать ID или тикет позиции (в mql5 так и не вкурил как правильно), чтобы при следующем вызове обрабатывать следующую закрытую последнюю сделку, обработанные сделки повторно не записывать в файлы.
Тип совершаемых сделок - открыл, через пару баров закрыл.
Нужно максимально быстро.
Нерабочий пример реализации:
void Write_data()
{
datetime start_time = StringToTime(TimeToString(TimeCurrent(), TIME_DATE));
if(!Fn_get_trade_history(start_time)){return;}
int deals = HistoryDealsTotal();
for(int i=0; i < deals; i++)
{
ulong deal_ticket = HistoryDealGetTicket(i);
if(deal_ticket > ticket_history)
{
ticket_history = deal_ticket;
ENUM_DEAL_ENTRY entry_type = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(deal_ticket,DEAL_ENTRY);
if(entry_type == DEAL_ENTRY_IN) {time_in = HistoryDealGetInteger(deal_ticket,DEAL_TIME); }
if(entry_type == DEAL_ENTRY_OUT){time_out = HistoryDealGetInteger(deal_ticket,DEAL_TIME);}
int BarShiftOpen = iBarShift(Symbol(),PERIOD_CURRENT,time_in,false);
int BarShiftClose = iBarShift(Symbol(),PERIOD_CURRENT,time_out,false);
double Opens = iOpen(Symbol(),PERIOD_CURRENT,BarShiftOpen);
double Closes = iClose(Symbol(),PERIOD_CURRENT,BarShiftClose);
if((ENUM_DEAL_TYPE)HistoryDealGetInteger(deal_ticket,DEAL_TYPE) == DEAL_TYPE_BUY)
{
if(Closes > Opens)
{
Hadle_2 = FileOpen("test.txt",FILE_WRITE|FILE_READ|FILE_ANSI,";");
FileSeek(Hadle_2,0,SEEK_END);
bWriteInfoToFile(Hadle_2, BarShiftOpen);
}
и.т.д