- Почему в тестере не работает пользовательский индикатор
- iMAOnArray - помогите, пожалуйста!
- Вопросы от начинающих MQL4 MT4 MetaTrader 4
// Смысл советника, что он сравнивает три точки на индикаторе
// ОsMA и в случае, что если вторая точка больше первой и третья меньше второй
// то дается сигнал на продажу (верхний перегиб). Если же вторая точка меньше первой,
//а третья больше второй, то дается сигнал на покупку (верхний перегиб).
// Расчет всех трех точек индикатора
OsmaOdin = 10000000*iOsMA(NULL,0,12,26,9,PRICE_OPEN,2);
Alert("Номер тика ",Count," Величина OsmaOdin равняется = ", OsmaOdin);
OsmaDva = 10000000*iOsMA(NULL,0,12,26,9,PRICE_OPEN,1);
Alert("Номер тика ",Count," Величина OsmaDva равняется = ", OsmaDva);
OsmaTri = 10000000*iOsMA(NULL,0,12,26,9,PRICE_OPEN,0);
Alert("Номер тика ",Count," Величина OsmaTri равняется = ", OsmaTri);
//-------------------------------------------------------4--------------------------------------
// Запрос и присвоение переменной total количества открытых и отложенных ордеров.
total=OrdersTotal();
//-------------------------------------------------------5--------------------------------------
if(total<1)
{
// Проверка отсутствия открытых ордеров -------------5.1---------------------------------------
if(AccountFreeMargin()<(1000*Lots))
{
Print("У нас недостаточно денег. Свободные средстваFree Margin = ", AccountFreeMargin());
return(0);
}
//-------------------------------------------------------5.1--------------------------------------
// Проверка возможности ордера на ПОКУПКУ, индикатор находится в нижней части прогиба--------
//-------------------------------------------------------5.2--------------------------------------
if(OsmaOdin>OsmaDva && OsmaDva<OsmaTri)
{
Alert("Ситуация для ПОКУПКИ ");
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,0,"macd sample",16384,0,Green);
Alert("Номер ордера ticket = ",ticket);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Alert("Ошибка при открытии ордера на Покупку. № ошибки = ",GetLastError());
return(0);
}
Вот пожалуйста
// Смысл советника, что он сравнивает три точки на индикаторе
// ОsMA и в случае, что если вторая точка больше первой и третья меньше второй
// то дается сигнал на продажу (верхний перегиб). Если же вторая точка меньше первой,
//а третья больше второй, то дается сигнал на покупку (верхний перегиб).
// Расчет всех трех точек индикатора
OsmaOdin = 10000000*iOsMA(NULL,0,12,26,9,PRICE_OPEN,2);
Alert("Номер тика ",Count," Величина OsmaOdin равняется = ", OsmaOdin);
OsmaDva = 10000000*iOsMA(NULL,0,12,26,9,PRICE_OPEN,1);
Alert("Номер тика ",Count," Величина OsmaDva равняется = ", OsmaDva);
OsmaTri = 10000000*iOsMA(NULL,0,12,26,9,PRICE_OPEN,0);
Alert("Номер тика ",Count," Величина OsmaTri равняется = ", OsmaTri);
//-------------------------------------------------------4--------------------------------------
// Запрос и присвоение переменной total количества открытых и отложенных ордеров.
total=OrdersTotal();
//-------------------------------------------------------5--------------------------------------
if(total<1)
{
// Проверка отсутствия открытых ордеров -------------5.1---------------------------------------
if(AccountFreeMargin()<(1000*Lots))
{
Print("У нас недостаточно денег. Свободные средстваFree Margin = ", AccountFreeMargin());
return(0);
}
//-------------------------------------------------------5.1--------------------------------------
// Проверка возможности ордера на ПОКУПКУ, индикатор находится в нижней части прогиба--------
//-------------------------------------------------------5.2--------------------------------------
if(OsmaOdin>OsmaDva && OsmaDva<OsmaTri)
{
Alert("Ситуация для ПОКУПКИ ");
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,0,"macd sample",16384,0,Green);
Alert("Номер ордера ticket = ",ticket);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Alert("Ошибка при открытии ордера на Покупку. № ошибки = ",GetLastError());
return(0);
}
Вот пожалуйста
OsmaTri = 10000000*iOsMA(NULL,0,12,26,9,PRICE_CLOSE,0);
Тогда с каждым тиком вы будете получать измененное значение, а значение по цене OPEN уже не изменится.
Точно также можно получить значение индикатора по любой другой цене. Смотрите ценовые констаны
В коде у вас все правильно. Просто имейте в виду, что вы запросили данные по ЦЕНЕ ОТКРЫТИЯ. И, вероятно, сравниваете эти данные со значением индикатора, посчитанного по ЦЕНЕ ЗАКРЫТИЯ. Тогда вам просто нужно изменить параметры расчета индикатора, например:
Тогда с каждым тиком вы будете получать измененное значение, а значение по цене OPEN уже не изменится.
Точно также можно получить значение индикатора по любой другой цене. Смотрите ценовые констаны
Большое СПАСИБО. я сделал как вы сказали, и у меня все заработало как планировалось. Только я теорию вашего ответа не понял. А откуда программа знает цену закрытия ? и соответсвенно почему все таки не расчитывается по ценам открытия ?
Большое СПАСИБО. я сделал как вы сказали, и у меня все заработало как планировалось. Только я теорию вашего ответа не понял. А откуда программа знает цену закрытия ? и соответсвенно почему все таки не расчитывается по ценам открытия ?
Для нулевого бара цена закрытия - это текущая цена BID, которая постоянно меняется вплоть до закрытия бара. Когда бар сформирован и его индекс стал не ноль, а один, цена закрытия становится фиксированной и далее не меняется.
По ценам открытия считать тоже можно, почему же нельзя? Просто тот индикатор, который вы видите визуально, скорее всего был построен по ценам закрытия. Когда вы присоединяете индикатор к графику, вы же выбираете, по каким ценам считать:
Для нулевого бара цена закрытия - это текущая цена BID, которая постоянно меняется вплоть до закрытия бара. Когда бар сформирован и его индекс стал не ноль, а один, цена закрытия становится фиксированной и далее не меняется.
По ценам открытия считать тоже можно, почему же нельзя? Просто тот индикатор, который вы видите визуально, скорее всего был построен по ценам закрытия. Когда вы присоединяете индикатор к графику, вы же выбираете, по каким ценам считать:
Все понял . Еще раз большое СПАСИБО.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования