Создать объект вертикальная линия с определенным именем, чтобы советник его мог найти.
Создать объект вертикальная линия с определенным именем, чтобы советник его мог найти.
Да, спасибо, это вариант. Например назову ее "start", советник сможет определить ее datetime, и будет использовать это datetime как время моего стартового бара.
А с помощью какой функции можно получить время вертикальной линии?
Что-нибудь типа:
string name="START_BAR"; ObjectCreate(0,name,OBJ_VLINE,0,Time[0],0); ChartRedraw(); MessageBox("Try to move VLINE, then press OK"); datetime start_time=ObjectGetInteger(0,name,OBJPROP_TIME); ObjectDelete(0,name); MessageBox(TimeToString(start_time));
Что-нибудь типа:
Спасибо! Работает. Сейчас у меня такая проблема: вышеприведенный код я использую при инициализации эксперта (onInit), а дальнейшую обработку веду по каждому тику (onTick). Почему то данные из первой части, в частности start_time, не передается во вторую часть. Как это решить?
//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2012, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ #property strict //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void OnInit() { string name="START_BAR"; ObjectCreate(0,name,OBJ_VLINE,0,Time[0],0); ChartRedraw(); MessageBox("Try to move VLINE, then press OK"); datetime start_time=ObjectGetInteger(0,name,OBJPROP_TIME); ObjectDelete(0,name); MessageBox(TimeToString(start_time)); } void OnTick() { int bar=iBarShift(0,0,start_time); }
Сейчас у start_time область видимости (и существования) только внутри функции OnInit.
Чтобы она везде была видна (и жила все время работы программы), ее нужно объявить на глобальном уровне, например, непосредственно перед OnInit, а внутри функции объявление (datetime) нужно убрать (иначе будет создана локальная переменная, которая "замаскирует" глобальную).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Прошу помочь советом, как бы проще привязать работу советника к определенной свече (т.е. чтобы алгоритм советника начинал свой расчет с определенной свечи)?
Назовем ее "стартовой свечой" :)
Я пока вижу два варианта, но оба мне не нравятся.
1. Использовать смещение стартовой свечи относительно той свечи, на которой происходит установка советника (т.е. например бар 5 относительно к иллюстрации, которая приложена). При этом прописать алгоритм определения времени этой стартовой свечи уже внутри советника, и дальше все пойдет при появлении новых баров. В принципе, нормально, но если работать на младших ТФ, то во время установки и прописания всех параметров, может появиться новая свеча, и возможны такие накладки/ошибки. А также очевидный минус - необходимость переуказания бара при перезапуске советника...
2. Указывать дату и время стартовой свечи при установке советника, а в дальнейшем он уже будет от нее отталкиваться при появлении новых баров. Но тут много ручной работы - указать день, час, минуты...
Есть элегантные идеи?