Пробовал тогда выдает типа такого 'DATA_ARREY' - declaration without type ArrMQH.mqh и еще кучу ошибок.
ругается в первую очередь на эту строку
int TestArreyMQH(DATA_ARREY &obj[])
DATA_ARREY необъявлен.
В mqh все удалить и перенести в него структуру, функцию и объявление массива (в там порядке должны располагаться).
Как я не пытался результат отрицательный; не объявлен или уже объявлен.
Мне нужно передать данные из MQH в MQL4 советник и дальше с ними работать в советнике. В файл MQH ничего не передается. Он получает котировки, обрабатывает и отправляет сигнал советнику.
Может эти структуры и называются иначе, но суть то не меняется.
Как я не пытался результат отрицательный; не объявлен или уже объявлен.
Мне нужно передать данные из MQH в MQL4 советник и дальше с ними работать в советнике. В файл MQH ничего не передается. Он получает котировки, обрабатывает и отправляет сигнал советнику.
Может эти структуры и называются иначе, но суть то не меняется.
В советнике не надо создавать структуру, достаточно только объявить переменную типа структуры.
DATA_ARREY_MQH globArrayMQH[1];
или лучше
DATA_ARREY_MQH globArrayMQH;
Зачем массив с одним элементом? Хотя если предполагаешь потом увеличивать, то пусть будет так.
НО в инклюднике её объявлять не надо.
В твоём-же коде присутствуют две структуры и создаёшь две переменные.
И ещё вопрос: для чего в структуре конструктор?
Это не структура. Повнимательней прочти в документации о структуре и остановись там где начинается описание классов. Не стоит усложнять себе жизнь используя класс в виде и вместо структуры.
Я еще не так давно писал вообще с массивами. И меня все устраивало и работало. Перешeл на структуры. Все работает также, только код при том же функционале вырос раза в 2, и стал менее читабельным.
Советник разросся до 3тыс. строк. Вот и хочу пол советника запихнуть в MQH тем более что эта часть сова работает по запросу( например на рождении нового бара.). А тут засада на ровном месте.
Я еще не так давно писал вообще с массивами. И меня все устраивало и работало. Перешeл на структуры. Все работает также, только код при том же функционале вырос раза в 2, и стал менее читабельным.
Советник разросся до 3тыс. строк. Вот и хочу пол советника запихнуть в MQH тем более что эта часть сова работает по запросу( например на рождении нового бара.). А тут засада на ровном месте.
Не удивительно. Если через строку вставлять по 3 пустые то советник разрастётся до 9 тыс. строк.
Суть файла .mqh в том, чтобы некоторые функции и/или структуры можно было хранить вне основного кода. Но при компиляции эти функции вносятся в код программы как родные. Тоесть, если у тебя в .mqh есть структура, то к ней из советника надо обращаться так-же как если она в основном коде, но при этом в начале кода надо компилятору объяснить что если здесь чего-то не находишь, то посмотри в инклюднике.
#include <ArrMQH.mqh>
Я еще не так давно писал вообще с массивами. И меня все устраивало и работало. Перешeл на структуры. Все работает также, только код при том же функционале вырос раза в 2, и стал менее читабельным.
Советник разросся до 3тыс. строк...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую. Помогите cвязать библиотеку MQH с советником MQL4 . Мозг сломал. Нужно передать из библиотеки данные посредством структуры.
Код для проверки прилагаю. Помогите!!! Это не советник, Этот код написан специально для проверки.
//+------------------------------------------------------------------+
//| Arrey+mqn.mq4 |
//| Copyright 2016, ForTorg ZEVs |
//| https://www.mql5.com/ru/users/fortorg |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, ForTorg ZEVs"
#property link "https://www.mql5.com/ru/users/fortorg"
#property version "1.00"
#property strict
#include <ArrMQH.mqh>
int BBars=0;
bool New_Bar=true;
struct DATA_ARREY // Данные по сигналу
{
datetime time; // Время Нового бара
int shet; // Счетчик баров
DATA_ARREY() // Конструктор
{
time=0; // Время Нового бара
shet=0; // Счетчик баров
}
};
DATA_ARREY globDataArray[1];
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
void OnTick()
{
Fun_New_Bar(); // Проверяем новый бар
if(New_Bar)
{
TestArreyMQH(globDataArray);
Comment("",TimeToStr(TimeCurrent(),TIME_SECONDS),
"\n Поймался новый бар = ",globDataArray[0].time,
"\n Счетчик Баров = ",globDataArray[0].shet);
New_Bar=false;
}
}
//+------------------------------------------------------------------+
void Fun_New_Bar() // Ф-ия обнаружения ..нового бара
{
if(BBars==iBars(Symbol(),_Period)) New_Bar=false;
if(BBars!=iBars(Symbol(),_Period)) {BBars=iBars(Symbol(),_Period);New_Bar=true;}
}
////+--------Эту Функцию хочу запихнуть в MQH библиотеку-------------------------------------+
//int TestArreyMQH(DATA_ARREY &obj[])
// {
// obj[0].time=TimeCurrent();
// obj[0].shet++;
// Print(__FUNCTION__,": Поймался новый бар: Время = ",TimeToString(Time[0])); //--- Исполняем
// return(0);
// }
//+------------------------------------------------------------------+
Как бы я не пытался получаю ошибки типа 'globDataArray' - parameter conversion not allowed Arrey+MQH.mq4 38 20
//+------------------------------------------------------------------+
//| ArrMQH.mqh |
//| Copyright 2015, ForTorg ZEVs |
//| https://www.mql5.com/ru/users/fortorg |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, ForTorg ZEVs"
#property link "https://www.mql5.com/ru/users/fortorg"
#property strict
struct DATA_ARREY_MQH // Данные по сигналу и ордеру эксперта
{
datetime time; // Время Нового бара
int shet; // Счетчик баров
DATA_ARREY_MQH() // Конструктор
{
time=0; // Время Нового бара
shet=0; // Счетчик баров
}
};
DATA_ARREY_MQH globArrayMQH[1];
//+------------------------------------------------------------------+
int TestArreyMQH(DATA_ARREY_MQH &obj[])
{
obj[0].time=TimeCurrent();
obj[0].shet++;
Print(__FUNCTION__,": Поймался новый бар: Время = ",TimeToString(Time[0])); //--- Исполняем
return(0);
}
//+------------------------------------------------------------------+
Помогите связать советника с библиотекой.