Ошибки, баги, вопросы - страница 3619

 
fxsaber #:
Доказательство.

Чтобы иметь возможность удалить ордера в OnDeinit, требуется использовать наследование (причем без виртуальности, а тупо перегрузкой).

К сожалению, у меня мало знаний в программировании, поэтому я не ищу сложности, чтоб их потом преодолевать.

В тестере, раньше удалял позиции в OnTester, там CTrade работает норм. Сейчас, если я ничего не путаю, в тестере, когда мы заходим в  OnTester, позиции уже все закрыты.

У меня ни разу не было необходимости удалять ордера или позиции из  OnDeinit. 

Собственно, я ничего не пытаюсь доказать, просто сказал, что  CTrade интуитивно понятен. Всё.

 
Aleksandr Slavskii #:

У меня ни разу не было необходимости удалять ордера или позиции из  OnDeinit.

Кто-то в терминале (не в тестере) хочет, чтобы все выставленные отложки удалялись, когда выгружается советник.
 
Прошу помочь, сломал все копья. Проблема где-то на поверхности.
#include <WinAPI\WinAPI.mqh>

#define GENERIC_READ  0x80000000
#define SHARE_READ    1
#define OPEN_EXISTING 3

template <typename T>
int FileLoadWinAPI( const string FileName, T &Buffer[] )
{
  int Res = -1;
  const HANDLE handle = kernel32::CreateFileW(FileName, GENERIC_READ, SHARE_READ, 0, OPEN_EXISTING, 0, 0);

  if (handle != INVALID_HANDLE)
  {
    long Size;
    kernel32::GetFileSizeEx(handle, Size);

    uint Read;

    ArrayResize(Buffer, (int)Size / sizeof(T));

    kernel32::ReadFile(handle, Buffer, (uint)Size / sizeof(T), Read, 0);
    Res = ArrayResize(Buffer, Read);

    kernel32::CloseHandle(handle);
  }

  return(Res);
}

void OnStart()
{
  ushort Words1[];
  Print(FileLoadWinAPI(::TerminalInfoString(TERMINAL_COMMONDATA_PATH) + "\\Files\\temp.txt", Words1));   

  ushort Words2[];
  Print(FileLoad("temp.txt", Words2, FILE_COMMON));  

  Print(ShortArrayToString(Words1, 1)); // D:\Program FilS\METATRADER 5
  Print(ShortArrayToString(Words2, 1)); // D:\Program Files\MetaTrader 5
}

Написал через WinAPI FileLoad-аналог. А он первую половину файла читает правильно, вторую - нет.

Штатный FileLoad работает правильно.


Для воспроизведения нужно поместить прикрепленный файл в Common-папку.

Где ошибка?

Файлы:
temp.txt  1 kb
 
fxsaber #:
Прошу помочь, сломал все копья. Проблема где-то на поверхности.

...

Где ошибка?

Попробуйте так:

    if(kernel32::ReadFile(handle, Buffer, (uint)Size, Read, 0)) {
      Res = ArrayResize(Buffer, Read / sizeof(T));
    }
 
Anatoli Kazharski #:

Попробуйте так:

Спасибо огромное!

 

Как это интерпретировать?


 
Vitaly Muzichenko #:

Как это интерпретировать?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 4040: Улучшения и исправления

fxsaber, 2023.11.18 14:23

Эта хрень насильно исправлена у некоторых брокеров через сторонний софт: выставляете лимитник по текущий цене, и он тут же акцептируется. Некоторые пошли дальше - когда цена доходит до TP, то никто не ждет, пока MT5 создаст соответствующий маркет-ордер, а сразу идет акцепт TP. Итого - быстрое исполнение: TP-сделка без ордера.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопрос о функции OnTradeTransaction

fxsaber, 2023.03.28 10:24

На скрине сделки, порожденные тейками позиций. При этом тейки не представлены в виде MT5-ордеров.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2023.07.21 22:59

// Список изменений:
// 21.07.2023
//   Fix: Исправлена OrderLotsOpen() для удаленных отложенных ордеров.
//   Add: Обрабатывается ситуация, когда торговая MT5-сделка не имеет MT5-ордера.
//   Fix: Корректное определение OrderClosePriceRequest() при отсутствии цены у SL/TP-ордера.
//   Add: Макрос MT4ORDERS_AUTO_VALIDATION позволяет автоматически проходить проверку Маркет-продуктов.
//   Add: Макрос MT4ORDERS_ORDERS_SORT формирует сортированную по времени закрытия/удаления историю MT4-ордеров.
 
Vitaly Muzichenko #:

Как это интерпретировать?


fxsaber #:

Видимо, происходит закрытие не через взаимозачёт договоров, а через досрочное расторжение, поэтому всего один договор-сделка.

 
Aleksey Vyazmikin #:

Видимо, происходит закрытие не через взаимозачёт договоров, а через досрочное расторжение, поэтому всего один договор-сделка.

Это технический форум.

 
fxsaber #:

Это технический форум.

Так юридически значимые действия осуществляются, а программа только их исполняет и отображает.