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

 
Twilight:


Вы предлагаете код индикатора засовывать в советник и там его пересчитывать?

А если таких индикаторов 5? 

нет ли возможности как то пересчитать по другому?

я же все индикаторы в советник прикрепляю через  iCustom

 

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

 

Если на графике нажать ПКМ и нажать обновление, то перерисовки тоже нету, она почему то перерисовывается только при смене таймфрейма. 

Мне не ведомы Ваши фантазии. Чтобы получить красивую картинку от индикатора, нужно поковыряться в его коде. В частности, с переменной limit. В данном индикаторе она присутствует. Кстати, судя по коментам к этому индикатору, автор запретил индикатору перерисовку, а Вы сделайте так, как Вам угодно, но от этого Вы не получите ожидаемого, так как суть перерисовки - это появление сигнала несколько баров назад.

Удачи.

 
silatyt:

Мне не ведомы Ваши фантазии. Чтобы получить красивую картинку от индикатора, нужно поковыряться в его коде. В частности, с переменной limit. В данном индикаторе она присутствует. Кстати, судя по коментам к этому индикатору, автор запретил индикатору перерисовку, а Вы сделайте так, как Вам угодно, но от этого Вы не получите ожидаемого, так как суть перерисовки - это появление сигнала несколько баров назад.

Удачи.

В метатрейдере в любом окне инструмента если нажать правую кнопку мыши есть кнопка Обновление

как то программно вызвать эту функцию можно? 

RefreshRates вроде бы не то.

 

Подскажите, как в двух-трех строчках реализовать код советника:

При поступлении сигнала (напр. пересечения двух МА)

  1.Советник определяет  время поступления сигнала(в часах, минутах),запоминает его;

  2.Отсчитывает одну минуту.

Далее, готовность совершить какое-либо действие(напр. открытие ордера)

 
Twilight:
В метатрейдере в любом окне инструмента если нажать правую кнопку мыши есть кнопка Обновление

как то программно вызвать эту функцию можно? 

RefreshRates вроде бы не то.


Библиотека. Вам нужна 4.7.7  ServiceTickIndicators(). 

 //=====================================================================================================================================================================
 // 4.7. Функции для управления обновлением графика.
 //=====================================================================================================================================================================
 // 4.7.1. Функция запускает обновление всех графиков с указанным периодом. Если обновление уже запущено, то функция меняет период обновления графиков.
 //        Останавливается обновление функциями "ServiceStopRefreshChart()" или "ServiceStopRefreshAllCharts()" или закрытием графика.
 void ServiceRefreshAllCharts(int nPeriodMilliSec); // Период обновления графика в миллисекундах.
 //=====================================================================================================================================================================
 // 4.7.2. Функция запускает обновление всех графиков однократно. Вызов функции при работающих других режимах останавливает обновление всех графиков.
 void ServiceRefreshAllOnceCharts();
 //=====================================================================================================================================================================
 // 4.7.3. Функция запускает обновление указанного графика с указанным периодом. Если обновление уже запущено, то функция меняет только период обновления графика.
 //        Останавливается обновление функциями "ServiceStopRefreshChart()" или "ServiceStopRefreshAllCharts()" или закрытием графика.
 void ServiceRefreshChart(int hwndChart,        // Системный дескриптор обновляемого графика.
                          int nPeriodMilliSec); // Период обновления графика в миллисекундах.
 //=====================================================================================================================================================================
 // 4.7.4. Функция останавливает обновление указанного графика.
 void ServiceStopRefreshChart(int hwndChart); // Системный дескриптор графика, на котором останавливается обновление.
 //=====================================================================================================================================================================
 // 4.7.5. Функция корректно останавливает обновление всех графиков при bTerminate = FALSE, иначе функция завершает обновление аварийно.
 void ServiceStopRefreshAllCharts(int bTerminate); // Флаг аварийной остановки потоков обновления графиков.
                                                   // FALSE - потоки останавливаются корректно, TRUE - потоки останавливаются аварийно.
 //=====================================================================================================================================================================
 // 4.7.6. Функция эммулирует тик для эксперта на указанном графике.
 void ServiceTickExpert(int hwndChart); // Системный дескриптор окна графика, для эмуляции тика для эксперта.
 //=====================================================================================================================================================================
 // 4.7.7. Функция эммулирует тик для индикаторов на указанном графике.
 void ServiceTickIndicators(int hwndChart); // Системный дескриптор окна графика, для эмуляции тика для индикаторов.

 Только лучше подождать немного. Выложил новую версию. Может сегодня модераторы опубликуют. 

 
Zhunko:

Библиотека. Вам нужна 4.7.7  ServiceTickIndicators(). 

 Только лучше подождать немного. Выложил новую версию. Может сегодня модераторы опубликуют. 


Платная? 

 
Twilight:
В метатрейдере в любом окне инструмента если нажать правую кнопку мыши есть кнопка Обновление

как то программно вызвать эту функцию можно? 

RefreshRates вроде бы не то.


#import "user32.dll"
int PostMessageA (int hWnd, int  Msg, int wParam, int lParam);
#import

PostMessageA (WindowHandle (Symbol(), Period()), 0x0111, 33324, 0);

Но, только Вам это ничего не даст... :)

 
Twilight:


Платная? 

Нет. Где там написано, что платная?
 
silatyt:

Но, только Вам это ничего не даст... :)

Даст перерисовать визуально.

Прогнать в цикле последнии N баров и если сигнал был то сигнал=true

А там уже можно крутить что угодно с любыми другими не перерисовывающими индикаторами.

 PostMessageA (WindowHandle (Symbol(), Period()), 0x0111, 33324, 0); 

 Где вставлять? В начале Старта?

 

Спасибо. 

 
Twilight:

Даст перерисовать визуально.

Прогнать в цикле последнии N баров и если сигнал был то сигнал=true

А там уже можно крутить что угодно с любыми другими не перерисовывающими индикаторами.

 PostMessageA (WindowHandle (Symbol(), Period()), 0x0111, 33324, 0); 

 Где вставлять? В начале Старта?

 

Спасибо. 

Перед вызовом индикатора (можно и в начале start()).

P.S. Все "бегут" от перерисовки, а Вы за ней - нестандартно... :))

 
silatyt:

Перед вызовом индикатора (можно и в начале start()).

P.S. Все "бегут" от перерисовки, а Вы за ней - нестандартно... :))


Ну вот к примеру такой вариант. перерисовываем на м5 и проверяем есть ли сигнал последние 12 баров.

И на новой м15 м30 проверяем был ли сигнал на м5 и является ли цена еще актуальной то есть удовлетворяет по требованиям для входа.

А также можно анализировать сколько раз в течении этого же часа. сигнал изменялся,пропадал и т.п.

Причем у сигнала же есть название и можно анализировать сам график визуально по названию =) 

В общем целое не паханное поле для эксперементов. а пока вот такой результат =)

Со своей модификацией

http://komplekt73.ru/forex/m5chastr.htm

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