• Тинькофф Банк-лучшие банковские продукты еще выгоднее
    Выбирайте продукт от банка Тинькофф
  • Уважаемые форумчане, друзья и посетители!
    Поступило предложение ( ссылка на обсуждение ) на сбор средств поддержания форума в рабочем состоянии с 1 июня ( оплата хостинга, бэкап ежедневный на другой хостинг и тд), отчетность будет предоставляться ежемесячно. Пока на ЮMoney ( яндекс деньги), доступно картой перевод, далее добавлю другие способы. Сумму перевода указывайте на ваш выбор исходя из своих возможностей.
    Форум продолжает свою работу благодаря Вашим пожертвованиям.

Программирование Помогите с кодом

mobilfriend

New Member
NinjaTrader
Ребята, как правильно прописать, чтобы находясь на минутных барах индикатор рисовал 60 минутки... например через DrawRectangle ? второй вечер туплю
 
Зачем вам это писать. Наложите ещё одну датасерю поверх минуток часовой и получите то что хотите. Ничего писать не надо
 
Аркадий, благодарю за быстрый ответ.... я попробовал, но как -то некрасиво... при выделении региона рамкой исчезают тени свечей старшего фрейма, все гармонично и понятно сразу же... поэтому хотелось бы отрисовать 60 минут через DrawRectangle();
 
не пойму про какое выделение вы говорите и что исчезает. давайте скрин, а то может вы что то делаете не так, или есть другой вариант решения вопроса
 
когда я накладываю вторую Data Series, то получается порно....неудобно так.... IMG_1911.jpg
 
не совсем ,прям, то .... мой косяк, что не уточнил про NT7... попробую разобраться. Спасибо, Аркадий!
 
Делаешь ДатаСерию

protected override void Initialize()
{
AddDataSeries(Instrument.FullName, PeriodType.Minute , 60);

}

И потом в OnBarUpdate уже получаешь Хай и Лоу часового ТФ на первом Тике и рисуешь прямоугольник. Так же отлавливаешь время начальное и задаешь конечное для прямоугольника.

protected override void OnBarUpdate()
{
if(CurrentBars[0] > 0)
{
if (BarsInProgress == 1)
{
if (FirstTickOfBar)
{
double _high = High[0]; //double startY
double _low = Low[0]; //double endY

DateTime _time_start = Time[0]; //DateTime startTime
DateTime _time_end = Time[0].AddMinutes(60); //DateTime endTime

DrawRectangle(string tag, bool autoScale, DateTime startTime, double startY, DateTime endTime, double endY, Color color, Color areaColor, intareaOpacity) ;
}
}
}
}
 
Спасибо большое еще раз! чуть подправил.... буду наслаждаться теперь на своей винтажной NT 7*........For Reference:

protected override void Initialize()
{
Add("ES 06-19", PeriodType.Minute , 60);
Overlay = true;
CalculateOnBarClose = false;
}


protected override void OnBarUpdate()
{
if(CurrentBars[0] > 0); //if(CurrentBars[0] <1) return;
{
if (BarsInProgress == 1)
{
if (FirstTickOfBar)
{
double high = High[0]; //double startY
double low = Low[0]; //double endY

DateTime time_start = Time[0]; //DateTime startTime
DateTime time_end = Time[0].AddMinutes(-60); //DateTime endTime
DrawRectangle("tag1"+CurrentBar, false, time_start, high, time_end, low, Color.SkyBlue, Color.Blue, 2) ;
}
}
}

}
 

Вложения

  • IMG_1928.jpg
    IMG_1928.jpg
    87,8 КБ · Просмотры: 31
Add("ES 06-19", PeriodType.Minute , 60); Тут у тебя косяк )) сегодня контракт 06 месяц а через квартал будет 09. Будешь каждый квартал менять имя инструмента руками? Сделай так как было что бы автоматом определяло или вообще убери сделав так: Add(PeriodType.Minute , 60);
 
Назад
Верх Низ