[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 323

 
Diubakin:
Ну и... КАК ЭТО СДЕЛАТь? если не секрет...
Есть один способ, только никому не рассказывайте. Это страшная тайна.
Запустите в гугле поиск по сайту - торговля на нестандартном ТФ site:mql4.com и варианты типа "советник на эквиобъемном (автономном) графике и пр.
Или подождите, пока Жунко не выдержит и персонально Вам разжует :))
 
Diubakin:
Ну и... КАК ЭТО СДЕЛАТь? если не секрет...

Не секрет. Тут много об этом понаписано. Не важно каким средством была создана история. Суть в обновлении графика, чтобы эксперт на нём работал.

Можно это сделать средствами WinAPI. Здесь это много раз описывалось. Я себе библиотеку написал. Здесь выложил.

В ней есть функции для управления автономномным обновлением графика. При этом не нужен никакой скрипт и эксперт. Но это не для всех. Там же есть доступные для всех функции для обновления графика из эксперта или скрипта или индикатора. Пользоваться ими сложнее. Потому, как надо будет придумать какая из Ваших программ будет обновлять график. Примеры есть в тестовом скрипте.

 

Уважаемые программисты.

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

Имеется в виду не значение самой скользящей, а значения её уровней (отступлений от неё вверх и вниз, которые настраиваются во вкладке "Уровни" в меню МА).

Чтобы эти значения сами следовали за уровнями МА и менялись.

Рисунок - это один из возможных вариантов.

Заранее спасибо.



 
Diubakin:


На счёт тайны я уже понял). Читал статьи и по форуму смотрел, и через поиск смотрел. Написано как в тестер впихивать нестандартные графики, как строить их, а примера что делать, чтоб эксперт на таком графике мог работать в реальном времени, так и не нашёл.

WinAPI для меня это тёмный лес. Есть способ чтоб в mql4 внутри построителя или своего эксперта что-то сделать или объединить построитель с экспертом?

Спасибо за ответы.

Когда я говорил о тайне, то имел в виду великую тайну поиска. Она заключается в том. что надо ПРОЧИТАТЬ материалы, на которые он покажет. Ссылки уже боюсь давать, привожу готовый текст.

nickbilac 03.09.2007

... для того, чтобы эксперты работали на автономном графике, нужно добавить:

в начале старта:

int MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); //incoming tick for EAs

после первого PostMessageA

PostMessageA(hwnd,MT4InternalMsg,2,1); //incoming tick for EAs

ну и в WinUser32.mqh в описания функций user32.dll добавить:

int RegisterWindowMessageA(string lpString);

(это решение было предложено Славой на английском форуме)

 
Из переписки с брокером - "The charts are used in order to give an idea about the market. He cannot blame ..... for the updates because these are set by default for all brokers who use the MT4 platform." Как это можно понять и что имел ввиду брокер? О какой особенности МТ4 идёт речь? В каких случаях цена отображённая на текущий момент на графике и в окне обзора рынка не может быть одномоментно рыночной и исполнимой? Очень прошу помочь понять суть заявления. Предвосхищаю ссылки на функцию OrderSend и привожу код из МТС, используемый для открытия сделки:

RefreshRates();

ticket=OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),0,NormalizeDouble(Ask+15*Point,Digits),0,"test",8,0,Red);

Буду очень благодарен комментариям от разработчиков.
 

granit77:
Когда я говорил о тайне, то имел в виду великую тайну поиска. Она заключается в том. что надо ПРОЧИТАТЬ материалы, на которые он покажет. Ссылки уже боюсь давать, привожу готовый текст.

nickbilac 03.09.2007

... для того, чтобы эксперты работали на автономном графике, нужно добавить:

в начале старта:

int MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); //incoming tick for EAs

после первого PostMessageA

PostMessageA(hwnd,MT4InternalMsg,2,1); //incoming tick for EAs

ну и в WinUser32.mqh в описания функций user32.dll добавить:

int RegisterWindowMessageA(string lpString);

В моей библиотеке вместо этого кода одна функция.
 
Поможет ли RefreshRates(); перед тикетом хоть чуть чуть сократить реквоты?
 
Shniperson:
Поможет ли RefreshRates(); перед тикетом хоть чуть чуть сократить реквоты?


Зависит от ситуации. Если у Вас идёт выставление двух ордеров вподряд, то перед установкой второго ордера имеет смысл вызвать RefreshRates(). Смотрите, Вы посылаете приказ на сервер открыть ордер. Пока сервер реагирует проходит какое-то количество времени. За это время котировки могут измениться, поэтому как только сервер ответил, нужно вызвать функцию RefreshRates(), обновляющую данные в терминале. Вот теперь можно отдавать приказ об открытии следующего ордера. Если мы просто проверяем сигнал и тут же ставим ордер, то вызывать RefreshRates() нет смысла. Ну просто потому, что функция старт вызывается приходом нового тика и вполне можно пренебречь временем, пока советник проверит наличие сигнала.

Только причём тут тикет? Тикет - это порядковый номер ордера на сервере...

 
Ну я имел ввиду ticket=OrderSend(......)
 
Shniperson:
Ну я имел ввиду ticket=OrderSend(......)

И что они Вам сказали? ...
Причина обращения: