Не могу запустить простой советник с [ nquotes ] в Visual Studio 2015, MetaTrader Terminal 4

Не могу запустить простой советник. Wnd.dll — файл из папки "bin", созданный с помощью VS2015.

Wnd.dll находится в правильной папке "MQL4\Libraries\".
Поэтому я попытался запустить этот советник в режиме реального времени, но ничего не произошло. Пожалуйста, помогите, что я делаю неправильно.

#property copyright "(c) 2012-2015 Brainroom Ltd."
#property link "http://www.nquotes.net"

#import     "nquotes/nquoteslib.ex4"
    int      nquotes_setup(                   string className, string assemblyName );
    int      nquotes_init();
    int      nquotes_start();
    int      nquotes_deinit();
    double   nquotes_on_tester();
    int      nquotes_on_timer();
    int      nquotes_on_chart_event(          int id, long lparam, double dparam, string sparam );

    int      nquotes_set_property_bool(       string name, bool     value );
    int      nquotes_set_property_int(        string name, int      value );
    int      nquotes_set_property_double(     string name, double   value );
    int      nquotes_set_property_datetime(   string name, datetime value );
    int      nquotes_set_property_color(      string name, color    value );
    int      nquotes_set_property_string(     string name, string   value );
    int      nquotes_set_property_adouble(    string name, double  &value[], int count = WHOLE_ARRAY, int start = 0 );

    bool     nquotes_get_property_bool(       string name );
    int      nquotes_get_property_int(        string name );
    double   nquotes_get_property_double(     string name );
    datetime nquotes_get_property_datetime(   string name );
    color    nquotes_get_property_color(      string name );
    string   nquotes_get_property_string(     string name );
    int      nquotes_get_property_array_size( string name );
    int      nquotes_get_property_adouble(    string name, double &value[] );
#import

int init()
{
    nquotes_setup( "Wnd.Wnd", "Wnd" );  // !!!!changed only this line (NULL, NULL) ->("Wnd.Wnd", "Wnd") 
    return ( nquotes_init() );
}

int start()
{
    return ( nquotes_start() );
}

int deinit()
{
    return ( nquotes_deinit() );
}

double OnTester()
{
    return ( nquotes_on_tester() );
}

void OnTimer()
{
    nquotes_on_timer();
}

void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
    nquotes_on_chart_event( id, lparam, dparam, sparam );
}

и код С# выглядит так:

using NQuotes;
namespace Wnd
{
    public class Wnd : MqlApi
    {

        public bool formCreated = false;
        public override int start()
        {
           if (formCreated == false)
           {
              Form form = new Form();
              form.Show();
              formCreated = true;

              Alert("Hello!");
            }
            return 0;
        }
    }
}

[ ОБНОВИТЬ ]

Expert Wnd EURUSD,M15: removed EURUSD,M15: 50 tick events (3503 bars, 89656 bar states) processed (total time 0:00:05.390)
       Wnd EURUSD,M15: EA.deinit() nquotes_deinit()-> [0]
       Wnd OnTester returns 0.00000000000000
       Wnd EURUSD,M15: EA.OnTester() nquotes_on_tester()-> [ 0.0000000000]
Tester: stop button pressed
       Wnd EURUSD,M15: EA.start() nquotes_start()-> [0]
       Wnd EURUSD,M15: Alert: Hello!
       Wnd EURUSD,M15: EA.init() nquotes_init()-> [0]
       Wnd EURUSD,M15: EA.init() nquotes_setup()-> [0]
       Wnd test started 

person Alexey Gapon    schedule 07.11.2016    source источник
comment
Возможно, вам захочется узнать, что кто-то уже предложил закрыть ваш вопрос, потому что (cit.:) Вопросы, требующие помощи в отладке (почему этот код не работает?) < b>должен включать желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для их воспроизведения в самом вопросе. Вопросы без четкой формулировки проблемы бесполезны для других читателей. См. Как создать минимальный, полный и проверяемый пример. Вы можете воспользоваться этим советом и прочитать о некоторых советах по передовому опыту. В любом случае, добро пожаловать в сообщество StackOverflow   -  person user3666197    schedule 08.11.2016


Ответы (2)


Добро пожаловать в дикие миры MQL4!

В: Что я делаю не так?
О: Пока не было продемонстрировано никаких усилий по отладке.


В случае возникновения проблем сначала проверьте и опубликуйте версию библиотек/компонентов, все ответы от персонала службы поддержки, полученные от коммерческого поставщика .EX4, и сожмите до предела опубликованные API-интерфейсы-протоколы в вашем собственные усилия по отладке, чтобы изолировать место "Gdě Sabáka Zaryta":

/*
- MISSING .MQ4 VERSION NUMBER ( Build 982+ New-MQL4 )
- MISSING .EX4 VERSION NUMBER ( "nquotes/nquoteslib.ex4" )
- MISSING .DLL VERSION NUMBER
+ ALWAYS PUBLISH ALL THE COMPILER-MODE DIRECTIVES
  #property strict                                               // ?!
  AND ALL OTHER IMPORTANT DEFINITIONS OF THE .MQ4-FILE
====================================================================================
THESE ARE MORE IMPORTANT FOR DEBUGGING, THAN THE COMMERCIAL/COPY-{LEFT|RIGHT} REMARX
*/
int init(){
    int          aRetCODE = nquotes_setup( "Wnd.Wnd", "Wnd" );  // !!!!changed only this line (NULL, NULL) ->("Wnd.Wnd", "Wnd")
    PrintFormat( "EA.init() nquotes_setup()-> [%d]",
                 aRetCODE
                 );
                 aRetCODE = nquotes_init();
    PrintFormat( "EA.init() nquotes_init()-> [%d]",
                 aRetCODE
                 );
    return (     aRetCODE );                                   // return( nquotes_init() )
}

int start(){
    int          aRetCODE =  nquotes_start();
    PrintFormat( "EA.start() nquotes_start()-> [%d]",
                 aRetCODE
                 );
    return (     aRetCODE );                                   // return ( nquotes_start() );
}

int deinit(){
    int          aRetCODE =   nquotes_deinit();
    PrintFormat( "EA.deinit() nquotes_deinit()-> [%d]",
                 aRetCODE
                 );
    return (     aRetCODE );                                   // return ( nquotes_deinit() );
}

double OnTester(){
    int          aRetCODE =     nquotes_on_tester();
    PrintFormat( "EA.OnTester() nquotes_on_tester()-> [%23.10f]",
                 aRetCODE
                 );
    return (     aRetCODE );                                   // return ( nquotes_on_tester() );
}

void OnTimer(){
    int          aRetCODE =    nquotes_on_timer();
    PrintFormat( "EA.OnTimer() nquotes_on_timer()-> [%d]",
                 aRetCODE
                 );
//  nquotes_on_timer();
}

void OnChartEvent(          int     id,
                            long   &lparam,
                            double &dparam,
                            string &sparam
                            ){
    int          aRetCODE =         nquotes_on_chart_event();
    PrintFormat( "EA.OnChartEvent() nquotes_on_chart_event()-> [%d]",
                 aRetCODE
                 );
//  nquotes_on_chart_event( id, lparam, dparam, sparam );
}

На основе опубликованного API/#import из файла .EX4:

#import     "nquotes/nquoteslib.ex4"
    int      nquotes_setup(                   string className, string assemblyName );
    int      nquotes_init();
    int      nquotes_start();
    int      nquotes_deinit();
    double   nquotes_on_tester();
    int      nquotes_on_timer();
    int      nquotes_on_chart_event(          int id, long lparam, double dparam, string sparam );

    int      nquotes_set_property_bool(       string name, bool     value );
    int      nquotes_set_property_int(        string name, int      value );
    int      nquotes_set_property_double(     string name, double   value );
    int      nquotes_set_property_datetime(   string name, datetime value );
    int      nquotes_set_property_color(      string name, color    value );
    int      nquotes_set_property_string(     string name, string   value );
    int      nquotes_set_property_adouble(    string name, double  &value[], int count = WHOLE_ARRAY, int start = 0 );

    bool     nquotes_get_property_bool(       string name );
    int      nquotes_get_property_int(        string name );
    double   nquotes_get_property_double(     string name );
    datetime nquotes_get_property_datetime(   string name );
    color    nquotes_get_property_color(      string name );
    string   nquotes_get_property_string(     string name );
    int      nquotes_get_property_array_size( string name );
    int      nquotes_get_property_adouble(    string name, double &value[] );
#import
person user3666197    schedule 08.11.2016
comment
Спасибо за помощь. А вот этот файл из примера от автора, nquotes. - person Alexey Gapon; 08.11.2016
comment
Эта часть информации не помогает и не объясняет ваши действия по отладке. Вы пытались запустить его? + Какие результаты были получены на этапе компиляции и во время выполнения (приложите журнал) ? - person user3666197; 08.11.2016
comment
Эксперт Wnd EURUSD,M15: удален EURUSD,M15: обработано 50 тиковых событий (3503 бара, 89656 состояний бара) (общее время 0:00:05.390) Wnd EURUSD,M15: EA.deinit() nquotes_deinit()-› [0] Wnd OnTester возвращает 0.00000000000000 Wnd EURUSD,M15: EA.OnTester() nquotes_on_tester()-› [ 0.0000000000] Тестер: нажата кнопка стоп Wnd EURUSD,M15: EA.start() nquotes_start()-› [0] Wnd EURUSD,M15: Предупреждение: Здравствуйте! Wnd EURUSD,M15: EA.init() nquotes_init()-› [0] Wnd EURUSD,M15: EA.init() nquotes_setup()-› [0] Wnd тест запущен - person Alexey Gapon; 08.11.2016
comment
Нет ошибок. И даже окно появляется. Но только в тестовом режиме. - person Alexey Gapon; 08.11.2016
comment
Вы говорите нам, что любой из EA.init() nquotes_init()-> [?] + EA.init() nquotes_setup()-> [?] не распечатывал / не регистрировался на реальном MT4.graph, а только в том случае, если он был запущен в режиме MT4.StrategyTester? - person user3666197; 08.11.2016
comment
Wnd EURUSD,M10: EA.init() nquotes_init()-› [-4097] Wnd EURUSD,M10: Недействительная лицензия. Перейдите на демо-счет или закажите/продлите лицензию. Проблема решена Всем спасибо. - person Alexey Gapon; 08.11.2016

пакет nquotes работает только с демонстрационными учетными записями, если вы не приобрели библиотеку. Все решение помещается в папку, в которой хранятся ваши проекты. Проекты обычно представляют собой проекты библиотеки классов и требуют, чтобы исполняемый проект вызывал DLL. Также похоже, что ваши файлы находятся в неправильном каталоге. и не написано на С#.

person Dmark Advisors    schedule 24.02.2017