Решил сделать несложный торговый скрипт с использованием флагов:
если на последней закрытой свече close>open, то происходит buy
если на последней закрытой свече close<open, то происходит sell
Чтобы скрипт на тренде не совершал новых сделок, то я решил добавить флаги по логике: flag=0 - исходное значение flag=1 - присваивается после buy flag=0 - присваивается после sell И по описанной логике код работает все время до отключения.
Все это включено в код ниже, но он работает только если flag отключены.
Если flag активны, то в таблице даже цены не появляются.
В чем моя ошибка? Как правильно прописывать флаги?
Код
------------------------------------------
local SecCode="MMM3" --код тикера
local Depo="XXXX" --счет-депо
------------------------------------------
--условие остановки скрипта
local stopped = false
local T = {}
function OnStop()
stopped = true
return 2000
end
--основной блок
function main()
local Table = AllocTable()
--создаем таблицу
AddColumn(Table, 1,"Тикер", true, QTABLE_STRING_TYPE, 13)
AddColumn(Table, 2,"Close", true, QTABLE_DOUBLE_TYPE, 13)
AddColumn(Table, 3,"Open", true, QTABLE_DOUBLE_TYPE, 13)
CreateWindow(Table)
SetWindowCaption(Table, "Test")
SetWindowPos(Table, 0, 10, 390, 90)
InsertRow(Table, -1)
while stopped==false do
--получаем количество свечей
local N = getNumCandles("Price")
--получаем данные по идентификаторам на графике
local Price, N, Name = getCandlesByIndex("Price", 0, N-2,1) --идентификатор цены на графике - Price
flag=0 --ИСХОДНОЕ ЗНАЧЕНИЕ ФЛАГА
--заполняем таблицу данными
SetCell(Table, 1, 1, tostring("IMOEX"))
SetCell(Table, 1, 2, tostring(Close))
SetCell(Table, 1, 3, tostring(Open))
--------------------------------------------------------------------------------------------------------------
--отправка заявки на покупку при срабатывании условия
if Close>Open and flag==0 then --ИДЕТ ПРОВЕРКА ЗНАЧЕНИЯ ФЛАГА
local ID_B_Order=10
local Order = {
["ACTION"]="NEW_ORDER",
["ACCOUNT"]= Depo,
["OPERATION"] = "B",
["CLASSCODE"]="SPBFUT",
["SECCODE"] = SecCode,
["PRICE"] = "0",
["QUANTITY"] = tostring(1),
["TRANS_ID"] = tostring(ID_B_Order),
["TYPE"] = "M",
}
local Err_Order = sendTransaction(Order)
message(Err_Order)
flag=1 --ФЛАГ МЕНЯЕТ ЗНАЧЕНИЕ НА 1 ПОСЛЕ СДЕЛКИ
elseif Close<Open and flag==1 then --ИДЕТ ПРОВЕРКА ЗНАЧЕНИЯ ФЛАГА
local ID_S_Order=1
local Order = {
["ACTION"]="NEW_ORDER",
["ACCOUNT"]= Depo,
["OPERATION"] = "S",
["CLASSCODE"]="SPBFUT",
["SECCODE"] = SecCode,
["PRICE"] = "0",
["QUANTITY"] = tostring(1),
["TRANS_ID"] = tostring(ID_S_Order),
["TYPE"] = "M",
}
local Err_Order = sendTransaction(Order)
message(Err_Order)
flag=0 --ФЛАГ МЕНЯЕТ ЗНАЧЕНИЕ НА ИСХОДНОЕ (0)
end
end
sleep(1000)
end
end
Владимир написал: Beginner, Ответы: 0) Нет, и быть не может никакой таблицы, все ряды которой закрашены серым цветом. Её нужно а) создать и б) покрасить все её ячейки в серый цвет 1) Таблица прорисовывается в текстовом режиме, а линии рисуются в графическом, поэтому нарисовать черную горизонтальную линию между 1 и 2 рядом невозможно - можно только эмулировать её отдельной строкой таблицы. 2) Воспользоваться функцией SetColor.
Владимир, а как в setcolor индекс прописать? В этом и есть основной вопрос
Есть таблица, все ряды которой закрашены серым цветом. Вопросы: 1) как нарисовать черную горизонтальную линию между 1 и 2 рядом? 2) как покрасить ячейки с индексами 1,2 и 2,3 в цвет RGB(255,0,0)?