[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 359

 
sergeev:
у всех
я про нормальные
 
drm1:
я про нормальные

А что такое - нормальные?
 
Zhunko:
Как-то путано Вы выражаетесь... Покажите код, который будет работать с тиками, открывать/закрывать позиции без функции старт. Код полноценного советника без функции страт?

Ну вообще-то, судя по Вашему портфолио, не мне Вам что-то объяснять!..-) Поясню сначала свое понимание функции старт(), и почему мне не нравится идея с организацией цикла в ней. Считаю, что функция старт это выделенная пользователю (вернее его программе - Эксперту) процедура из внутренней системы прерываний терминальной программы. Ну и зациклиться внутри этого прерывания или организовывать там свою систему прерываний - ну у меня рука наверное не поднимется. Хотя в документации MQ-шники пишут, пожалуйста - цикл while () вам в руки, зацикливайтесь на здоровье в start(). А кто мешает нам зациклиться в init()?, через тот-же вайл цикл, и никто дергать не будет извне!. Все переменные и константы доступны, все функции работают так-же. Хотите котировку получить?, с какой периодичностью? Ну вот пример кода, с периодичностью в 5 сек вы будете получать СВЕЖУЮ котировку, полученную по последнему тику и сохраненную в массиве Close [0] :

//-------------------------------------------
int init()
{
bool end;
while(!end)
{
Sleep (5000);
Print ("Котировка = ", Close[0]);
}
return(0);
}
//--------------------------------------------
int start() {return(0);}
//--------------------------------------------
int deinit() {return(0);}
//--------------------------------------------

В МТ5, кстати, разработчики уже дали пользователям несколько прерываний, за что им человеское спасибо! Не могу удержаться от цитирования:

эксперты в MQL5 могут содержать предопределенные функции-обработчики несколько типов событий

OnTick – поступление нового тика;

OnTimer – событие таймера;

OnTrade - торговое событие;

OnChartEvent – события ввода от клавиатуры и мышки, события перемещения графического объекта, событие окончания редактирования текста в поле ввода объекта LabelEdit;

OnBookEvent – событие изменения состояния стакана цен (Depth of Market).


 
Vinin:

А что такое - нормальные?
чтобы работали,штатный конвертер никак не работает
 
drm1:
чтобы работали,штатный конвертер никак не работает

у всех работает.
 
sergeev:

у всех работает.
это ххорошо что у всех работает значит я торможу
 
Grein:

Ну вообще-то, судя по Вашему портфолио, не мне Вам что-то объяснять!..-) Поясню сначала свое понимание функции старт(), и почему мне не нравится идея с организацией цикла в ней. Считаю, что функция старт это выделенная пользователю (вернее его программе - Эксперту) процедура из внутренней системы прерываний терминальной программы. Ну и зациклиться внутри этого прерывания или организовывать там свою систему прерываний - ну у меня рука наверное не поднимется. Хотя в документации MQ-шники пишут, пожалуйста - цикл while () вам в руки, зацикливайтесь на здоровье в start(). А кто мешает нам зациклиться в init()?, через тот-же вайл цикл, и никто дергать не будет извне!. Все переменные и константы доступны, все функции работают так-же. Хотите котировку получить?, с какой периодичностью? Ну вот пример кода, с периодичностью в 5 сек вы будете получать СВЕЖУЮ котировку, полученную по последнему тику и сохраненную в массиве Close [0] :

//-------------------------------------------
int init()
{
bool end;
while(!end)
{
Sleep (5000);
Print ("Котировка = ", Close[0]);
}
return(0);
}
//--------------------------------------------
int start() {return(0);}
//--------------------------------------------
int deinit() {return(0);}
//--------------------------------------------

Ну, наконец-то! Про это здесь почитайте. Только в старте эксперта и скрипта работают функции с ожиданием. Во всех остальных местах это жёстко пресекается.

Ваш код не подходит под стандарты языка MQL4. Ещё, где-то было написано, что ожидание в функциях инит и деинит при системном вызове ограничено 2,5 секундами. Затем, функция принудительно завершается.

 

Знатоки, подскажите! Как реализовать это в жизнь? Работаю с индикатором "Bollinger Bands", нужно чтоб после пересечения линии по середине активировался порог включения.

1. Все по стандарту, если цена стала < нижней линии, то Bay

2. Если > верхней, то Sell

3. Если цена пробила линию по середине, то вкл TrailingStop

Внимание вопрос! Как привязать порог включения трейлинг стопа к линии по середине?

 
Top2n:

Знатоки, подскажите! Как реализовать это в жизнь? Работаю с индикатором "Bollinger Bands", нужно чтоб после пересечения линии по середине активировался порог включения.

1. Все по стандарту, если цена стала < нижней линии, то Bay

2. Если > верхней, то Sell

3. Если цена пробила линию по середине, то вкл TrailingStop

Внимание вопрос! Как привязать порог включения трейлинг стопа к линии по середине?


Первое, что пришло на ум:
Если нижняя линия находится на уровне 20, а верхняя на уровне 40, то линия, расположенная ровно посередине между ними, на каком уровне будет располагаться?

Уверен, что быстро ответите - на уровне 30. А теперь, надеюсь, сможете найти как это всё подсчитать. Хотя... может и другой метод найдёте... :)

 
Top2n:

Знатоки, подскажите! Как реализовать это в жизнь? Работаю с индикатором "Bollinger Bands", нужно чтоб после пересечения линии по середине активировался порог включения.

1. Все по стандарту, если цена стала < нижней линии, то Bay

2. Если > верхней, то Sell

3. Если цена пробила линию по середине, то вкл TrailingStop

Внимание вопрос! Как привязать порог включения трейлинг стопа к линии по середине?



1. "Все по стандарту, если цена стала < нижней линии, то Ваy" - ага, а если выше, то бай бай депозит... :-))) Научитесь грамоте для начала - Bay - это с аглицкого пока... Почему то, уверен, что это не опечатка...

2. У Вас по Боленджеру - есть прямой доступ к верхней и нижней его границе...а точнее к их значениям... получаете эти значения.

"Если нижняя линия находится на уровне 20, а верхняя на уровне 40, то линия, расположенная ровно посередине между ними, на каком уровне будет располагаться?" -

как Вам уже люди рекомендовали...

Складываете полученные значения, после чего их делите на два - в итоге имеете серединную линию энтого индикатора - от этого значения и вяжите порог включения трала.

П.С. Артем, извини, за "доработку" стартеру Вашего ответа - уж сильно Bay - понравился... а после моего коммента по этому вопросу - мне было необходимо уж добить этот " порог включения трейлинг стопа к линии по середине."

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