АвторСообщение



Пост N: 2
Зарегистрирован: 16.04.08
ссылка на сообщение  Отправлено: 18.04.08 23:58. Заголовок: Сюда можно дать приб..


Сюда можно дать приблизительный алгоритм???

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 41 , стр: 1 2 3 4 5 All [только новые]


Автор




Пост N: 129
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 19.04.08 01:08. Заголовок: Можно...


Можно.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.10.08 15:21. Заголовок: Добрый день, Сергей...


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

cur_side = MathAbs(Buffer[0] - Buffer[1]) / Point;

for (i = 0; i < 100; i++)
{
if ((masiv_B[cur_side] >=1)&& (cur_side >= i))
{
masiv_sort = masiv_B[cur_side];
}
}

if (masiv_sort() пустой)
тогда вернуться к cur_side снова его считаем и +1
else
идем дальше



у меня есть массив masiv_B[100][100]...
я получаю некоторую переменную cur_side = MathAbs(Buffer[0] - Buffer[1]) / Point;
и теперь мне нужно....чтобы все переменные из массива masiv_B с индексом строки равной cur_side
были перенесены в массив masiv_sort[]...поскольку он одномерный...то там только один индекс переменной...
(пример) т.е. получается, что masiv_sort[5] = masiv_B[cur_side][5]...
и так далее...пока не будут заполнены все переменные...в массиве masiv_sort
и masiv_B[][] имеет в наличии 100 столбцов...и masiv_sort[] - 100 столбцов...т.е. они совпадают...
но вот что у меня не получалось....это организовать цикл...
т.е. мы нашли cur_side, заполнили masiv_sort[]..
если массив masiv_sort() не будет пустым...а будет иметь хоть одно значение...тогда цикла заканчивает свою работу и сохраняет cur_side
а если массив masiv_sort() будет пустым....тогда нужно вернуться ...пересчитать cur_sid, прибавить 1..и снова заполнить массив

вот.

Спасибо: 0 
Цитата Ответить
Автор




Пост N: 249
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 15.10.08 17:26. Заголовок: 1. Честно говоря.. э..


1. Честно говоря.. это что-то новое:)
Что такое cur_side = MathAbs(Buffer[0] - Buffer[1]) / Point;
Это типа.. показания на 0 баре - показания на 1 баре, делённое на 0.0001.
В сущности, это разница цен в пунктах. Например, (1.2347 - 1.2345)/0.0001 = 0.0002/0.0001 = 2.
Я не понимаю как это значение можно использовать в качестве индекса массива.
Ну, т.е. технически это возможно. Математика стерпит. Но.. не меряют же температуру в километрах, а вес в амперах.

2. Вот это masiv_sort = masiv_B[cur_side] и это masiv_sort[5] = masiv_B[cur_side][5] вещи несовметимые.
masiv_sort может быть либо массивом, любо переменной, а masiv_B может быть либо 1- либо 2-мерным массивом. Указание индексов обязательно. Числом или переменной неважно. Важно, чтоб место, где должен быть указан индекс, не пустовало.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 10.11.09 13:35. Заголовок: Здравствуйте Сергей...


Здравствуйте Сергей.
Хочу направить Вам вопрос но после того как зарегистрируюсь.

Спасибо: 0 
Цитата Ответить



Пост N: 1
Зарегистрирован: 10.11.09
ссылка на сообщение  Отправлено: 10.11.09 13:38. Заголовок: Здравствуйте Сергей...


Здравствуйте Сергей.
Не могу зарегистрироваться.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 10.11.09
ссылка на сообщение  Отправлено: 10.11.09 14:36. Заголовок: О'кей зарегистри..


О'кей зарегистрировался.
Здравствуйте Сергей еще раз.
Вот пишу Вам первый раз . Надеюсь не последний. В сравнении с тем о чем и на какие темы говорят и пишут на форуме я новичок. Язык изучил за месяц, примерно пол года назад, " Учебник по программированию на MQL4" в Вашем авторстве. Прекрасный учебник, очень толково написан.
Написал несколько советников, пользовательских индикаторов, скриптов. На все непонятные вопросы ответы пытаюсь найти на форуме. Но столкнулся с одной вроде бы мелочью, а ответа найти не могу. Задал вопрос вчера на форуме, но внятный ответ так и не получил.
Помогите пожалуйста.
Вопрос касается использование #include <ХХХ.mqh>, перечитал весь форум не нашел ответа.
На одной из веток 20.10.2007 Вы написали:
"...Ещё можно добавить, что файл ех4 является самодостаточным - для того, чтоб он работал,
не требуется, чтоб в include находились исходные коды пользовательских функций.
Файл ех4 можно скопировать, передать другим трейдерам и там использовать.
Он является полноценным независимо от технологии его получения."
Вот в этом и проблема.
Допустим я сделал советник в который вставил директиву #include<...>, затем сделал включаемый заголовочный файл с куском кода. Откомпилировал советник и включил в торговлю. Все работает.
Беру свой советник копирую и переношу на другой компьютер, другому трейдеру . После этого советник не хочет работать и пишет, что нет функции к которой обращается #include<...>, то есть он не видит включаемый заголовочный файл и не компилируется. А пишет при компиляции -
'PointZigZag.mqh' - cannot open the program file D:\Program Files\MetaTrader2\experts\Киблиот.mq4 (10, 1)
Как я понял из учебника и Ваших высказываний, передается советник в mg4, а включаемый файл с ним прицепом в ех4. И получается, что код советника виден, а включаемый файл не виден но в любом случае должен работать.
Вот пример советника и включаемого заголовочного файла. Посмотрите в чем ошибка именно по вопросу.
//+------------------------------------------------------------------+
//| Киблиот.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

#include <PointZigZag.mqh>

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{PointZigZag();
Comment("Прод.-y21 = ",y21," ","Пок.-x21 = ",x21);
return(0);
}

//+------------------------------------------------------------------+

жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+
//| PointZigZag.mqh |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

extern int ExtDepth = 12; //------- переменные ZigZag
extern int ExtDeviation = 5; //------- переменные ZigZag
extern int ExtBackstep = 3; //------- переменные ZigZag
extern int ShiftBars = 2; //------- переменные ZigZag
//------- переменные ZigZag ------------------------------------------
double y3, y2, y1, zz;//
int x3, x2, x1, sh;//
double x31, x21, x11; // Точки перегиба ZigZag
double y31, y21, y11; // Точки перегиба ZigZag
double TimeZZ, TimeOO;
//------------------------------------------------------------------------------

double PointZigZag()
{y3=0;y2=0;y1=0;
sh=ShiftBars;
while (y3==0)
{zz=iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, sh);
if (zz!=0 && zz!=EMPTY_VALUE)
{if (y1==0) { x1=sh; y1=zz; }
else if (y2==0) { x2=sh; y2=zz; }
else if (y3==0) { x3=sh; y3=zz; }}sh++;
}
if (High[x1]>High[x2])
{x11=High[x1]; x21=Low[x2]; x31=High[x3];
y11=0;y21=0;y31=0;TimeZZ=Time[x2];
}else
{y11=Low[x1]; y21=High[x2]; y31=Low[x3];
x11=0;x21=0;x31=0;TimeZZ=Time[x2];}

}

//+------------------------------------------------------------------+

Большое Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Автор




Пост N: 511
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 10.11.09 16:49. Заголовок: Владимир25/04 пишет:..


Владимир25/04 пишет:

 цитата:
На одной из веток 20.10.2007 Вы написали:
"...Ещё можно добавить, что файл ех4 является самодостаточным - для того, чтоб он работал,
не требуется, чтоб в include находились исходные коды пользовательских функций.
Файл ех4 можно скопировать, передать другим трейдерам и там использовать.
Он является полноценным независимо от технологии его получения."
Вот в этом и проблема.
Допустим я сделал советник в который вставил директиву #include<...>, затем сделал включаемый заголовочный файл с куском кода. Откомпилировал советник и включил в торговлю. Все работает.
Беру свой советник копирую и переношу на другой компьютер, другому трейдеру . После этого советник не хочет работать и пишет, что нет функции к которой обращается #include<...>, то есть он не видит включаемый заголовочный файл и не компилируется. А пишет при компиляции -
'PointZigZag.mqh' - cannot open the program file D:\Program Files\MetaTrader2\experts\Киблиот.mq4 (10, 1)
Как я понял из учебника и Ваших высказываний, передается советник в mg4, а включаемый файл с ним прицепом в ех4. И получается, что код советника виден, а включаемый файл не виден но в любом случае должен работать.


Судя по всему, Вы неправильно понимаете суть дела.
Различают исходные коды (mq...) и исполняемые (ex4).
На любом ПК в терминале МТ 4 можно запустить на исполнение только готовую прикладную программу (ех4). При этом действительно не имеет значения каким образом получен ех4-файл - то ли это просто текст программы mq4, то ли текст программы mq4, в котором используется включение файлов с помощью строки #include.

Другое дело, что для получения исполняемого файла ех4 на момент компиляции нужны все компоненты. Если Вы компилируете программу (выполняете действия в МЕ для получения ех4) на своём ПК, то всё получается, т.к. на Вашем ПК все компоненты имеются.

Если же Вы берёте только один файл mq4 (в котором используется включение файлов с помощью строки #include), относите его на другой ПК и пытаетесь выполнить компиляцию на этом ПК, то компиляция не завершится удачно, т.к. в данном случае нет того фрагмента текста, который вставляется (нет включаемого файла). Для успешной компиляции на другом ПК нужно разложить по соотв. каталогам все файлы - и собственно код эксперта (скрипта, индикатора) и включаемые файлы mqh.
--
Смысл использования mqh сводится к простому удобству. Во время компиляции при исполнении директивы #include текст, содержащийся в mqh файле, просто вставляется в код эксперта взамен строки #include.
Если программа большая, то (главный) файл эксперта может вообще не содержать кода, а лишь #include А, #include В,#include С. При этом алгоритмы прописываются в соотв. файлах mqh с названиями А, В, С. Но на момент компиляции все эти файлы должны присутствовать, чтоб компилятор мог собрать их коды и затолкать в файл эксперта. Потом компиляция = получение самодостаточного ех4.

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 10.11.09
ссылка на сообщение  Отправлено: 10.11.09 17:34. Заголовок: SK пишет: На любом ..


SK пишет:

 цитата:
На любом ПК в терминале МТ 4 можно запустить на исполнение только готовую прикладную программу (ех4). При этом действительно не имеет значения каким образом получен ех4-файл - то ли это просто текст программы mq4, то ли текст программы mq4, в котором используется включение файлов с помощью строки #include.


Добрый вечер.
Спасибо за внимание и оперативность. Конечно Ваш авторитет для меня непререкаемый так сказать последняя инстанция, но есть маленький вопрос.
Со своего компьютера я копирую советник в mq4 , переношу на другой и вставляю. Там появляется такой же советник mq4 и самое главное если смотреть папку include не в открытом терминале, а проводнике Windows
то в ней появилась запись включаемого файла не компилированная в ex4. Как это объяснить?
И еще тогда я вообще не понимаю смысл включаемого файла сheck. из ваших примеров. Если он идет в открытом виде то в нем теряется смысл. А если в закрытом то как.

Спасибо: 0 
ПрофильЦитата Ответить
Автор




Пост N: 512
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 10.11.09 18:05. Заголовок: Файлы самопроизвольн..


Файлы самопроизвольно не копируются. Я не знаю как объяснить чудеса между Вашими ПК.
Но мне по-прежнему кажется, что Вы не до конца понимаете суть.
Включаемые файлы не нужно отдавать в открытом виде. Да и никакие исходные коды вообще (основн. файл эксперта).
Отдать другу Вы можете один файл ех4. Он будет работать, его компилировать не нужно (он уже является результатом компиляции). И он не потребует никаких включаемых файлов. Его просто нужно положить в папку экспертов. После запуска МТ4 в списке экспертов в терминале он будет сегого цвета (если рядом нет его исходников) или жёлто-синего (если исходники тут же).


Спасибо: 1 
ПрофильЦитата Ответить
Автор




Пост N: 513
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 10.11.09 18:07. Заголовок: Включаемый файл отде..


Включаемый файл отдельно компилировать не нужно. Он просто несёт в себе текст, который будет вставлен в основной код эксперта при компиляции.

Спасибо: 1 
ПрофильЦитата Ответить
Ответов - 41 , стр: 1 2 3 4 5 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет