Дмитрий вы говорили что не писатель! Однако! Поздравляю вас с приятным начинаием. Приятно осознать, что вы начели с небольшого материала, пусть он не такой уж и обьемный, главное ведь начать, а там как пойдет будите всё дольше и больше набирать опыта через свои статьи и\или от других писателей.
Спасибо за внимание.
Дмитрий вы говорили что не писатель! Однако! Поздравляю вас с приятным начинаием. Приятно осознать, что вы начели с небольшого материала, пусть он не такой уж и обьемный, главное ведь начать, а там как пойдет будите всё дольше и больше набирать опыта через свои статьи и\или от других писателей.
Спасибо за внимание.
iMA_handle=iMA("EURUSD",PERIOD_H1,40,0,MODE_SMA,PRICE_CLOSE); //подключаем индикатор и получаем его хендл ....... ChartIndicatorAdd(ChartID(),0,iMA_handle); //добавляем индикатор на ценовой графикТак не работает. А вот если убрать символ и время то все ОК.
iMA_handle=iMA(NULL,0,40,0,MODE_SMA,PRICE_CLOSE);
несколько небольших вопросов:
1 что происходит или повторяется при изменении тайм-периода графика во время работы?
2 ima_handle определен в OnInit(), iMA_handle=iMA("EURUSD",PERIOD_H1,10,0,MODE_SMA,PRICE_CLOSE);
можно ли самостоятельно динамически изменять параметры этого хэндла, например, менять PERIOD_H1,10 на PERIOD_M15,39 во время работы?
3 Что такое сделка?
Поздравляю!
Чрезвычайно простой, хорошо написанный код... Я думаю, что, обратившись к библиотеке, вы сделали в нескольких строках то, что я сделал почти в 100 (только для открытия длинных и закрытия длинных позиций).
Особо обращаю внимание на эти строки:
if(m_Position.Select(my_symbol)) //если позиция для этого символа уже существует
{
if(m_Position.PositionType()==POSITION_TYPE_SELL) m_Trade.PositionClose(my_symbol); //если это позиция на продажу, то закрываем ее
if(m_Position.PositionType()==POSITION_TYPE_BUY) return; //иначе, если это позиция на покупку, то выходим
}
m_Trade.Buy(0.1,my_symbol); //если мы попали сюда, значит, позиции нет; тогда открываем ее
}
if(iMA_buf[1]<Close_buf[1] && iMA_buf[0]>Close_buf[0]) //если значения индикатора были меньше цены закрытия и стали больше
{
if(m_Position.Select(my_symbol)) //если позиция по этому символу уже существует
{
if(m_Position.PositionType()==POSITION_TYPE_BUY) m_Trade.PositionClose(my_symbol); //если это позиция на покупку, то закройте ее
if(m_Position.PositionType()==POSITION_TYPE_SELL) return; //иначе, если это позиция на продажу, то выходим
}
m_Trade.Sell(0.1,my_symbol); //если мы попали сюда, значит, позиции нет; тогда открываем ее
}
Единственное, что я упустил, это команду торговать только при появлении нового бара. Это обсуждалось в: www.mql5.com/en/forum/5762.
Я использую следующий код, опубликованный там mogplus8:
static int LastBarCount=0;
if(Bars(_Symbol,_Period)>LastBarCount)
LastBarCount=Bars(_Symbol,_Period);
else
return;
Я несколько озадачен вашим заявлением о Торговцах.
Представленные в статье трейды очень близки к "печатям" в артеле http://mqlmagazine.com/leading-article/orders-positions-and-deals-part-i/. Являются ли они одним и тем же? В чем их различия?
Кстати, на странице по ссылке автор утверждает: Каждый ордер, размещенный на рынке, является самостоятельной сделкой, со своим собственным результатом, не зависящим от других.
Я вставил эти слова сюда только для того, чтобы прояснить возможные заблуждения тех, кто обратил внимание на комментарии.
Спасибо.
- mqlmagazine.com

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Быстрый старт или краткий курс для начинающих:
Здравствуй дорогой читатель. В данной статье я попробую рассказать и покажу, как можно просто и быстро освоить принципы построения торговых советников, работу с индикаторами и т.д. Эта статья ориентирована на новичков, в ней не будет сложных и трудных для понимания примеров.
Автор: Дмитрий