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

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

Страницы: 1
графический интерфейс, библиотека для создания формы ввода
 
Ввод данных с клавиатуры и обработку мышиных кликов можно реализовать с помощью таблиц (раздел "Функции для работы с таблицами Рабочего места QUIK"). Вот готовый пример (для ввода в конкретное поле, нужно кликнуть по нему - выделиться зеленым - затем вводить либо с клавиатуры (цифры над буквами, а не те, что справа [примечение: в этом примере ноль вводится клавишей "минус"]), либо щелкать по соотв. полям таблицы):
Код
run    = true
hTable = nil


--------------------------------------------------------------------OnInit
function OnInit(path)  
  
   hTable = AllocTable() 
 
   AddColumn(hTable,1 ,"", true, QTABLE_STRING_TYPE, 10)
   AddColumn(hTable,2 ,"SO limit price", true, QTABLE_STRING_TYPE, 10)
   
   AddColumn(hTable,3, "SO real price",true,QTABLE_STRING_TYPE,10)
   AddColumn(hTable,4, "TP price",true, QTABLE_STRING_TYPE,10)
   AddColumn(hTable,5, "SL limit price",true, QTABLE_STRING_TYPE,10)
   AddColumn(hTable,6, "SL price",true, QTABLE_STRING_TYPE,10)
   
   AddColumn(hTable,7, "TP offset",true, QTABLE_STRING_TYPE,10)
   AddColumn(hTable,8, "TP SPREAD",true, QTABLE_STRING_TYPE,10)
   
   CreateWindow(hTable)
   SetWindowCaption(hTable, "xxx")
   
   row = InsertRow(hTable, -1)
   SetCell(hTable, 1, 1, "Buy")
   
   InsertRow(hTable, -1)   
   
   InsertRow(hTable, -1)   
   SetCell(hTable, 3, 1, "Sell")
   
   InsertRow(hTable, -1)
   InsertRow(hTable, -1)
     SetCell(hTable, 5, 1, "1")
     SetCell(hTable, 5, 2, "2")
     SetCell(hTable, 5, 3, "3")
   InsertRow(hTable, -1)
     SetCell(hTable, 6, 1, "4")
     SetCell(hTable, 6, 2, "5")
     SetCell(hTable, 6, 3, "6")
   InsertRow(hTable, -1)
     SetCell(hTable, 7, 1, "7")
     SetCell(hTable, 7, 2, "8")
     SetCell(hTable, 7, 3, "9")
     SetCell(hTable, 7, 4, "0")
     SetCell(hTable, 7, 5, "<")
      
  SetTableNotificationCallback(hTable, tableCallback)
   
end 
-----------------------------------------------------------------------------

lastSelectedCol = 3
lastSelectedRow = 1

numpad = { {1,2,3}, {4,5,6}, {7,8,9,0,-1}}

------------------------------------------------
function tableCallback(t_id, msg, par1, par2)

if msg == QTABLE_VKEY then
    
      if par2>=49 and par2<=57 or par2==189 then--numpad[par2]~=nil then
       
            if par2==189 then 
                par2 = 48 
            end
         
            local num = GetCell(hTable,lastSelectedRow,lastSelectedCol)
         
            if num.image == "" then 
                    
                num=0                 
            else                            
                num = tonumber(num.image)
            end
                  
            SetCell(hTable, lastSelectedRow, lastSelectedCol, tostring(num*10+((par2-48)%10)))
            
      elseif par2==8 then
         
            local num = GetCell(hTable,lastSelectedRow, lastSelectedCol)
         
            if num.image == "" then 
                  
                num=0 
            else            
                num = tonumber(num.image)
            end
        
                SetCell(hTable, lastSelectedRow, lastSelectedCol, tostring(num/10 - (num%10)/10))
            end
elseif msg == QTABLE_LBUTTONDOWN  then
  
      if (par1==1 or par1==3) then
    
          SetColor(hTable,lastSelectedRow, lastSelectedCol, QTABLE_DEFAULT_COLOR,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR,QTABLE_DEFAULT_COLOR)     
          lastSelectedCol = par2
          lastSelectedRow = par1
  
          SetColor(hTable,par1, par2, RGB(100,250,100),QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR,QTABLE_DEFAULT_COLOR)
  
      elseif (par1>=5) and numpad[par1-4][par2]~=nil then
               
          local oldVal = GetCell(hTable,lastSelectedRow,lastSelectedCol).image
          local num = GetCell(hTable,par1,par2).image
                    
          if num == "<" then      
                    
                SetCell(hTable,lastSelectedRow,
                lastSelectedCol,string.sub(oldVal,1,string.len(oldVal)-1) or "")                   
          else
                SetCell(hTable,lastSelectedRow,lastSelectedCol,oldVal..num)   
          end
      end
   
end

end

---------------------------------------------------------------------------main  
function main()  
  
  while run do
    sleep(2000)
  end  
 
 end
 
 -------------------------------------------------------------------------------OnStop
 
 function OnStop(s)
   run = false 
   DestroyTable(hTable)
 end 
Формальные методы
 
> Вы случаем форум не перепутали?
Согласен, такой вопрос можно задать на любом программистском форуме. Этот форум интересен по след. причинам:
- интересна данная предметная область (хочу написать робота)
- я думаю, здесь в основном (не считая тех, кто не отличает луи второго) независимые программисты, которые не скованы правилами предприятий и сами исследуют, экспериментируют
- повышенные требования к надежности ПО
Поэтому интересно, используют ли опытные люди какие-либо математические (строгие) методы написания и отладки ПО (верификация, синтез из спецификации) или в основном используют обычное тестирование и здравый смысл.

Во всяком случае, надеюсь, кому-то это тема покажется интересной и перспективной.
Формальные методы
 
Добрый день.
Вопрос к практикам. Используете ли Вы при разработке торговых программ (имеется в виду не разработка торгового алгоритма - в какой момент совершать операции, на какие паттерны реагировать и т.д. - а техническая сторона, т.е. совокупность системных функций терминала, реализующая конкретный торговый алгоритм) формальные методы?

"Термин  формальные методы подразумевает ряд операций, в состав которых входит создание формальной спецификации системы, анализ и доказательство спецификаций, реализация системы на основе преобразования формальной спецификации в программы и верификация программ." [Соммервилл, 2002, стр. 188]

Большой список соответствующих инструментов, теорий приведен здесь.
Наглядная выборка:
  • Z notation
    Язык описания программ, не привязан к конкретному ЯП
  • Coq
    Система для доказательства теорем, синтеза функциональных программ
  • Java Modeling Language
    Язык описания java программ, привязан к языку java
  • Leon
    Язык описания и синтеза Scala программ
Нестрого, наверное, можно представить шкалу систематичности, на левом конце которой полностью интуитивное программирование, примитивные способы структурирования кода, а на правом - проработанные (но практически пока менее эффективные) теории вроде calculus of inductive constructions, refinement calculus. Так вот, интересуют методы из правой половины (видел, где-то здесь упоминали синтез конечных автоматов, например).
Quik Junior. Таблица всех сделок для фьючерсов пуста
 
Здравствуйте! Предоставьте, пожалуйста, доступ к таблице всех сделок для FORTS. Логин: 101890.
Quik Junior (7.0.4.10): General Protection Fault при запуске
 
swerg, спасибо за объяснение. Значит, альтернативное решение - запускать info.exe из Program Files от имени администратора?
Quik Junior (7.0.4.10): General Protection Fault при запуске
 
Imersio Arrigo, спасибо за ответ, все заработало! Переустановил в С:\QUIK-Junior. Проблема была в пробеле в имени папки?
Quik Junior (7.0.4.10): General Protection Fault при запуске
 
Добрый день!
ОС  Windows 10, при первом и последующих запусках терминала (файл info.exe) появляется сообщение:



В папке с программой (С:\Program Files\QUIK-Junior) нет папки dmp.
Подскажите, где взять файл дампа, если он нужен.
И как заставить программу работать?
Страницы: 1
Наверх