Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1002

 
Vinin:

iBarShift

 

Это порядковый номер, а не значение бара.
 
001:
Это порядковый номер, а не значение бара.
Ну так, по порядковому номеру(индексу) и узнаем что хотим)) Справочник MQL4 / Предопределенные переменные          
 

Как программно рассчитать прибыль/убыток для SL/TP ордера в валюте депозита (Рубли)? 

Т.е. нужно получить в точности те цифры прибыли, которые МТ4 отображает при наведении мышкой на линию SL/TP или ее таскании мышкой же.

Получать MODE_TICKVALUE и умножать на расстояние в пунктах до SL/TP?  Пробовал - для EURUSD вроде точно показывает, совпадает,  а на других парах хоть небольшое расхождение да получается. Причем в МТ4 всегда больше хотя бы на несколько рублей. Например на GBPNZD. 

 

Сделал простой советник, который в журнал выводит информацию о появлении нового бара.

#property strict
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsNewBar(_Symbol,PERIOD_CURRENT)==true) Print("New bar!");
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//=== Function
bool IsNewBar(string f_Symbol,      // symbol
              ENUM_TIMEFRAMES f_TF) // timeframe
  {
//---
   static datetime f_LastBar=0;
   datetime f_CurrentBar=iTime(f_Symbol,f_TF,0);
//---
   if(f_LastBar!=f_CurrentBar)
     {
      f_LastBar=f_CurrentBar; return(true);
     }
   else return(false);
  }

Работает правильно, в том плане что на первом тике нового бара появляется сообщение. Вот только почему то время появления сообщения относится к предыдущему бару. Прилагаю рисунки. На первом видно, что текущее время 21:50:57 и есть только 2 новых сообщения. На 2-ом рис. текущее время 21:51:23, есть 3-я запись о новом баре И видел, что сообщение о нём появилось после 21:51:00 НО время записи в журнале почему то 20:50:47 (понятно, есть разница в 1 час между сервером и моим компом), что по моему времени не правильно. Можете у себя проверить? У всех так или это глюк?



 

Твои комповые часы отстают на несколько секунд или часы сервера чуток спешат, а может и то и другое. Выведи в Print() время текущего бара.

if(IsNewBar(_Symbol,PERIOD_CURRENT)!=true) Print("New bar! ", Time[0]);

или и серверное и локальное время

 
Vadim_2015:
Ну так, по порядковому номеру(индексу) и узнаем что хотим)) Справочник MQL4 / Предопределенные переменные          

Нет, здесь немного другое. Я спрашивал: Как в индикаторе узнать значение бара(НУЖНОГО ДНЯ) по его времени(по времени бара)? Если мы тупо подставляем в iBarShift время НУЖНОГО дня(например на ТФ Н1, то получим смещение по графику Д1, которое все время меняется с приходом нового дня , т.е каждый новый бар будем иметь одно и то же.

 
001:

Нет, здесь немного другое. Я спрашивал: Как в индикаторе узнать значение бара(НУЖНОГО ДНЯ) по его времени(по времени бара)? Если мы тупо подставляем в iBarShift время НУЖНОГО дня(например на ТФ Н1, то получим смещение по графику Д1, которое все время меняется с приходом нового дня , т.е каждый новый бар будем иметь одно и то же.


- Как в индикаторе узнать значение

что такое "значение" ?

- "Если мы тупо подставляем"

этот код "тупой" покажите, чтоб было о чем говорить. пока видно только ваше непонимание работы функции.

 

Доброго времени суток.

Столкнулся с проблемой при тестирование советников. Пару месяцев все было нормально, написал несколько советников которые открывали и закрывали ордера по моим правилам. В один прекрасный день очередной советник перестал тестироваться. Не зависимо от времени установленном в тестере проходит один месяц, всегда сентябрь 2014 и останавливается тест. Долго копался, загружал исторические данные и т.д. Потом решил переустановить Meta Trader, удалил и переустановил. Теперь перестали работать все имеющиеся советники в обще. Ордера не открываются. Исторические данные поступают. При включение визуализации график проходит нужный временной период, но торговля не идет. Подскажите хотя бы в каком направление копать все мои идеи закончились.

Заранее спасибо.

 
sergeev:

- Как в индикаторе узнать значение

что такое "значение" ?

- "Если мы тупо подставляем"

этот код "тупой" покажите, чтоб было о чем говорить. пока видно только ваше непонимание работы функции.


Даже спорить не буду. Слабоват в програмировании. От случая к случаю. Код позже. "Значение" - open.

 

всем привет скажите можно прописать треугольник по графику и вычислить тупой угол треугольника

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