Ответить
23.03.2015, 07:33
Аватар для Fairy
Fairy Fairy вне форума Прохожий
За призовое место в конкурсе 

Регистрация: 23.03.2015 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
Благодарю за ваше внимание Г-да программисты.

Вопрос:
До 600 билда проблем особо не было. Но с его появлением у 90% моих индикаторов перестал работать counted_bars.
3 Месяца ломала голову и придумала разбивать код на части, вводя его порциями через iCustom. Таким образом необходимые мне индикаторы опять заработали через counted_bars.
Но есть ряд индикаторов, которым мне нужно добавить TimeFrame. Но тут у меня плывут все линии.
Первый iCustom я получаю из кода RSI. В нем видимо вся проблема. Пыталась заменить его на iRSI c добавлением counted_bars, но через iRSI я получаю совершенно не те параметры для работы индикатора, так как в этом случае надо указывать буфер. А буфер занят параметром mode.
Потому в итоге в конечном коде у меня есть просто набор буферов, работающих через iCustom, и counted_bars прекрасно со своей работой справляется. Но вот TimeFrame который нужен позарез заставляет все линии плыть. Может подскажите мне какую не будь формулу для оптимизации значения TimeFrame чтобы линии не плыли?
24.03.2015, 12:52
Аватар для owjedi
owjedi owjedi вне форума Интересующийся
Регистрация: 23.03.2015 / Сообщений: 11
Поблагодарили 1 раз в 1 сообщении / Репутация: 2

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

Подскажите пожалуйста кто в "теме":
Может ли советник работать без привязки к окну графика?
Через какую функцию вернуть факт получения тика по любому инструменту счета, возможно ли это?
Я написал простенький советник, но работает он у меня только на графике, а я хочу не открывать десятки графиков и запускать его в них, а чтобы он сам производил мониторинг инструментов счета.
Есть ли какие-нибудь стандартные функции через которые это можно реализовать?
Какие функции обработки событий использовать?
24.03.2015, 14:27
Аватар для Cemen4yk1
Cemen4yk1 Cemen4yk1 на форуме Местный житель
Регистрация: 18.09.2014 / Сообщений: 227
Поблагодарили 247 раз(а) / Репутация: 248
Подскажите пожалуйста кто в "теме":
Может ли советник работать без привязки к окну графика?
Через какую функцию вернуть факт получения тика по любому инструменту счета, возможно ли это?
Я написал простенький советник, но работает он у меня только на графике, а я хочу не открывать десятки графиков и запускать его в них, а чтобы он сам производил мониторинг инструментов счета.
Есть ли какие-нибудь стандартные функции через которые это можно реализовать?
Какие функции обработки событий использовать?
ну на 1 график та его повесить всёравно придётся, а "обращатся" он может к любым "символам" есть же Symbol() и пляшите от него
24.03.2015, 16:18
Аватар для owjedi
owjedi owjedi вне форума Интересующийся
Регистрация: 23.03.2015 / Сообщений: 11
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
ну на 1 график та его повесить всёравно придётся, а "обращатся" он может к любым "символам" есть же Symbol() и пляшите от него
Symbol() возвращает имя символа текущего графика. А я то от графика и хочу отвязаться и обрабатывать тики полученные по другим символам счета.
Есть у меня функция индикатора, туда же через запятую символы не впишешь. Надо переменную, переменной присвоить символы. Вот тут и вопрос в какой момент советник понимает, что поступил тик по символу не принадлежащему данному графику, но указанному мной в переменной.
Или я все не так понимаю.
И еще подскажите, пожалуйста, функция Start срабатывает при поступлении любого тика в терминале по счету или тика графика на котором прикреплен советник. Или надо какой-то другой обработчик событий использовать. Есть onTick, но не могу понять как он работает и чем отличается от Start.
24.03.2015, 20:49
Регистрация: 13.03.2009 / Сообщений: 2,325
Поблагодарили 1,945 раз(а) / Репутация: 2018
Symbol() возвращает имя символа текущего графика. А я то от графика и хочу отвязаться и обрабатывать тики полученные по другим символам счета.
Есть у меня функция индикатора, туда же через запятую символы не впишешь. Надо переменную, переменной присвоить символы. Вот тут и вопрос в какой момент советник понимает, что поступил тик по символу не принадлежащему данному графику, но указанному мной в переменной.
Или я все не так понимаю.
И еще подскажите, пожалуйста, функция Start срабатывает при поступлении любого тика в терминале по счету или тика графика на котором прикреплен советник. Или надо какой-то другой обработчик событий использовать. Есть onTick, но не могу понять как он работает и чем отличается от Start.
В советнике OnTick и Start обе эти функции выполняются одинаково, с приходом тика по символу на графике которого он стоит.
Как вариант есть OnTimer(). Он по времени.
Можно сравнивать прошлую цену с текущей по любому символу, если цена изменилась, значит по нему есть тик.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 24.03.2015 в 20:51.
owjedi 
25.03.2015, 15:59
Аватар для _SERG_
_SERG_ _SERG_ на форуме Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Symbol() возвращает имя символа текущего графика. А я то от графика и хочу отвязаться и обрабатывать тики полученные по другим символам счета.
Есть у меня функция индикатора, туда же через запятую символы не впишешь. Надо переменную, переменной присвоить символы. Вот тут и вопрос в какой момент советник понимает, что поступил тик по символу не принадлежащему данному графику, но указанному мной в переменной.
Или я все не так понимаю.
И еще подскажите, пожалуйста, функция Start срабатывает при поступлении любого тика в терминале по счету или тика графика на котором прикреплен советник. Или надо какой-то другой обработчик событий использовать. Есть onTick, но не могу понять как он работает и чем отличается от Start.
У данного вопроса есть варианты.
Сам такой вопрос раньше задавал.
Определись с целями и выбери решение.
Решения: "Надстройка" или циклический опрос инструментов.
Отличаются реализацией. Можешь все котировки из МТ4 в PIP толкать и там своим приложением обрабатывать, со всеми вытекающими. (Ну пропустишь одну котировку, что это завалит всю систему?)

Последний раз редактировалось _SERG_; 25.03.2015 в 16:23.
owjedi 
25.03.2015, 18:58
Аватар для dimon_777
dimon_777 dimon_777 вне форума Прохожий
Регистрация: 22.02.2011 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
Добрый вечер!
Составил функцию - гляньте пожалуйста правильно ли

int Bar_Order() //фунция - был ли открыт ордер на текущем баре
{
RefreshRates();
int order = 0; //сколько ордеров открывалось на текущем баре (обнуляем)
datetime time_open = 0; //время открытия последнего ордера(обнуляем)
datetime otk_bar = Time[0]; //узнаем время открытия текущего бара
for(int i=OrdersHistoryTotal()-1; i >=0; i --) //выбираем из истории последний закрытый ордер
{
if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)==true) //если выбрали...
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)//если выбрали...
time_open = OrderOpenTime(); //узнаем время открытия последнего ордера
if(time_open >= otk_bar) order=1; //возвращаем order=1 - был открыт ордер на текущем баре
else order=0; // order=0 - не открывался ордер на текущем баре
}
return(order);
}
25.03.2015, 21:51
Аватар для dimon_777
dimon_777 dimon_777 вне форума Прохожий
Регистрация: 22.02.2011 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
пока ждал ответ понял в чем ошибка:
эти две переменных надо было объявить в начале , а не в функции

datetime time_open , otk_bar;

перед

int OnInit()
25.03.2015, 23:12
Аватар для matro3
matro3 matro3 вне форума Почётный гражданин
Регистрация: 18.07.2013 / Сообщений: 349
Поблагодарили 340 раз(а) / Репутация: 344
_http://forum.mql4.com/ru/38949/page4#434235
26.03.2015, 07:46
Аватар для owjedi
owjedi owjedi вне форума Интересующийся
Регистрация: 23.03.2015 / Сообщений: 11
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
У данного вопроса есть варианты.
Сам такой вопрос раньше задавал.
Определись с целями и выбери решение.
Решения: "Надстройка" или циклический опрос инструментов.
Отличаются реализацией. Можешь все котировки из МТ4 в PIP толкать и там своим приложением обрабатывать, со всеми вытекающими. (Ну пропустишь одну котировку, что это завалит всю систему?)
Большое спасибо. С целями определился. Пока вопрос c мультивалютной работой моего советника решил вот так:

int start()
{
int _symbolsTotal = SymbolsTotal(false); // true – только символы в MarketWatch
int i;
for (i=0;i<_symbolsTotal;i++)
{
string _symbolName = SymbolName(i,false); // номер в списке / true – только символы в MarketWatch
\\--------------------------------------------------
Мой советник (_symbolName);
\\-------------------------------------------------
}
return (0);
}
26.03.2015, 21:32
Аватар для _SERG_
_SERG_ _SERG_ на форуме Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Большое спасибо. С целями определился. Пока вопрос c мультивалютной работой моего советника решил вот так:

int start()
{
int _symbolsTotal = SymbolsTotal(false); // true – только символы в MarketWatch
int i;
for (i=0;i<_symbolsTotal;i++)
{
string _symbolName = SymbolName(i,false); // номер в списке / true – только символы в MarketWatch
\\--------------------------------------------------
Мой советник (_symbolName);
\\-------------------------------------------------
}
return (0);
}
Ну это только перебор символов рынка, по поступившей котировке, и никак не мультивалютник. А что касается "Мой советник (_symbolName);" то именно здесь и суть будет. Надо рассмотреть, как это на самом деле работает, а не как ты об этом думаешь. Обработку ордеров советника, котировки по инструментам, обновление цен...... и т.д.

Последний раз редактировалось _SERG_; 26.03.2015 в 21:40.
27.03.2015, 06:55
Аватар для ViMax
ViMax ViMax вне форума Интересующийся
Регистрация: 21.03.2015 / Сообщений: 4
Поблагодарили 0 раз(а) / Репутация: 1
Доброго дня, уважаемые!

Подскажите, пожалуйста...
Как и где и какую функцию прописать в советнике, что бы он проверял, входной параметр MagicNumber?
Пример:
if MagicNumber=AccountNumber*2-12345

Т.е. получается, что MagicNumber, будет для разных счетов, разный.

Заранее благодарен!
28.03.2015, 05:58
Аватар для vladradon
vladradon vladradon на форуме Активный участник
Регистрация: 12.02.2015 / Сообщений: 143
Поблагодарили 58 раз(а) / Репутация: 57
Доброго дня, уважаемые!

Подскажите, пожалуйста...
Как и где и какую функцию прописать в советнике, что бы он проверял, входной параметр MagicNumber?
Пример:
if MagicNumber=AccountNumber*2-12345

Т.е. получается, что MagicNumber, будет для разных счетов, разный.

Заранее благодарен!
Магик обычно проверяется при закрытии ордеров или подсчете профита или суммарного лота - т.е. в функциях каких-то при наличии уже открытых ордеров. Магик для разных счетов может быть одинаковый - он и нужен для того, чтобы на одном счете и одном инструменте торгов различать ордера от разных сов или по направлению торгов (разделение по бай и селл) или и то и другое. Вот к примеру простая функция закрытия всех ордеров с заданным магиком.
void closeall()
{
for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--)
{
int x=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol() && (OrderMagicNumber() == Magic)
{
if(OrderType()==OP_BUY) x=OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue) ;
if(OrderType()==OP_SELL) x=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
}
}
}
28.03.2015, 06:37
Аватар для kamilkz
kamilkz kamilkz на форуме Почётный гражданин
Регистрация: 10.03.2010 / Сообщений: 297
Поблагодарили 338 раз(а) / Репутация: 339
Приветствую всех!
Недавно начал изучать программирование, сейчас в начальной (ясельной) стадии.
У меня просьба: нужна функция для определения расстояния от цены до ближайшего отложенного ордера.
Как оформить - меня затрудняет. Помогите, пожалуйста. Заранее благодарю.
28.03.2015, 08:33
Аватар для vladradon
vladradon vladradon на форуме Активный участник
Регистрация: 12.02.2015 / Сообщений: 143
Поблагодарили 58 раз(а) / Репутация: 57
Приветствую всех!
Недавно начал изучать программирование, сейчас в начальной (ясельной) стадии.
У меня просьба: нужна функция для определения расстояния от цены до ближайшего отложенного ордера.
Как оформить - меня затрудняет. Помогите, пожалуйста. Заранее благодарю.
int Spread()
{
int a=-1, b=0;
int r;
for (r=0;r<OrdersTotal();r++)
{
if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == Symbol() && (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)) b=MathAbs(Bid-OrderOpenPrice())/_Point;
if (b>0 && a<0) a=b;
if (a>0 && b>0 && a>b) a=b;
}
}
return(a);
}
Как вариант. Вернет -1, если не найдет отложенников, либо расстояние в пунктах до ближайшего.
28.03.2015, 08:47
Аватар для kamilkz
kamilkz kamilkz на форуме Почётный гражданин
Регистрация: 10.03.2010 / Сообщений: 297
Поблагодарили 338 раз(а) / Репутация: 339
Спасибо большое.
28.03.2015, 21:56
Аватар для owjedi
owjedi owjedi вне форума Интересующийся
Регистрация: 23.03.2015 / Сообщений: 11
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Ну это только перебор символов рынка, по поступившей котировке, и никак не мультивалютник. А что касается "Мой советник (_symbolName);" то именно здесь и суть будет. Надо рассмотреть, как это на самом деле работает, а не как ты об этом думаешь. Обработку ордеров советника, котировки по инструментам, обновление цен...... и т.д.
Так и есть, меня перебор то подумать и заставил. И спросить не знал как и посмотреть негде. Сам советник строю на Ишимоку, по моему ему все равно на какой паре работать. Обработка ордеров, котировки по инструментам, обновление цен все это важно, но это второй этап. Самое главное, что он пересечения тенкан и киджун с подтверждением чикоуспан по всем инструментам ищет и на почту уведомления мне отправляет. А Ваш мультивалютник работает? Я видел вы моим вопросом постов 100 назад задались.
29.03.2015, 06:40
Аватар для vladradon
vladradon vladradon на форуме Активный участник
Регистрация: 12.02.2015 / Сообщений: 143
Поблагодарили 58 раз(а) / Репутация: 57
Спасибо большое.
Помогло хоть? Я функцию чирканул чисто по твоим данным, что ты описал в вопросе, но в ней нет проверки меджика и разграничений между buy и sell из отложенников. Добавить мной перечисленное не сложно, но придется уже не один параметр выводить и функцию в разряд void прописать. В любом случае удачи!
29.03.2015, 13:18
Аватар для _SERG_
_SERG_ _SERG_ на форуме Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Так и есть, меня перебор то подумать и заставил. И спросить не знал как и посмотреть негде. Сам советник строю на Ишимоку, по моему ему все равно на какой паре работать. Обработка ордеров, котировки по инструментам, обновление цен все это важно, но это второй этап. Самое главное, что он пересечения тенкан и киджун с подтверждением чикоуспан по всем инструментам ищет и на почту уведомления мне отправляет. А Ваш мультивалютник работает? Я видел вы моим вопросом постов 100 назад задались.
Всё поместил в OnTimer(), по факту зациклил.
29.03.2015, 13:47
Аватар для owjedi
owjedi owjedi вне форума Интересующийся
Регистрация: 23.03.2015 / Сообщений: 11
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Всё поместил в OnTimer(), по факту зациклил.
OnTimer() должен срабатывать если торговля закрыта или нет?

Я тоже сегодня в него поместил:

void OnTimer()
{
Print("Сработал таймер на выполнение алгоритма");

А сообщения в журнале не вижу.

Он разве по природе своей не циклически работает?

Сталкивались с тем, что алгоритм в тестере работает без ошибок, а на счете вообще не работает? В тестере пересечения по всем инструментам в журнал пишет. А на счете молчит ни в журнал ни на почту, а я жду от него писем с сигналами, думал нет еще пересечений, смотрю так по 3-м парам фунту, йене и евро. А сегодня случайно тестил по сегодняшний день и в тесте каждый день по 3 сигнала по всяким парам и акциям. По информации с журнала тестера все сигналы на своих инструментах-графиках фактически есть, а терминал на VPS молчал все эти дни.
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 00:14. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO