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

Мультитаймфреймовая стратегия и CCI

romanick

New Member
NinjaTrader
Добрый день!
Требуется получить значение функции индикатора CCI со второго таймфрема. Но почему-то возвращаемые значения далеки от реальных, - тех которых наблюдаю на графике.

Делаю так:
1. Add(PeriodType.Minute, 15); в функции Initialize()
2. В OnBarUpdate() делаю Print(Time[0] + " " + CCI(BarsArray[1], 21)[0]) что теоретически должно возвратить текущее значение индикатора CCI на M15-графике. Но значения отличаются кардинально. Реально значение больше плюс 175, а функция возвращает минус 145.
Что я делаю не так?
Основной тайм-фрейм - M1. Print делаю когда BarsInProgress==0, т.е. обрабатываю по-идее только закрытие баров основного таймфрейма (в Initialize() стоит CalculateOnBarClose = true;)
 
romanick сказал(а):
Что я делаю не так?

попробуйте сравнить с кодом вложенного индикатора...... он наносит машку на рабочий график по значениям иного размера/вида графика.
 

Вложения

  • xcMovAvg.tar.gz
    19,7 КБ · Просмотры: 74
romanick, получилось с кодом?

если вам как индикатор нужен, то ниже пример.
как образец - рабочий график 3ренж, дополнительный 5ренж по которому берется расположение двух машек с параметром 3 и 7.
выдает текстовое сообщение на графике.

Код:
protected override void Initialize()
        {
			
			CalculateOnBarClose = false;
            Overlay = true;
            PriceTypeSupported	= false;
			PaintPriceMarkers = false;
			DisplayInDataBox = false;
			Add(PeriodType.Range,3);
			Add(PeriodType.Range, 5);
			
			// Note: Bars are added to the BarsArray and can be accessed via an index value
			// E.G. BarsArray[1] ---> Accesses the 3-Range Bars object added above
		}

		protected override void OnBarUpdate()
        {
			if (CurrentBars[0]<BarsRequired ||CurrentBars[1]<BarsRequired ||CurrentBars[2]<BarsRequired)//Make sure we have enough bars
				return;
				
			// Checks MA conditions on 5R (higher time frame) and Draw Visual Label on 3R (lower time frame)
			if (SMA(BarsArray[2], 7)[0] - SMA(BarsArray[2], 3)[0] <=2*TickSize//Maximum 2 pips between MAs
				&& Highs[2][0] > SMA(BarsArray[2], 7)[0]//Price breaks above SMA 7
				&& Rising(SMA(BarsArray[2],7)) && Rising(SMA(BarsArray[2],3)))//both SMAs Rising
			DrawTextFixed("Possible Long", " POSSIBLE LONG ON 3R ", tPosition, Color.White, textFontMed, Color.Gray, Color.DarkBlue, 10);
				else
			RemoveDrawObject("Possible Long");
			
			if (SMA(BarsArray[2], 3)[0] - SMA(BarsArray[2], 7)[0] <=2*TickSize//Maximum 2 pips between MAs
				&& Lows[2][0] < SMA(BarsArray[2], 7)[0]//Price breaks below SMA 7
				&& Falling(SMA(BarsArray[2],7)) && Falling(SMA(BarsArray[2],3)))//both SMAs Falling
			DrawTextFixed("Possible Short", " POSSIBLE SHORT ON 3R ", tPosition, Color.White, textFontMed, Color.Gray, Color.DarkOrange, 10);
				else
			RemoveDrawObject("Possible Short");
       		
		}

как применить значение индикатора от другого графика в роботе ........ пока разбираю. ::dry.gif::
 
Назад
Верх Низ