Konstantin777 (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
nikolz написал:
Когда Вы изменяете инструмент на графике, то в индикаторе остается указатель на прежний инструмент. Поэтому он продолжает отображать данные первоначального инструмента.
но он отображает 0, а не данные предыдущего инструмента
Цитата
nikolz написал:
Поэтому для смены инструмента в индикаторе при смене его на графике Вам надо обеспечить отслеживание этой замены в индикатореи при обнаружении замены изменить источник данных для индикатора
причем тут источник данных? ведь данные из основного графика корректно считываются при смене инструмента
Цитата
nikolz написал:
Полагаю, что это можно сделать задействовав функции создания источника данных.
я не могу использовать эту функцию в индикаторе, судя по документации, так же как и getCandlesByIndex, я уже тестировал такой подход(создание источника данных) и он тоже не работает, но я уже не помню точно с чем именно там была проблема, так что возможно попробую еще раз и выложу результаты сюда
Цитата
nikolz написал:
Но помогать Вам я не буду, нет желания.
спасибо за советы еще раз, если обидел чем не поминайте лихом, добра Вам и Вашим близким
Цитата
Владимир написал:
давным-давно считаю все свечи сам, по нескольким сотням тикеров и по десятку таймфреймов у каждого из них.
не очень понимаю что Вы имеете ввиду
Цитата
Владимир написал:
Оно Вам надо?
ну у меня задача сделать именно индикатор, чтобы видно было что происходит, и так как инструментов много, по которым я хочу следить за ситуацией, мне не очень удобно при каждом заходе в квик заходить в настройки каждого нидикатора, чтобы он заработал.
С советником таких проблем не возникает, там эта функция не глючит
Цитата
Alexey Danin написал:
Действительно, такое поведение вероятно, Вам следует проработать алгоритм для обработки таких ситуаций или искать другой для решения Вашей задачи.
почему все работает нормально если зайти в настройки индикатора после смены таймфрейма, какое волшебство там происходит в этот момент? Если бы я мог это симулировать вручную, то проблема бы решилась легко. Я подозреваю что достаточно просто сделать то же самое при смене таймфрейма или при заходе в квик и функция заработает, для Ваших разработчиков это расплюнуть
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
nikolz написал:
высказывать недовольство
не высказывал, просто сообщил что такой подход я уже пробовал, и он не работает
Цитата
nikolz написал:
результат теста, а не рассказывать мне что вы делали что-то не работающее.
я тестировал такой же точно пример, зачем мне тестировать его еще раз? Если этот подход не сработал у меня, почему Вы считаете что он заработает если Вы его примените? Вот я и рассудил логически что и Ваш пример не сработает, потому что код одинаковый
Цитата
nikolz написал:
Я же не должен за вас все проверять
я просил помочь с конкретной проблемой, Вы мне показываете пример который ее не решает и просите протестировать, так как сами не знаете реашет он проблему или нет, так как не тестировали, я же тестировал такой же код, повторяюсь уже в который раз, и он не работает, но в любом случае спасибо за помощь
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
Konstantin777 написал:
я не понимаю чем Ваш пример от моего отличается.
понял, у Вас getCandlesByIndex вызывается в OnCalculate, а моем примере в Init. Однако
Цитата
Konstantin777 написал:
Я также тестировал пример с постоянными попытками забора значений свечей(как первых так и последних), и он также криво работает, тупо не видит цены, ни одной, однако если переставить индикатор все идет как по маслу.
я такой же пример сам писал, и все так же плохо работает
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Добрый день nikolz,
я не понимаю чем Ваш пример от моего отличается.
Цитата
nikolz написал:
Выкладываю пример, если что не так, напишите, поправлю.
При смене инструмента работает? При первом включении терминала работает? Меня ведь именно это интересует. Не сомневаюсь что Ваш пример работает, если поставить индикатор заново, так и у меня работает
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
s_mike@rambler.ru написал:
Надо понимать, что при загрузке терминала варианты 1,2 и 3 имеют гораздо более высокую вероятность, чем вариант 4. А вот в устоявшемся варианте, когда все данные терминалом прогружены, вы скорее всего будете получать вариант 4
Цитата
Konstantin777 написал:
Я также тестировал пример с постоянными попытками забора значений свечей(как первых так и последних), и он также криво работает, тупо не видит цены, ни одной, однако если переставить индикатор все идет как по маслу.
Цитата
nikolz написал:
посмотрите скрипт который я выложил на этом форуме для арбитража
если это скрипт, то в скрипте у меня тоже все работает нормально, проблема именно в индикаторе, где то была тема что функция getCandlesByIndex плохо работает именно в инидикаторах
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
nikolz написал:
если напишите словами и с картинкой, что хотите получить
ну я просто хочу получить значения high для 3 первых и последних последних свечей, как в примере, в первом сообщении, в коде индикатора, с двух разных графиков, один график источник, другой просто в том же окне, при установке индикатора мне все выдает правильно:

Но если я меняю инструмент, а также просто при старте квика мне выдает совсем другое, пока я не переставлю индикатор, т.е. не видит историю
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Цитата
Alexey Danin написал:
Дело в том, что у всех индикаторов в одном окне диаграммы имеется общее пространство позиций для свечек с единой сплошной нумерацией без пропусков
ну так это понятно, вопрос в том что меняется если мы переставляем инидкатор? и почему вдруг все начинает работать нормально? Я также тестировал пример с постоянными попытками забора значений свечей(как первых так и последних), и он также криво работает, тупо не видит цены, ни одной, однако если переставить индикатор все идет как по маслу. Так где пропуски конечно будет по 0 цена, я с этим уже сталкивался, но там где пропусков нет почему такое?
TS Lab + Quick Finam, проблема при настройке связки TS Lab и Quick для брокера Finam
 
работаю по следующей инструкции:
https://doc.tslab.pro/tslab/postavshiki-dannykh/rossiiskie-brokery/dokumentaciya-tslab-2.1-quik/nast...
пункт 2 гласит:
"Все инструменты, с которыми Вы планируете работать, должны быть заказаны заранее через настройки:
...
Пункт главного меню Система > Заказ данных > Поток обезличенных сделок"
захожу в это меню
Система->Настройки->Основные настройки->Программа-> Получение данных->Обезличенные сделки
и вижу пустоту

Quick версий 8.13.1.16, 9.2.3.15, 9.7.1.10
Брокер: Finam

Однако на брокере ВТБ(Quick 9.5.0.42) окно не пустое


Похоже при настройке я столкнулся со следующей проблемой "текущий бар не обновляется в режиме реал-тайм"
https://doc.tslab.pro/tslab/postavshiki-dannykh/rossiiskie-brokery/dokumentaciya-tslab-2.1-quik/nast...
то есть котировки в TS Lab показывает, но не отрисовывает текущую свечу, хотя текущую цену отрисовывает, и если нажимать кнопку обновить то свечи грузятся вплоть до последней и дальше опять тоже самое
по ссылке цитата:
"Если таблица пуста, проверьте, что включен запрос на обезличенные сделки и котировки по нужному инструменту.
Если все настроено согласно инструкции, обратитесь к брокеру, вероятно обезличенные сделки необходимо включить на стороне брокера."
Что мне делать чтобы исправить ситуацию?
getCandlesByIndex в индикаторе, getCandlesByIndex в индикаторе
 
Я хочу строить индикатор по нескольким источникам данных, но столкнулся с проблемой работы функции getCandlesByIndex.
getCandlesByIndex плохо работает при смене таймфрейма и инструмента(особенно при смене инструмента), значения цены high для одного из значений по крайней мере для первых и последних 3 свечей равно 0. Однако если переставить индикатор на график, все работает как положено. Как мне добиться того чтобы при смене таймфрейма и инструмента все работало хорошо? Для работы примера нужно наcтроить график фьючерса RIU2, вывести суммарный спрос и суммарное предложение и присвоить им на вкладке "дополнительно"соотвествующие индентификаторы "volumeBid" и "volumeAsk" соответственно
 
Код
Settings = {}
Settings.Name = '*Example'
Settings.line = 
{
    {
    Name = "Example",
    Color = RGB(0, 0, 0),
    Type = TYPE_LINE,
    Width = 2   
    }
}

local volumeBidCandles
local volumeAskCandles
local volumeBidPrice, volumeBidN, volumeBidName
local volumeAskPrice, volumeAskN, volumeAskName

function OnChangeSettings()

   message(
   "Изменились настройки: "   
   )

   Init()   

end


function Init()

   volumeBidCandles=0
   volumeAskCandles=0
      
   volumeBidN=0
   volumeAskN=0
      
   volumeBidPrice=nil
   volumeAskPrice=nil
        volumeBidCandles = getNumCandles("volumeBid")
   volumeAskCandles = getNumCandles("volumeAsk")
   
   
   
   volumeBidPrice, volumeBidN, volumeBidName=getCandlesByIndex("volumeBid", 0, 0, math.min(volumeBidCandles,volumeAskCandles))
   volumeAskPrice, volumeAskN, volumeAskName=getCandlesByIndex("volumeAsk", 0, 0, math.min(volumeBidCandles,volumeAskCandles))
   
   message(
   "Init: "   
   )
      

    return 1
   
end
 
function OnCalculate(index)

   if index==1 then

      Init()
   

      message(         
         "#volumeBidPrice " .. tostring(#volumeBidPrice).. "; \n"
         ..
         "#volumeAskPrice " .. tostring(#volumeAskPrice).. "; \n"
         ..
         "volumeBidPrice[volumeBidN-3].high " .. tostring(volumeBidPrice[volumeBidN-3].high).. "; \n"
         ..
         "volumeBidPrice[volumeBidN-2].high " .. tostring(volumeBidPrice[volumeBidN-2].high).. "; \n"
         ..
         "volumeBidPrice[volumeBidN-1].high " .. tostring(volumeBidPrice[volumeBidN-1].high).. "; \n"
         ..
         "volumeBidPrice[0].high " .. tostring(volumeBidPrice[0].high).. "; \n"
         ..
         "volumeBidPrice[1].high " .. tostring(volumeBidPrice[1].high).. "; \n"
         ..
         "volumeBidPrice[2].high " .. tostring(volumeBidPrice[2].high).. "; \n"
         ..
         "volumeAskPrice[volumeAskN-3].high " .. tostring(volumeAskPrice[volumeAskN-3].high).. "; \n"
         ..
         "volumeAskPrice[volumeAskN-2].high " .. tostring(volumeAskPrice[volumeAskN-2].high).. "; \n"
         ..
         "volumeAskPrice[volumeAskN-1].high " .. tostring(volumeAskPrice[volumeAskN-1].high).. "; \n"
         ..
         "volumeAskPrice[0].high " .. tostring(volumeAskPrice[0].high).. "; \n"
         ..
         "volumeAskPrice[1].high " .. tostring(volumeAskPrice[1].high).. "; \n"
         ..
         "volumeAskPrice[2].high " .. tostring(volumeAskPrice[2].high).. "; \n"
         )
   end   
   return 1
end
Страницы: 1
Наверх