как отмасштабировать (по отношению друг к другу) два индикатора в одном окне(seperare_window) особенно в офлайне ?
Только что сам спрашивал. :)
int WindowBarsPerChart( ) - покажет количество баров в окне. Дальше - дело техники.
Недавно написал программу.
Запускаете MTPump. Оно находит все окна метатрейдера, окна инструментов и начинает их обновлять каждые 0.1 секунды.
... И start() будет выполняться гарантированно.
Можете скриптик навешивать. Но он будет валиться при смене инструмента и таймфрейма
и его на каждое окно нужно вешать.
#define WM_COMMAND 0x0111 #include <WinUser32.mqh> // Заголовочный файл библиотеки "user32.dll" функций API Windows XP. void start() { int HandlWindow=WindowHandle(Symbol(),Period()); for(;;) { if(IsStopped()) {return;} PostMessageA (HandlWindow, WM_COMMAND, 33324, 0); // Обновляем окно. PostMessageA (HandlWindow, WM_COMMAND, 2, 1); // Эммуляция тика для эксперта. Sleep(300); WindowRedraw(); } }
Эк оно строковый литерал-то внутри коммента нашло :-).
А на деле- просто добавьте два индикатора порознь.
И все будет масштабироваться само.
А на деле- просто добавьте два индикатора порознь.
И все будет масштабироваться сам
а КАК ???, в одно окно ?
что то у меня не получается ...
поскольку окошек хочется поменьше иметь, то пытаюсь несколько, вроде как разных индикаторов, в одно окошко положить ...
только что пытался в окно со стохастиком повесить ма евре-доллар, не получается ...
Только что сам спрашивал. :)
int WindowBarsPerChart( ) - покажет количество баров в окне. Дальше - дело техники.
кто то из нас двоих чего то не понял :)
см по тектсу, я именно так и определяю количество баров, но проблема то в другом
1. в офлайне это не работает
2. все одно врет, и чем дальше в лево тем сильнее ...
т.е. ЧТО использовать мы вроде выяснили, осталось выяснить почему оно не работает :)
а КАК ???, в одно окно ?
что то у меня не получается ...
поскольку окошек хочется поменьше иметь, то пытаюсь несколько, вроде как разных индикаторов, в одно окошко положить ...
только что пытался в окно со стохастиком повесить ма евре-доллар, не получается ...
Видео закачивал вот сюда: https://forum.mql4.com/ru/26298
Посмотрите.
Просто перетягиванием.
И у каждого графика будет работать режим растягивания видимых баров на все окно.
как отмасштабировать (по отношению друг к другу) два индикатора в одном окне(seperare_window) особенно в офлайне ?
Делите каждый индикатор на собственное МО за одинаковый период, и значения будут нормированными.
Недавно написал программу.
Запускаете MTPump. Оно находит все окна метатрейдера, окна инструментов и начинает их обновлять каждые 0.1 секунды.
... И start() будет выполняться гарантированно.
Можете скриптик навешивать. Но он будет валиться при смене инструмента и таймфрейма
и его на каждое окно нужно вешать.
Эк оно строковый литерал-то внутри коммента нашло :-).
Спасибо - взял, попробую ...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
на конкретики
Stochastic
и
MA
Стохастик разворачиваем от нуля до ста процентов, его строю первым и на его фоне МА
а вот МА пытаюсь масштабировать ...
в статике - без проблем, а вот при прокрутке окна ..., МА может уползти сильно вверх или вниз и сжаться
поскольку минимакс стохастика известен заранее, вроде все просто
от первого бара на количестве баров в окне вычисляем мин и макс, считаем коэффициентик и на него множим МА
но во первых не всегда честно это считается
во вторых это не пересчитывается в офлайне, поскольку все это в starte ...
в ините по циклу со слипом - что то не охота :) да и попытка была неудачной - количество циклов ограничил сотней тысяч :) и на все время отработки индикатор ваабще не отрисовывался...
вот кусок с пояснениями чего хотел добиться
int start()
{
int
i, // Индекс бара
Counted_bars; // Количество просчитанных баров
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars-1; // Индекс первого непосчитанного
if (i>History-1) // Если много баров то ..
i=History-1; // ..рассчитывать заданное колич.
if (First_Visible_Bar != WindowFirstVisibleBar()) если первый индицируемый бар изменился, считаем что окно "прокрутили"
i=History-1; соответственно меняем количество перерисовываемых значений
K_Hi =High[iHighest(NULL,0,MODE_HIGH, WindowBarsPerChart(),WindowFirstVisibleBar())]; вычисляем макcимальное значение по паре (потому как МА далеко не уйдет, ИМХО)
K_Low=Low [iLowest (NULL,0,MODE_LOW, WindowBarsPerChart(),WindowFirstVisibleBar())]; вычисляем минимальное значение по паре (потому как МА далеко не уйдет, ИМХО
K_Ind=(100-20)/(K_Hi-K_Low); считаем коэффициент, с учетом ограничения с верху значением 80
while(i>=0) // Цикл по непосчитанным барам
{
Line_0[i]= iStochastic(NULL,0,K_Period,D_Period,Slowing,MODE_SMA,0,MODE_MAIN,i); стохастик
Line_1[i]= iStochastic(NULL,0,K_Period,D_Period,Slowing,MODE_SMA,0,MODE_SIGNAL,i); еще линия
Line_2[i]=hi_line; верхняя линия скажем 80 %
Line_3[i]=low_line; нижняя линия ну например 10%
Line_4[i]=low_line-Zone; 10 процентная зона от 10 до 20 %
Line_5[i]=hi_line+Zone; 10 процентная зона от 80 до 90%
Line_6[i]=(iMA(NULL,0,Period_MA_fast,0,MODE_EMA,PRICE_CLOSE,i)-K_Low)*K_Ind+10; а вот это уже пошли МА с коэффициентом масштабируемости и чуть поднята от нуля
Line_7[i]=(iMA(NULL,0,Period_MA_slow,0,MODE_EMA,PRICE_CLOSE,i)-K_Low)*K_Ind+10; вторая МА так же
i--; // Расчёт индекса следующего бара
}
First_Visible_Bar=WindowFirstVisibleBar(); перечитываем номер первого бар, хотя это можно под if вверху занести
//----
return(0);
}
помогайте - своих мозгов не хвыатает, чую что секрет есть :)
кстати, в онлайне оно как то работает, т.е. меня уже не раздражает :), хотя наверное привык :), но все ж таки "неаккуратненько" как то :), все одно косячит с масштабом ...