Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
//+------------------------------------------------------------------+ //| Custom MACD.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| https://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "https://www.metaquotes.net/" //---- indicator settings #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Silver #property indicator_color2 Red #property indicator_width1 2 //---- indicator parameters extern int FastEMA=12; extern int SlowEMA=26; extern int SignalSMA=9; //---- indicator buffers double MacdBuffer[]; double SignalBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_LINE); SetIndexDrawBegin(1,SignalSMA); IndicatorDigits(Digits+1); //---- indicator buffers mapping SetIndexBuffer(0,MacdBuffer); SetIndexBuffer(1,SignalBuffer); //---- name for DataWindow and indicator subwindow label IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")"); SetIndexLabel(0,"MACD"); SetIndexLabel(1,"Signal"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Moving Averages Convergence/Divergence | //+------------------------------------------------------------------+ int start() { if (IsTesting()) { int limit; int counted_bars=IndicatorCounted(); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- macd counted in the 1-st buffer for(int i=0; i<limit; i++) MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i); //---- signal line counted in the 2-nd buffer for(i=0; i<limit; i++) SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i); //---- done return(0); } } //+------------------------------------------------------------------+Крепим на чарт данный индикатор и видем следующую картину.
Запускаем любой эксперт в визуальном режиме и крепим на чарт этот же индикатор. Работаем мы в режиме тестирования. Ограничение позволяет расчитываться если мы работаем в режиме тестировани. Но видем мы ту же самую картину, так вот объясните это недоработка в терминале, баг, глюк или я что-то не понял?
По логике должен же быть ограничитель какой-то. Логичней всего привязать окно к тестеру и ограничивать через IsTesting(), или ноовую функцию вводить нужно. Но подобное ограничение необходимо.
===
Индикатор, накладываемый на график, и индикатор, используемый в эксперте, - это две разные сущности. Почитайте в справке MetaEditor про выполнение программ: "MQL4: Выполнение программ"
Для отрисовки индикатора, он должен быть прикреплён к графику. Независимо от того, используется он при тестировании или нет. Можно запретить отрисовку индикатора (через IsTesting, как это предложил Jhonny), но этот запрет коснётся и визуализации тоже.
===
Я именно об этом Вас и предупредил.
Повторяю ещё раз: я даже не знаю, как реализовать Ваше предложение без серьёзных переделок клиентского терминала.
Повторяю ещё раз: я даже не знаю, как реализовать Ваше предложение без серьёзных переделок клиентского терминала.
Через WindowFind( string name) тоже не получется ничего сделать, не ищет окно. Может расширить эту функцию или еще что-то. Решение где-то рядом, но куда не ткнутьсь, там не так тут не эток.