Вопрос к профессионалам: ООП и MQL4 - страница 3

 

В принципе, индикаторные буфера четверки нужны только для отрисовки, а для рассчетов имеет смысл использовать обычные массивы - в произвольном количестве. Если какие-то из этих массивов нужно визуализировать, то можно это делать по частям - указывая в настройках, какой массив в какой буфер вывести. Я предпочитаю сигнальные индикаторы, т.е. в которых есть буфер, "подводящий итог", так сказать, ситуации на каждом баре. Объединить такие индикаторы не составляет труда, вызывая несколько сигнальных через iCustom.

Что касается передачи "тиражируемых" структур, то в MQL4 на замену может претендовать только массив double-ов, в элементы которого можно запихнуть все что угодно кроме строк (в общем-то и строки можно путем некоторого геморроя).

 
marketeer:

В принципе, индикаторные буфера четверки нужны только для отрисовки, а для рассчетов имеет смысл использовать обычные массивы - в произвольном количестве. Если какие-то из этих массивов нужно визуализировать, то можно это делать по частям - указывая в настройках, какой массив в какой буфер вывести. Я предпочитаю сигнальные индикаторы, т.е. в которых есть буфер, "подводящий итог", так сказать, ситуации на каждом баре. Объединить такие индикаторы не составляет труда, вызывая несколько сигнальных через iCustom.

Что касается передачи "тиражируемых" структур, то в MQL4 на замену может претендовать только массив double-ов, в элементы которого можно запихнуть все что угодно кроме строк (в общем-то и строки можно путем некоторого геморроя).

+1, так и сделал - многомерный массив double-в с некоторым кол-вом оберточных функций. Это гораздо проще, чем писать dll и переходить на MQL5.
 
andreybs:

Да и сложенее это - все реализовать внутри dll, хотя бы потому, что дебаг проводить сложнее (по крайней мере, я не представляю, как).

Это смотря для чего пишем: если на заказ, то Вы правы - зачем заморачиваться.

А вот если свой проект, то элементарно: пишете саму длл. К ней пишете отдельный проект-консольное приложение. С единственной целью - запуск и отладка функций из длл. Туда линкуете вашу длл. Лучше неявно. в MS VS 2010 делается на раз. Дальше вся мощь студии у Вас в руках: отладчик + стандартный язык с немерянными возможностями. Данные из МТ в файл - читайте оттуда и подавайте на вход. Для отладки вполне..... Индикаторы из МТ4 очень легко переносятся под тот же С++.

Для работы из МТ пишем функцию, передающую необходимую инфу в длл как параметры и возвращающую сам сигнал, как результат анализа. Дальше - Вам выше написали - переход на любую платформу проблем не вызовет.

Удачи.

 

Начал изучать MQL4 b и немагу разобраться почему неработает мой скрипт.... Помогите плиз разобраться :(

int start()
{
//----
double Lots=0.1;
double SL=15;
double TP=20;
string Para=Symbol();
//----

SL=Bid -15*Point;
TP=Bid +20*Point;

int tiket=OrderSend(Para,OP_BUY,Lots,Ask,0,SL,TP);
int Eror =GetLastError();

return(0);
}
//+------------------------------------------------------------------+
 

 
Mudreishii:

Начал изучать MQL4 b и немагу разобраться почему неработает мой скрипт.... Помогите плиз разобраться :(



А почему он в субботу должен работать (если конечно это скрипт)
 
Vinin:

А почему он в субботу должен работать (если конечно это скрипт)

а... ТОЧНО!!!!! тока сечас над етим подумал.... СПС :)
 

Севодня Вторник... пробую запустить скрипт - нехочет открывать ордер.... папробывал на другом брокере Аналогично пишет:

2011.05.10 12:29:57 Script открываем ордер GBPUSD,H4: removed

2011.05.10 12:29:57 Script открываем ордер GBPUSD,H4: loaded successfully

Люди-програмисты помогите плиз...

 

Дабавил - Alert(GetLastError());  -выдает ошибку 4109 ( Торговля не разрешена ) 

Я уже на трёх разных ДЦ опробывал и одно и тоже.... Ктонибуть подскажите...



 

 
Mudreishii:

Дабавил - Alert(GetLastError()); -выдает ошибку 4109 ( Торговля не разрешена )

Я уже на трёх разных ДЦ опробывал и одно и тоже.... Ктонибуть подскажите...




Наверно надо разрешить автоторговлю в настройках. Тогда и другие ошибки появятся
 
Vinin:

Наверно надо разрешить автоторговлю в настройках. Тогда и другие ошибки появятся

Разрешил.... нечиво не паменялось :( Может у меня вообще скрипты немогут открывать ордера....
 

Подскажите плиз

int start()
{
//----
double Lots=0.1;
double SL;
double TP;
string Para=Symbol();
//----
SL=Bid -15*Point;
TP=Bid +20*Point;

int ticket1=OrderSend(Para,OP_BUY,Lots,Ask,0,SL,TP);
bool OrderClose(ticket1,0.1,Ask,0);
Alert(GetLastError());

return(0);
}

Тут я папробывал вставить - bool OrderClose(ticket1,0.1,Ask,0); - но мне вадало - 'OrderClose' - variable expected - я неправельно разместил ето.... или что я зделал не правельно?


 

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