Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
#include <Expert\Signal\SignalMA.mqh>
CSignalMA SignalMA;
int TickCount;
string Str;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
TickCount=0;
SignalMA.Symbol(Symbol());
SignalMA.Period(PERIOD_H1);
SignalMA.Weight(0.5);
SignalMA.PeriodMA(20);
SignalMA.Shift(0);
SignalMA.Method(MODE_SMA);
SignalMA.Applied(PRICE_CLOSE);
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
TickCount++;
Str = "LongCondition = " + IntegerToString(SignalMA.LongCondition())+"; "+IntegerToString(TickCount)+ "\n";
Str = Str + "ShortCondition = " + IntegerToString(SignalMA.ShortCondition())+"; "+IntegerToString(TickCount);
Comment(Str);
}
//+------------------------------------------------------------------+
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Period: changing of timeframe is forbidden
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Symbol: changing of symbol is forbidden
Можно ли использовать модули торговых сигналов отдельно от советников создаваемых визардом? Для тестирования написал
#include <Expert\Signal\SignalMA.mqh>
CSignalMA SignalMA;
int TickCount;
string Str;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
TickCount=0;
SignalMA.Symbol(Symbol());
SignalMA.Period(PERIOD_H1);
SignalMA.Weight(0.5);
SignalMA.PeriodMA(20);
SignalMA.Shift(0);
SignalMA.Method(MODE_SMA);
SignalMA.Applied(PRICE_CLOSE);
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
TickCount++;
Str = "LongCondition = " + IntegerToString(SignalMA.LongCondition())+"; "+IntegerToString(TickCount)+ "\n";
Str = Str + "ShortCondition = " + IntegerToString(SignalMA.ShortCondition())+"; "+IntegerToString(TickCount);
Comment(Str);
}
//+------------------------------------------------------------------+
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Period: changing of timeframe is forbidden
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Symbol: changing of symbol is forbidden
Следующий код:
вызывает конструктор для label при каждом вызове функции.
По следующему коду : в первом случае индикатор ставится,по второму нет (переключаю слешами).Ошибок не выдает.
По этой библиотеке по второму варианту выводит 0.Все остальные функции вроде работают.
По следующему коду : в первом случае индикатор ставится,по второму нет (переключаю слешами).Ошибок не выдает.
Насколько я понял, на данный момент все три параметра являются обязательными.
Поэтому номер окна в котором индикатор будет выводиться нужно указывать (варианты:0 - главное окно, ChartIndicatorsTotal() - новое окно, от 0 до ChartIndicatorsTotal()-1 - конкретное существующее окно).
Вот то что не выдает ошибок не есть хорошо.
По этой библиотеке по второму варианту выводит 0.Все остальные функции вроде работают.
Скорей всего перед получением цены следует использовоть рефреши (как минимум RefreshRates).
Правильный вариант должен выглядеть примерно так
Спасибо.С Бидом действительно заработало,после указания рефреша.
Но вот с выводом индикатора,с использованием библиотеки требует 2 параметра.Подокно и хендл.Иначе ругается ,на неверное чиcло параметров.Тут я не могу разобраться,потому как в самой библиотеке используется тот же ChartIndicatorAdd.Получается что напрямую работает,а вызов через библиотеку нет.
Спасибо.С Бидом действительно заработало,после указания рефреша.
Но вот с выводом индикатора,с использованием библиотеки требует 2 параметра.Подокно и хендл.Иначе ругается ,на неверное чиcло параметров.Тут я не могу разобраться,потому как в самой библиотеке используется тот же ChartIndicatorAdd.Получается что напрямую работает,а вызов через библиотеку нет.
С использованием библиотеки требует 2 параметра. Чарт и подокно.
Без хендла? И как же система узнает какой ставить индюк? ..Пока доверял тому что написано :) Подокно и хендл.
Без хендла? И как же система узнает какой ставить индюк? ..Пока доверял тому что написано :) Подокно и хендл.
По поводу библиотеки (из справки по классу)
IndicatorAdd
Добавляет на указанное окно графика индикатор с указанным хэндлом.
По поводу непосредственной работы ChartIndicatorAdd.
ChartIndicatorAdd
Добавляет на указанное окно графика индикатор с указанным хэндлом.
Что касается класса CChart.
Чтобы не было лишних вопросов стараемся предерживаться трех основных правил:
1. Смотрим в исходники, если что-то не понятно смотрим в документацию (помним что исходники всегда скажут "правду", а документация может и соврать);
2. Если для нас важна реализация ООП, начинаем с описания конкретного класса и доходим до "непосредственных исполнителей". Если важна "реальная работа", ООП нужно изучать в последнюю очередь (нисходящее/восходящее изучение кода);
3. Если после ознакомления с документацией и исходниками что-то не понятно, идем на форум.
Непосредственно по реализации метода IndicatorAdd в классе
Если посмотреть исходник становится ясно что методу передаются подокно и хендл (как и указано в справке), а третий параметр берется из данных хранящихся в самом классе (я про идентификатор графика).