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





Сообщение: 122
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 14.04.14 09:56. Заголовок: Я в шоке! Подскажите.


Всем привет!
Я в шоке! Выпал из рынка на 3,5 месяца, а тут такие перемены. Игорь подскажи, где можно ознакомиться с изменениями в MQL4?
Хотел перенести все данные на новый комп, но некоторые индикаторы после компиляции перестают работать. Вот один из них.
http://gfile.ru/a8cCP
Хотя не перекомпилированные файлы работают.
Компиляция ошибок в коде не выявляет. Но при отладке выдается ошибка формирования массива стр.67. Но в чем ошибка не пойму.
Буду благодарен, если найдешь время исправить.



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 204 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All [только новые]







Сообщение: 178
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 25.11.14 08:02. Заголовок: Scriptong пишет: Э..


Scriptong пишет:


 цитата:
Этим грешит Alpari.



В самую точку. Счета стандарт. Еще слышал об Альфа-банке.
Ситуацию понял. Но предложенный подход тоже не идеален. Во-первых потому, что спред плавающий, а m_symbolInfo.stopLevel возможно постоянный. Во-вторых под одну гребенку меряем все ДЦ с m_symbolInfo.stopLevel=0.
Созрела такая идея: Первоначальную информацию о m_symbolInfo.stopLevel получаем в int OnInit(). Далее при не удачной установке или модификации ордеров с ошибкой 130, запускаем функцию расчета m_symbolInfo.stopLevel в теле программы. Однако возникает новая проблема: Если m_symbolInfo.stopLevel величина постоянная - увеличение лучше делать по-шагово, скажем + 2pip. Один раз рассчитал и дальше проблем нет. А если плавающая и зависящая от спреда, то как предложено выше, но на каждом тике. И при этом нужно четко знать коэффициент увеличения.
Выходит нужен дополнительный механизм получения информации.


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





Сообщение: 1001
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 25.11.14 18:42. Заголовок: Sergey пишет: Но п..


Sergey пишет:

 цитата:
Но предложенный подход тоже не идеален.


Подход не идеален лишь потому, что от пользователя требуется правильная установка параметра m_isECN. Если пользователь укажет, что счет относится к ECN, а это на самом деле не так, то советник не сможет открыть ни одного ордера, если стопы/профиты располагаются слишком близко к базовой цене ордера.

Sergey пишет:

 цитата:
Во-первых потому, что спред плавающий, а m_symbolInfo.stopLevel возможно постоянный


Плавающий спред сейчас у большинства брокеров. Это нормально, и никак не влияет на правильную работу программы. Указанный мною код должен выполняться в начале каждого тика. Таким образом, информация постоянно обновляется.
Насчет постоянного стоплевела не видел заверений ни у одного брокера. Такие нюансы почему-то не расписываются даже в договорах на 34-х страницах, а надо бы.
Поэтому постоянный стоплевел мною воспринимается как несбыточная мечта, что и заставляет постоянно мониторить его размер (кроме, разве что, среды тестера).

Sergey пишет:

 цитата:
Во-вторых под одну гребенку меряем все ДЦ с m_symbolInfo.stopLevel=0.


Нет. Я ведь указал на параметр m_isECN.

Sergey пишет:

 цитата:
Далее при не удачной установке или модификации ордеров с ошибкой 130


К сожалению, получение ошибки №130 не дает нам гарантии того, что мы оперируем неправильным стоплевелом. Она, к примеру, может говорить о том, что тип исполнения Market Execution и мы пытаемся установить стопы/профиты в момент открытия рыночного ордера. Правда, это не очень удачный пример, т. к. тип исполнения уже можно узнать в новом MQL4. А вот тип счета (ECN или стандарт) программно узнать невозможно. Отсюда и куча проблем с этим стоплевелом.

Sergey пишет:

 цитата:
Выходит нужен дополнительный механизм получения информации.


Остается лишь надеяться на то, что в язык будет добавлена соответствующая функция, которая позволит программе самой определить тип счета, а значит и способ расчета Stop Level.

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





Сообщение: 179
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 25.11.14 20:42. Заголовок: Scriptong пишет: Н..


Scriptong пишет:


 цитата:
Нет. Я ведь указал на параметр m_isECN.



Я не о счетах ECN. Я о брокерах, которые реально выдерживают Stop Level=0 на других счетах.

Scriptong пишет:


 цитата:
К сожалению, получение ошибки №130 не дает нам гарантии того, что мы оперируем неправильным стоплевелом.



В таком случае мудрить с кодом не буду и как всегда последую опыту и профессионализму.
Спасибо!

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





Сообщение: 1008
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 26.11.14 20:03. Заголовок: Sergey пишет: Я не ..


Sergey пишет:

 цитата:
Я не о счетах ECN. Я о брокерах, которые реально выдерживают Stop Level=0 на других счетах.


Возможно, я неправильно назвал параметр, ошибочно предполагая, что нулевой стоплевел есть только на счетах типа ECN или STP. То есть речь только о неудачном названии, но не о сути параметра. Смысл в том, чтобы пользователь поставил его в "Да", когда у брокера реально нулевой стоплевел.

Посмотрел, как видно этот параметр в списке входных параметров. Получается не так уж и двузначно, вопрос конкретный: "Установить нулевой StopLevel?"



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





Сообщение: 181
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 29.11.14 07:54. Заголовок: Scriptong пишет: С..


Scriptong пишет:


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



Я уже сообразил. Но в место да-нет решил установить коэффициент отступа в спредах, если счета не ECN. Предполагая, что отступ не всегда равен двум спредам, даю возможность настраивать StopLeve пользователю под любого брокера.

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





Сообщение: 1020
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 30.11.14 20:45. Заголовок: Sergey пишет: Но в ..


Sergey пишет:

 цитата:
Но в место да-нет решил установить коэффициент отступа в спредах, если счета не ECN.


Достаточно веское замечание. Ведь два спреда советует только Alpari. У других брокеров может быть иное значение.
И тут уже разворачиваем фантазию дальше: что, если брокер нам заявит, что отступ в спредах также не постоянный? Хотя это, конечно, уже вообще беспредел, мухлеж чистой воды. От таких "брокеров" нужно уходить сразу же после подобного ответа.

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





Сообщение: 182
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 03.12.14 20:19. Заголовок: Вернусь к старой тем..


Вернусь к старой проблеме.

Scriptong пишет:


 цитата:
Перекомпиляция программы перед отправкой - секундное дело, больше времени потратите на отправку письма.



Genry пишет:


 цитата:
Поэтому после компиляции имел смысл обработать код программой защиты от декомпиляции - программой типа ex4_protector.



Есть у кого нибудь рабочая версия перекомпилятора (free)? Скачал несколько версий ex4_protector, но все время выскакивают ошибки. Вроде все просто, но не получается.

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





Сообщение: 1030
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 03.12.14 20:27. Заголовок: Sergey пишет: Есть ..


Sergey пишет:

 цитата:
Есть у кого нибудь рабочая версия перекомпилятора (free)? Скачал несколько версий ex4_protector, но все время выскакивают ошибки. Вроде все просто, но не получается.


К сожалению, никогда не пользовался подобными "защитниками". Могу лишь сделать предположение о том, что эта версия разработана для старой версии MQL4. Для новой версии MQL4 подобные дополнительные защиты не нужны - новый компилятор на выходе выдает нативный код, который не так уж и легко взломать.

Даже если его и взломают, то почему таким профи будет не под силу взломать любую другую защиту, тем более распространяемую в сети?

Также учтите следующий момент. В новом MQL4 добавлены возможности ООП. А когда код написан объектно-ориентированным способом, то его декомпиляция в первозданный вид становится практически невозможной - слишком много различных вариантов, ни один современный компьютер не переберет. То есть взломщикам придется иметь дело не с декомпилированным вариантом, а именно с нативным кодом. Это затруднит их работу.

Используйте ООП!

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





Сообщение: 183
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 03.12.14 21:45. Заголовок: Scriptong пишет: И..


Scriptong пишет:


 цитата:
Используйте ООП



"Чем дальше в лес, тем больше дров" Так и у меня. Что такое написание кода объектно-ориентированным способом?

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





Сообщение: 1032
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 04.12.14 17:18. Заголовок: Sergey пишет: Что т..


Sergey пишет:

 цитата:
Что такое написание кода объектно-ориентированным способом?


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

Каждая задача первого уровня дробится на более мелкие задачи. В зависимости от степени дробления задачи второго уровня оформляются в виде классов, используемыми классами первого уровня, или в виде функций (методов) существующих классов.

Простые задачи решать путем ООП, чаще всего, невыгодно. Но как только возникает задача хотя бы среднего уровня выигрыш от использования ООП становится очевидным.

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





Сообщение: 184
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 05.12.14 17:03. Заголовок: Спасибо. Конечно, с ..


Спасибо. Конечно, с примерами было бы лучше, но в целом понятно.

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





Сообщение: 1034
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 05.12.14 18:33. Заголовок: Sergey пишет: Спаси..


Sergey пишет:

 цитата:
Спасибо. Конечно, с примерами было бы лучше, но в целом понятно.


К сожалению, одними примерами не отделаться. На эту тему пишут книги по 300-400 страниц. Классы неплохо описаны у Шилдта, даже несмотря на то, что это справочник, а не полноценный учебник. Читайте с 237-ой страницы. Там, конечно, все про C++, но почти все справедливо и для современного MQL4. Если что-то будет непонятно, спрашивайте.

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





Сообщение: 196
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 02.02.15 10:14. Заголовок: Можно ли объекты тип..


Можно ли объекты типа ARROW привязавать к таким координатам? Ошибка не выдается, однако объект не отображается. Объект нужно отобразить в окне графика справа от него.

ObjectCreate("SD_D1_2", OBJ_ARROW, WindowFind(short_name), 10, 35);
ObjectSet("SD_D1_2", OBJPROP_ARROWCODE, 110);
ObjectSet("SD_D1_2", OBJPROP_WIDTH, 3);
ObjectSet("SD_D1_2", OBJPROP_CORNER,1); // угол пивязки
ObjectSet("SD_D1_2", OBJPROP_COLOR, UpColor);

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





Сообщение: 1165
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 3
ссылка на сообщение  Отправлено: 02.02.15 19:35. Заголовок: Sergey пишет: Можно..


Sergey пишет:

 цитата:
Можно ли объекты типа ARROW привязавать к таким координатам?


Нет, нельзя.
Перечень типов объектов, для которых это разрешено, смотрите здесь.

Sergey пишет:

 цитата:
объект не отображается


Он отображается, но на 10-ом баре по цене 35 (где-то вверху, если график EURUSD).

Ошибку же проверяйте после вызова:

 цитата:
ObjectSet("SD_D1_2", OBJPROP_CORNER,1); // угол пивязки



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





Сообщение: 197
Зарегистрирован: 05.03.13
Репутация: 1
ссылка на сообщение  Отправлено: 13.02.15 09:42. Заголовок: Нужно ограничить дем..


Нужно ограничить демку по валютной паре. Однако некоторые ДЦ используют, как мне сказали, префиксы и суффиксы. Я с этим не сталкивался, а потому проверить правильность кода не могу. Прошу дать квалифицированную оценку.

extern string prefix = "";
extern string suffix = "";

if (Symbol()!=prefix + "EURUSD" + suffix)
{
Alert("Demo version is only for EURUSD");
return(0);
}

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

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