Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2465

 
Alex-1 #:
Да, только эти файлы 
Попробуйте у себя установить , если установится значит реально проблема в моей ОС

РЖАКА КАКАЯ !!!!!

MT4 при старте его удаляет...молча физически удаляет ex4 файл !!!

первый раз такое вижу и даже не слышал про подобное ранее !!!

 
Maxim Kuznetsov #:

РЖАКА КАКАЯ !!!!!

MT4 при старте его удаляет...молча физически удаляет ex4 файл !!!

первый раз такое вижу и даже не слышал про подобное ранее !!!

Сам веселюсь несколько дней уже с этого 
 
Alex-1 #:
Сам веселюсь несколько дней уже с этого 

посмотрел внимательнее - у него сигнатуры не похожи на *.ex4

 поэтому возможно и удаляется..как минимум - первые два байта (\r\n) там явно лишние. Возможно фокусы сжатия-разжатия и в какой-то момент запаковалось "как текст"

----

у обычных вот примерно так :

---

перезапросите у автора корректный вариант.

 
Maxim Kuznetsov #:

посмотрел внимательнее - у него сигнатуры не похожи на *.ex4

 поэтому возможно и удаляется..как минимум - первые два байта (\r\n) там явно лишние. Возможно фокусы сжатия-разжатия и в какой-то момент запаковалось "как текст"

----

у обычных вот примерно так :

---

перезапросите у автора корректный вариант.

У себя кто нибудь тестил ? Он хотя бы в навигаторе виден ?
 
Artyom Trishkin #:

Указанный Вами пример для другого - найти все сделки по уже известному идентификатору позиции.

А у Вас, понимаю, нужно найти идентификатор позиции и время её закрытия.

Лучше здесь смотрите пример: https://www.mql5.com/ru/docs/trading/historydealgetinteger

По найденным сделкам ищите сделки ENTRY_OUT и их идентификатор позиции.

В сделке ENTRY_OUT есть её время - это время закрытия позиции, идентификатор которой указан в DEAL_POSITION_ID

Подскажите, пожалуйста, почему после открытия нового счёта принт этой функции выдаёт имеющуюся сделку

// Дата начала текущего дня
    datetime d = iTime(_Symbol, PERIOD_D1, 0); 

    //--- запрашиваем всю историю
    if (!HistorySelect(d, TimeCurrent()))
      {
        Print("HistorySelect() failed. Error ", GetLastError());
        return;
      }     
    
    // Переменная для хранения количества закрытых позиций
    int pos_total = 0;
    
    
    //--- общее количество в списке сделок
    int deals=HistoryDealsTotal();
    //--- теперь обработаем каждую сделку
    ulong deal_ticket;            // тикет сделки
    ulong order_ticket;           // тикет ордера,по которому была совершена сделка
    datetime transaction_time;    // время совершения сделки 
    long deal_type ;              // тип торговой операции
    long position_ID;             // идентификатор позиции
    string deal_description;      // описание операции
    double volume;                // объем операции
    string symbol;                // по какому символу была сделка
    for(int i=0;i<deals;i++)
      {
        deal_ticket=               HistoryDealGetTicket(i);
        volume=                    HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
        transaction_time=(datetime)HistoryDealGetInteger(deal_ticket,DEAL_TIME);
        order_ticket=              HistoryDealGetInteger(deal_ticket,DEAL_ORDER);
        deal_type=                 HistoryDealGetInteger(deal_ticket,DEAL_TYPE);
        symbol=                    HistoryDealGetString(deal_ticket,DEAL_SYMBOL);
        position_ID=               HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);
        
        Print("");
        Print(deal_ticket);
        Print(volume);
        Print(transaction_time);
        Print(order_ticket);
        Print(deal_type);
        Print(position_ID);
        Print(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY));
        
        if (transaction_time > d)
          {
            // Получим результат сделки
            int deal_res = HistoryDealGetInteger(deal_ticket,DEAL_ENTRY);
            // Проверяем главное условие         
            if (deal_res == DEAL_ENTRY_IN || deal_res == DEAL_ENTRY_OUT) pos_total++;
          }
     }


2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1)

2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 2910453455
2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 0.0
2024.10.15 21:34:44.979  EA v1.1 (EURUSD,H1) 2024.10.15 21:25:45
2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 0
2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 2
2024.10.15 21:34:44.979  EA v1.1 (EURUSD,H1) 0
2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 0


UPD

Условие if (deal_res == DEAL_ENTRY_IN || deal_res == DEAL_ENTRY_OUT) срабатывает
 
Alex-1 #:
У себя кто нибудь тестил ? Он хотя бы в навигаторе виден ?
А есть что тестить? Что-то я пропустил
 
Maxim Kuznetsov #:

посмотрел внимательнее - у него сигнатуры не похожи на *.ex4

 поэтому возможно и удаляется..как минимум - первые два байта (\r\n) там явно лишние. Возможно фокусы сжатия-разжатия и в какой-то момент запаковалось "как текст"

----

у обычных вот примерно так :

---

Кто-то открыл в текстовом редакторе, нажал "Enter" и сохранил )

 
Alex-1 #:
Еще я заметил что новый после перезапуска терминала исчезает из папок

Я создал пустой текстовый файл и поменял расширение на .ex5. Запустил терминал. Он не удаляет этот файл. В навигаторе конечно его нет



 
Ivan Butko #:

Подскажите, пожалуйста, почему после открытия нового счёта принт этой функции выдаёт имеющуюся сделку


2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1)

2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 2910453455
2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 0.0
2024.10.15 21:34:44.979  EA v1.1 (EURUSD,H1) 2024.10.15 21:25:45
2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 0
2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 2
2024.10.15 21:34:44.979  EA v1.1 (EURUSD,H1) 0
2024.10.15 21:34:44.979 EA v1.1 (EURUSD,H1) 0


UPD

Условие if (deal_res == DEAL_ENTRY_IN || deal_res == DEAL_ENTRY_OUT) срабатывает
Из кэша. 
 

Подскажите, код индикатора в МТ4:

counted_bars = IndicatorCounted();

   if(counted_bars > 0)

      counted_bars--;

   limit = Bars - counted_bars; 

   for(int i=0; i<limit; i++)

     {


Правильно ли будет в МТ5:

   if(prev_calculated > 0)

      limit = prev_calculated-1;  

   limit = Bars(NULL, 0) - limit; 

   for(i=0; i<limit && !IsStopped(); i++)

     {