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

 
Alexander Slavskii #:

No, your recommendation to insert IndicatorRelease(indicator_handle);

If you uncomment the selected one, then the handle seems to be there, but CopyBuffer returns only zeros, and with the commented out everything is fine, it returns the current price.

This means we have a bug in OnDeinit and the architecture has nothing to do with it.

Спасибо. Наконец-то кто-то взялся за эту проблему.

 
Aleksey Vyazmikin #:

Это "Уровень стопов" в спецификации для обеих ситуаций?

это уровень заморозки действий с отложенным ордером, когда цена близко от него. У каждого брокера свой.

 
Aleksandr Slavskii #:

Значит в OnDeinit мы имеем баг и архитектура тут ни при чём.

Точнее баг не в  OnDeinit, а баг при удалении индикатора с графика, в  OnDeinit он даже не заходит.

Индикатор удаляется только после закрытии терминала.

FP      0       23:53:04.585    Terminal        MetaTrader 5 x64 build 4158 started for MetaQuotes Software Corp.
LE      0       23:53:04.586    Terminal        Windows 10 build 19044, 24 x Intel Xeon  E5-2678 v3 @ 2.50GHz, AVX2, 23 / 29 Gb memory, 29 / 237 Gb disk, UAC, GMT+7
GF      0       23:53:04.586    Terminal        C:\Users\Isrander\AppData\Roaming\MetaQuotes\Terminal\E98C5173D8A802F9B8F133E800FDDE2B
DG      0       23:53:06.456    Network '5007313942': authorized on MetaQuotes-Demo through Access Point EU 3 (ping: 99.83 ms, build 4158)
PJ      0       23:53:06.456    Network '5007313942': previous successful authorization performed from 146.158.111.229 on 2024.01.29 18:48:50
NG      0       23:53:07.310    Network '5007313942': terminal synchronized with MetaQuotes Software Corp.: 0 positions, 0 orders, 142 symbols, 0 spreads
FK      0       23:53:07.310    Network '5007313942': trading has been enabled - hedging mode
KH      0       23:53:14.511    MQL5.community  activated for 's22aa', balance: 28.98
CM      0       23:53:14.776    MQL5.chats      activated for 's22aa'
QS      0       23:53:19.504    Indicators      custom indicator test (EURUSD,H1) loaded succesfully
здесь должно быть удаление индикатора, но индикатор после удаления с графика продолжил работать
удалился только после закрытия терминала
GS      0       23:53:34.996    Terminal        exit with code 0
MR      0       23:53:35.001    Network '5007313942': disconnected from MetaQuotes-Demo
MO      0       23:53:35.020    Indicators      custom indicator test (EURUSD,H1) removed
JG      0       23:53:35.099    Terminal        stopped with 0
HG      0       23:53:35.229    Terminal        shutdown with 0
 
Valeriy Yastremskiy #:

это уровень заморозки действий с отложенным ордером, когда цена близко от него. У каждого брокера свой.

Удивительно, что на других ДЦ я с этим не сталкивался... не так много менял ДЦ за всё время.

А в чём обоснование таких запретов собственно? Ведь это скорей подтверждение кухонности - удобно делать шпильки искусственные.

 
Aleksey Vyazmikin #:

Удивительно, что на других ДЦ я с этим не сталкивался... не так много менял ДЦ за всё время.

А в чём обоснование таких запретов собственно? Ведь это скорей подтверждение кухонности - удобно делать шпильки искусственные.

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

 
Dominik Egert #:

Также проверьте этот код:

Постоянно не удается вызвать OnDeinit при удалении.

Пожалуйста, используйте правильную сигнатуру функции.

void OnDeinit( const int reason )
 
Aleksandr Slavskii #:

Нет, не работает ваша рекомендация вставить IndicatorRelease(indicator_handle);

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   double buff[];
   indBuff[rates_total - 1] = close[rates_total - 1];
   if(indicator_handle != INVALID_HANDLE)
     {
      CopyBuffer(indicator_handle, 0, 0, 1, buff);
      IndicatorRelease(indicator_handle);
      Print(buff[0]);
     }
   return(rates_total);
  }


fxsaber #:

Никаких проблем. Вам нужно немного въехать в архитектуру, тогда все станет просто сразу.

 
fxsaber #:

Пожалуйста, используйте правильную сигнатуру функции.

с верной сигнатурой индикаторы отдавшие INIT_FAILED остаются висеть в списке окна индикаторов.

может быть всего-то ошибка при построении списков индикаторов, кто-же знает :-) нехорошо это..

по идее, отчасти проверить : скрипт/советник/другой_индикатор получающий (и пытающийся использовать) из чарта хендл индикатора, который заведомо ранее выдал INIT_FAILED.

но такие тесты должны были делать MQ и со своей внутренней кухней. У нас только косвенные признаки большого бага

 
Maxim Kuznetsov #:

с верной сигнатурой индикаторы отдавшие INIT_FAILED остаются висеть в списке окна индикаторов.

Код?
 

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

Ошибки, баги, вопросы

fxsaber, 2024.01.26 23:38

Прошу помощи по WinAPI.
#include <WinAPI\WinAPI.mqh>

#define GA_ROOT          0x0002
#define LVM_GETITEMCOUNT 0x1004

void OnStart()
{  
  HANDLE Handle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT);
  Handle = user32::GetDlgItem(Handle, 0xE81E);
  Handle = user32::GetDlgItem(Handle, 0x804E);
  Handle = user32::GetDlgItem(Handle, 0x28ED);

  long PrevCount = 0;
  
  while (!IsStopped())
  {
    const long Count = user32::SendMessageW(Handle, LVM_GETITEMCOUNT, 0, 0); // Количество элементов во вкладке Journal.
    
    if (Count != PrevCount)     // Если количество записей во вкладке Journal изменилось,   
      Alert(PrevCount = Count); // алертим.
      
    Sleep(100);
  }
}

Этот скрипт алертит, когда во вкладке Journal Тестера меняется количество записей.


Если нажимать на кнопку Start при активной Journal-вкладке, то скрипт правильно алертит.

Если же выбрана другая вкладка, то алерта нет, пока не переключишься на Journal.

Как заставить обновляться Journal, когда он не выбран (или выбрать его, чтобы он обновился)?


Просьба поделиться скринами панельки Тестера.

Хочется понять, зависят ли ее размеры от конфигурации ОС. Спасибо.

Причина обращения: