Помогитете пожалуйста

Страницы: 1
RSS
Помогитете пожалуйста, Запись данных в таблицу.
 
Посмотрите пожалуйста и подскажите где я неправ? Это мои первые строки в жизни на програмном языке) буду благодарен любой критике и помощи. Цель была написать таблицу которая пополняется пока терминал работает.

IsRan=true
while IsRun do
function OnAllTrade(alltrade)
if alltrade.sec_code=="xxx" then
cena=tostring(alltrade.price)
data=tostring(alltrade.datetime)
kolvo=tostring(alltrade.qty)
end;
a={ }
b="cena"
c="data"
d="kolvo"
a[b]=cena
a[c]=data
a[d]=kolvo
end;
end.


и если ее потом вывести в файл будет ли она иметь вид

cena            data           kolvo
10                 25.10        67
20                 25.10        3
8                   25.10        800
и тд...

и если я не прав в своих суждения то очень прошу подскажите как это сделать, смотрю в книгу и вижу фиги))
 
а в чем собственно сложности? Лучше писать о проблеме, чем вот так вот "будет ли работать".  
 
Максим,
В коде очень много ошибок, проще показать как оно должно быть
Код
IsRan=true 
function OnAllTrade(alltrade) 
   if alltrade.sec_code=="xxx" then 
      cena=tostring(alltrade.price) 
      data=tostring(alltrade.datetime.year)..tostring(alltrade.datetime.month)..tostring(alltrade.datetime.day)
      kolvo=tostring(alltrade.qty) 
      a={}
      a["cena"]=cena 
      a["data"]=data 
      a["kolvo"]=kolvo 
   end
end
   
function main()
   while IsRun do 
      sleep(1000)
   end
end
 
Спасибо огромаднейшее
 
А таблица после вывода будет иметь вид как ч описывал или нет? И еще вопрос. Код который вы прислали там есть sleep(1000) то есть запись будет производиться каждую секунду?
и в вашем коде цикл стоит помле описания переменных и функции - это принципиальный момент или этт дело вкуса?  
 
Цитата
Максим написал:
А таблица после вывода будет иметь вид как ч описывал или нет?
вопрос не понятен.
Если нужно узнать "что будет если" проще всего запустить код и самостоятельно увидеть результат.


Цитата
Максим написал:
И еще вопрос. Код который вы прислали там есть sleep(1000) то есть запись будет производиться каждую секунду?

Нет.
sleep вообще никак не влияет на OnAllTrade т.к. он в функции main которая живет в отдельном потоке.
Данная конструкция нужна чтобы скрипт не завершал работку сразу после запуска а висел пока его не остановят.

Цитата
Максим написал:
и в вашем коде цикл стоит помле описания переменных и функции - это принципиальный момент или этт дело вкуса?

Во первых, всё что вне функции mail крутится в основном потоке терминала.
А значит если Вы опишите бесконечный цикл, то терминал просто зависнет.
Во вторых, Ваша конструкция абсолютно лишена смысла и логики, зачем описывать функцию внутри цикла?
Если хотите можно функцию main написать в верху, а OnAllTrade внизу, разницы никакой нет.
 
А как сделать чтобы допустим каждые 10 минут создавалась такая таблица?  
 
Максим,

OnAllTrade срабатывает по событию, а не по таймеру.
Если нужно по таймеру, то нужно избавиться от OnAllTrade и вместо нее использовать функцию getItem (см. документацию, раздел "Функции для обращения к строкам произвольных таблиц QUIK")
Эту функцию, нужно вызывать внутри main, там же где и sleep. В самом sleep установить нужное значение паузы
 
Почитал я про getitem, но что то не пойму как она помочь может. Может я вопрос изначально неправильно задал. Попробую еще раз сформулировать. Допуским после написания скрипта моя табличка всех сделок заполняется. Можно ли сделать так чтобы на каждую свечу выползала такая таблица? То есть свеча закончилась и таблица продолжила бы заполняться уже для другой свечи, то есть грубо говоря хочу чтоб моя таблица была побита на интересующие меня таймфреймы. Подскажите про что нужно почитать чтоб так вышло?
 
Максим,

т.е. грубо говоря Вам нужно из тиковых данных сделать 10 минутные, как на графике?
Тогда можно обойтись вообще без OnAllTrade, ведь уже готовые данные можно получить через CreateDataSource с параметром INTERVAL_M10
она выдаст нужные данные в уже готовом виде.
 
Хмм... про такое мне не попадалось, спасибо почитаю про эту функцию. А эти готовые данные с таблицы всех сделок берутся в текущем времени?
 
Т.к. меня интересуют параметры qty, price, flags
 
Цитата
Максим написал:
А эти готовые данные с таблицы всех сделок берутся в текущем времени?
Данные будут выглядеть также как Вы их видите на графике.

Цитата
Максим написал:
Т.к. меня интересуют параметры qty, price, flags

если с qty, price проблем нет, то flags Вы через CreateDataSource  не получите.
Собственно не понятно зачем Вам это и изначально про него речи небыло.
 
Мне это нужно чтобы я мог видеть так называемый "горизоотальный объем" но выраженый не графически а в табличной форме. Поэтому мне нужно как то сделать так чтобы на каждую свечу у меня выпадала табличка в файл вот в таком виде:


Цена___количество бумаг___направл сделки
 10_________180________________продажа
 20 и тд
 30 и тд
 40 и тд
 50 и тд
Где 180 - количество бумаг которые наторговали за 10 минут
Направление сделки роказывает кто преобладал на рынке за эти 10 минут.
Но как это сделать не знаю поэтому пытаю вас т.к. больше никто нигде ничего объяснять не хочет
   
 
У меня была идея такая: вывожу таблицу всех сделок, если цена повторяется то бумаги будь то они на продажу или на покупку суммируются, если цена отлична от тех что уже имеется в таблице то она записывается новой строчкой, затем посчитать сколько в итоге было куплено и продано и сравнить, на основании этого написать направление сделок, но в программировании я новичок поэтому тыкаюсь как слепой котенок маме в задницу
 
Цитата
Максим написал:
Мне это нужно чтобы я мог видеть так называемый "горизоотальный объем" но выраженый не графически а в табличной форме. Поэтому мне нужно как то сделать так чтобы на каждую свечу у меня выпадала табличка в файл вот в таком виде:

т.е. каждые 10 минут Вам нужно видеть сделки за последние 10 минут.
это решается через ту же getItem.
в main делаем цикл, который через getItem будет перебирать сделки за последние 10 минут.
т.к. getItem берет данные из таблиц по номеру строки, то оптимальней всего будет реализовать цикл начиная с конца таблицы.
с каждой строки, берем код инструмента, время сделки, количество и цену. ПО коду инструмента отфильтровываем не нужные инструменты. По времени смотрим входит ли сделка в нужный промежуток 10 минут.
Если да, то сохраняем данные или показываем в таблице. Если нет то прерываем цикл.
Прошу понять что задачей поддержки не является написание кода на заказ.
Мы можем только посоветовать алгоритм, либо помочь найти причины возникшей ошибки.
Если у Вас недостаточно опыта в программировании, наверное лучше найти человека который сможет реализовать Ваш алгоритм за вознаграждение, на нашем форуме такие есть.
 
Спасибо за подсказку)) а на счет вознаграждения ч создавал тему) но никто не откликнулся, вот сам и колупаюсь))
Страницы: 1
Читают тему
Наверх