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

 
//Test.mqh
class A {
public:
        virtual int f() { return ( 1 ); }
};
//TestLib.mq5
#property library
#include "Test.mqh"
int g( A* pA ) export { return ( 5 ); }

//Test.mq5
#include "Test.mqh"
#import "TestLib.ex5"
        int g( A* pA );
#import
void OnStart()
{
        A* pA = new A();
        Print( g( pA ));
        delete( pA );
}
Пока всё нормально, но стоит вставить в Test.mq5 например
class B : public A {
};
как сразу возникает ошибка выполнения - не найдена g в TestLib.ex5
 
Silent:

datetime уже есть

ArraySize - кол-во баров, ArraySize-1 - последний бар, ArraySetAsSeries устанавливаете направление индексации, и номер ячейки = бару, слева или справа.

Тут проверочный скрипт лепил.

Спасибо! Я попробую
 

День добрый!

 

Для TimeCurrent указано, что она возвращает время последнего тика из MarketWatch. Пробую использовать, возвращает 20:30, хотя последний тик 22:59:57

Почему так может происходить?

Спасибо! 

 
ns_k:

День добрый!

 

Для TimeCurrent указано, что она возвращает время последнего тика из MarketWatch. Пробую использовать, возвращает 20:30, хотя последний тик 22:59:57

Почему так может происходить?

Спасибо! 

Из справки:

В обработчике OnTick() данная функция вернет время пришедшего обрабатываемого тика. В других случаях (например, вызов в обработчиках OnInit(), OnDeinit(), OnTimer() и так далее) это – время прихода последней котировки по любому символу, доступного в окне "Обзор рынка", то самое время, которое показано в заголовке этого окна. 

 
Lizar:

Из справки:

Спасибо! 

Тогда как в onCalculate получить время прихода последней котировки?

 
ns_k:

Спасибо! 

Тогда как в onCalculate получить время прихода последней котировки?

Послушал Time Pink Floyd'а и сообразил :)

if(SymbolInfoTick(Symbol(),last_tick))

     {

      Print(last_tick.time,": Bid = ",last_tick.bid,

            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);

     }

   else Print("SymbolInfoTick() failed, error = ",GetLastError());

   lEnd=last_tick.time; 
 

День добрый!

Похоже ArrayResize  не работает на этапе глобальной инициализации для статических членов классов/структур.

 

struct Test{
   static string arr[];
   Test() {
       ArrayResize(arr,5) ;
       if (ArraySize(arr)!=5) Alert("We have a bug"); 
    } 
}; 
Test test; 

 

У кого нибудь есть следующая проблема:

Версия и битность терминала

Windows 8, MetaTrader 5 - Alpari UK, Build 821, 64 bit.

Описание проблемы

индикатор работающий на H1 вызывает индикатор работающий на M1. Команда CopyBuffer копирует неверные данные. Эта проблема воспроизодится только в тестере стратегий. В терминале все данные копируются без ошибок. Индикатор M1 копирует high в первый буфер.

Последовательность действий

В тестере стратегий выбираю тестировать индикатор SampleCopyBuffer на H1. Задаю период с 2013-05-01 по 2013-07-07. Нажимаю старт и в логах читаю сообщения об ошибках.

Полученный результат

и в логах читаю сообщения об ошибках. Значения индикаторного буфера с M1 не совпадает со значением CopyHigh.

Ожидаемый результат

значения CopyBuffer и CopyHigh должны быть равны.

Дополнительные сведения

в терминале при запуске ошибки нет. Только в тестере стратегий. Пожалуйста, смотрите в приложении мои индикаторы. SampleHighs работает на периоде M1 и вызывается из индикатора SampleCopyBuffer который работает на H1.
Файлы:
 
denmax:

День добрый!

Похоже ArrayResize  не работает на этапе глобальной инициализации для статических членов классов/структур.

 

struct Test{
   static string arr[];
   Test() {
       ArrayResize(arr,5) ;
       if (ArraySize(arr)!=5) Alert("We have a bug"); 
    } 
}; 
Test test; 

Спасибо за сообщение, ошибку исправим. Ваш код будет выдавать ошибку об отсутствии static string arr[]; для того что бы ваш код работал правильно необходимо "разместить" статическую переменную до экземпляра test класса Test.

struct Test{
   static string arr[];
   Test() {
       ArrayResize(arr,5) ;
       if (ArraySize(arr)!=5) Alert("We have a bug"); 
    } 
};

string Test::arr[];

Test test; 
 

День добрый!

Пишу скрипт который должен анализировать некоторые характеристики пользовательского индикатора собственного производства :)

В справке указано использовать  IndicatorCreate

для получения хендла индикатора. Собственно почти все понятно, кроме того, что несколько странно выглядит то, что при нахождении индикатора на графике по которому запущен скрипт, необходимо создавать индикатор повторно. Может быть как-то можно получить в скрипте уже посчитанные значения индикатора? 

Спасибо! 

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