есть условие входа в позицю и есть отдельно тейк и стоп,когда складую вместе сразу после запуска виставляються лимитки,как зделать так чтоб лимитки виставлялись после входа в позицю?Заранее благодарен Вот скрипти run = true function main() while run do PriceStep = getParamEx('SPBFUT', 'RIH6' , 'SEC_PRICE_STEP').param_value Price = getParamEx('SPBFUT', 'RIH6', 'LAST').param_value PriceB = Price + 50 * PriceStep --маркет цена покупки local N1=getNumCandles("Price")
local N2=getNumCandles("MyPrice")
t1,n1,i1=getCandlesByIndex("Price", 0, N1-3, 2)
t2,n2,i2=getCandlesByIndex("MyPrice", 0, N2-3, 2) --сигнал на покупку (первый мувинг пересекает второй снизу вверх
if t1[0].close<t2[0].close and t1[1].close>t2[1].close then Open('SPBFUT', 'RIH6',PriceB , 1, 'B') end sleep(500) end end
function OnStop() run = false end
function Open(class_code, sec_code, price, qty, operation)
local res = sendTransaction(Transaction) if res ~= '' then message('Ошибка отправки транзакции: '..res) end end
И второй PriceStep = getParamEx('SPBFUT', 'RIH6' , 'SEC_PRICE_STEP').param_value Price = getParamEx('SPBFUT', 'RIH6', 'LAST').param_value PriceT = Price * 1+200 --маркет цена продажи SEC_PRICE_STEP = getParamEx('SPBFUT', 'RIH6' , 'SEC_PRICE_STEP').param_value STOP_LOSS=1; TAKE_PROFIT=3; stopprice= tostring(Price - TAKE_PROFIT*SEC_PRICE_STEP); stopprice2= tostring(Price + STOP_LOSS*SEC_PRICE_STEP); if operation(S) then send local Transaction = { ["ACTION"] = "NEW_STOP_ORDER", -- Тип заявки ["TRANS_ID"] = "2", ["CLASSCODE"]="SPBFUT", ["SECCODE"]="RIH6", ["ACCOUNT"]="SPBFUT011Ib", ["OPERATION"]="B", ["QUANTITY"]= "1", ["PRICE"]= tostring(PriceT), ["STOPPRICE"] = tostring(stopprice), -- Цена Тэйк-Профита ["STOP_ORDER_KIND"]= "TAKE_PROFIT_AND_STOP_LIMIT_ORDER", -- Тип стоп-заявки ["EXPIRY_DATE"]= "TODAY", ["OFFSET"] = tostring(2*SEC_PRICE_STEP), ["OFFSET_UNITS"] = "PRICE_UNITS", ["SPREAD"]= "30", ["SPREAD_UNITS"] = "PRICE_UNITS", ["STOPPRICE2"]= tostring(stopprice2), -- Цена Стоп-Лосса ["IS_ACTIVE_IN_TIME"]= "NO" } res = sendTransaction(Transaction); end
message('Выставление тейк-стоп: '..res,2)
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 11.02.2016
01.03.2016 20:24:25
О чом же я таком нереальном мечтаю,если вы о стопе 1п,то я его вбил для того чтоб быстрее понять работу скрипта
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 11.02.2016
01.03.2016 19:29:38
Здравствуйте,у меня опять проблема на этот рас с проскальзиваныем цены,заявка активируется но цена уходит,заявка не исполнена,Подскажите что сделать чтоб не проскальзивало,вот скрипт PriceStep = getParamEx('SPBFUT', 'RIH6' , 'SEC_PRICE_STEP').param_value Price = getParamEx('SPBFUT', 'RIH6', 'LAST').param_value PriceS = Price - 50 * PriceStep --маркет цена продажи t = {
прочитал ну так оступ=10 и тогда должна виставиться заявка на 30п тоесть от цени входа на 40п,ну никак на 500
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 11.02.2016
26.02.2016 19:58:05
я поставил стоп на 30п а заявка виставилась больше чем на 500п почему
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 11.02.2016
26.02.2016 19:04:06
Не указаны единицы измерения защитного интервала take profit стоп-заявки.В скрипте они есть почму же он их не видит? SEC_PRICE_STEP = getParamEx('SPBFUT', 'RIH6' , 'SEC_PRICE_STEP').param_value STOP_LOSS=3; TAKE_PROFIT=3; stopprice= tostring(PriceS - TAKE_PROFIT*SEC_PRICE_STEP); stopprice2= tostring(PriceS + STOP_LOSS*SEC_PRICE_STEP);
Ребят помогите кому не сложно розобраться с тейком и стопом и я чтоб не делал все равно ошибка,код вверху
Что за [ FORTS ] [ 90112 ] " SQLProxy ограничение борьбы с наводнениями " .Кто сталкивався?
Пользователь
Сообщений: Регистрация: 11.02.2016
22.02.2016 20:36:25
У меня слип(120000000000) делает 100 меседжей в секунду
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 11.02.2016
22.02.2016 17:02:29
Вот в чом ошибка:lua:46: '}' expected (to close '{' at line 39) near '[' PriceStep = getParamEx('SPBFUT', 'RIH6' , 'SEC_PRICE_STEP').param_value Price = getParamEx('SPBFUT', 'RIH6', 'LAST').param_value PriceS = Price - 50 * PriceStep --маркет цена продажи t = {
Что за [ FORTS ] [ 90112 ] " SQLProxy ограничение борьбы с наводнениями " .Кто сталкивався?
Пользователь
Сообщений: Регистрация: 11.02.2016
22.02.2016 16:56:29
Как ограничить количество заявок в секунду?
Что за [ FORTS ] [ 90112 ] " SQLProxy ограничение борьбы с наводнениями " .Кто сталкивався?
Пользователь
Сообщений: Регистрация: 11.02.2016
22.02.2016 14:33:13
Что за [ FORTS ] [ 90112 ] " SQLProxy ограничение борьбы с наводнениями " .Кто сталкивався?
Проблема с циклом
Пользователь
Сообщений: Регистрация: 11.02.2016
20.02.2016 20:44:06
всьоровно зависает
Трейлинг Стоп
Пользователь
Сообщений: Регистрация: 11.02.2016
19.02.2016 10:55:13
Мне не нужо програму,мне нужно код
Проблема с циклом
Пользователь
Сообщений: Регистрация: 11.02.2016
19.02.2016 10:49:49
тоесть?
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 11.02.2016
19.02.2016 10:49:03
В чом шибка стопа local Transaction = { ["ACTION"] = "NEW_STOP_ORDER", -- Тип заявки ["TRANS_ID"] = tostring(trans_id), ["CLASSCODE"] = "SPBFUT", ["SECCODE"] = "SRH6 ", ["ACCOUNT"] = "SPBFUT00963", ["OPERATION"] = "B" ["QUANTITY"] = "1", -- Количество в лотах ["PRICE"] = price, -- Цена, по которой выставится заявка при срабатывании Стоп-Лосса (для рыночной заявки по акциям должна быть 0) ["STOPPRICE"] = "10290", -- Цена Тэйк-Профита ["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER", -- Тип стоп-заявки ["EXPIRY_DATE"] = "TODAY", -- Срок действия стоп-заявки ("GTC" – до отмены,"TODAY" - до окончания текущей торговой сессии, Дата в формате "ГГММДД")
я правильно понял. stop_level и есть трейлинг он будет подтягиваит за индикатором,можно ли зделать что подтягивал за ценной и при достижениее б/у остановлявся на том уровне?
Трейлинг Стоп
Пользователь
Сообщений: Регистрация: 11.02.2016
19.02.2016 10:09:27
Я нашел один но трудно розобраться if string.find(package.path,'C:\\Program Files (x86)\\Lua\\5.1\\lua\\?.lua')==nil then package.path=package.path..';C:\\Program Files (x86)\\Lua\\5.1\\lua\\?.lua;' end if string.find(package.path,'C:\\Program Files\\Lua\\5.1\\lua\\?.lua')==nil then package.path=package.path..';C:\\Program Files\\Lua\\5.1\\lua\\?.lua;' end
require"QL" require"iuplua" log="auto_stop.log"
--Блок пользовательских переменных. Забиваем в визуальный интерфейс, который помнит ранее введённые данные. account="game997" cl_code="game997" sec="MSICHS" stop_level=5 --расстояние в шагах цены от индикатора, на котором срабатывает стоп. slippage=10 --проскальзывание при исполнении ордера в шагах цены. chart="auto_stop"
function OnStop(s) is_run = false toLog(log,'OnStop. Script finished manually') message ("auto_stop finished manually", 2) end
function main() log=getScriptPath()..'\\'..log toLog(log,"Start main") class=getSecurityInfo("",sec).class_code --Получаем размер лота lotsize=getParamEx(class,sec,"lotsize").param_value --Получаем цену последней сделки last=getParamEx(class,sec,"last").param_value step=getParamEx(class,sec,'SEC_PRICE_STEP').param_value stop_level=stop_level*step if string.find(FUT_OPT_CLASSES,class)~=nil then acc=account else acc=cl_code end while is_run do --получаем значение индикатора. Одинаково для Moving Average и Parabolic SAR n = getNumCandles (chart) if n==0 or n==nil then toLog(log,'Can`t get data fr om chart '..chart) message('Не можем получить данные с графика '..chart,1) is_run=false break end t,n,s = getCandlesByIndex(chart,0,n-1,1) indicator=t[0].close
sell_out_trigger=toPrice(sec, indicator-stop_level) --цена, при которой спускаем курок на продажу лонга buy_out_trigger=toPrice(sec, indicator+stop_level) --цена, при которой спускаем курок на откуп шорта
--Получаем текущий баланс по торгуемому инструменту
balance=getPosition(sec,acc) close_order_size=math.abs(balance/lotsize) --считаем размер ордера-закрывашки toLog(log,balance)
--ЗАКРЫТИЕ ПОЗИЦИЙ
if balance>0 and last < sell_out_trigger then toLog (log, 'Sell out signal. Balance='..balance..' Last='..last..' SellTrigerPrice='..sell_out_trigger) comment="sell_out!" --комментарий: продаём! sell_out=sell_out_trigger-slippage _,reply=sendLimit(class,sec,"S",sell_out,close_order_size,account,cl_code,comment) toLog(log, reply) end
if balance<0 and last > buy_out_trigger then toLog (log, 'Buy out signal. Balance='..balance..' Last='..last..' SellTrigerPrice='..buy_out_trigger) comment="buy_out!" --комментарий: продаём! buy_out=buy_out_trigger+slippage _,reply=sendLim it(class,sec,"B",buy_out,close_order_size,account,cl_code,comment) toLog(log, reply) end sleep(1000) --killAllOrders(table_mask) --рекомендуется после срабатывания стопа принудительно почистить все заявки в стакане по этому инструменту чтобы вдруг не осталось лишних, в том числе "забытых" по неосторожности. Бывает, что оставшиеся в стакане заявки блокируют средства и не дают продать по стопу. killAllOrders даст гарантию что на следующем круге цикла мы точно выйдем из позиции. end toLog(log,"Main ended") end
Трейлинг Стоп
Пользователь
Сообщений: Регистрация: 11.02.2016
19.02.2016 09:59:09
Есть пример на луа?
Проблема с циклом
Пользователь
Сообщений: Регистрация: 11.02.2016
18.02.2016 22:41:45
У меня при запуске робота с циклом сразу зависает терминал и нужно виходить,что делать?
ошибка транзакции
Пользователь
Сообщений: Регистрация: 11.02.2016
18.02.2016 22:30:49
а как правильно?
ошибка транзакции
Пользователь
Сообщений: Регистрация: 11.02.2016
18.02.2016 21:43:18
Вот обрезал нули но вибивает ошибку: неправильно указана цена,подсккажите почему? price = tostring(math.floor(getParamEx("SPBFUT", "SRH6", 'offer') .param_value))
t = {
["CLASSCODE"]="SPBFUT",
["SECCODE"]="SRH6 ",
["ACTION"]="NEW_ORDER",
["ACCOUNT"]="SPBFUT00963 ",
["CLIENT_CODE"]="G501963/RF ",
["TYPE"]="L",
["OPERATION"]="S",
["QUANTITY"]="1",
["PRICE"]=tostring(Price),
["TRANS_ID"]="1"
}
res=sendTransaction(t)
message(res,1)
Трейлинг Стоп
Пользователь
Сообщений: Регистрация: 11.02.2016
18.02.2016 21:30:14
Возможно ли переносить позицию в безубыток (тоесть трейлинг стоп), после достижения профита в 100п по РТС?
функция tonumber
Пользователь
Сообщений: Регистрация: 11.02.2016
17.02.2016 21:00:57
Функция tonumber должна обрезать нули,почему же она этого не делает ? priceB=tonumber (getParamEx("SPBFUT", "SRH6", 'offer').param_value)
t = {
["CLASSCODE"]="SPBFUT",
["SECCODE"]="SRH6 ",
["ACTION"]="NEW_ORDER",
["ACCOUNT"]=" ",
["CLIENT_CODE"]=" 99883 ",
["TYPE"]="L",
["OPERATION"]="S",
["QUANTITY"]="1",
["PRICE"]=tonumber(priceB),
["TRANS_ID"]="1"
}
res=sendTransaction(t)
message(res,1)
ошибка скрита
Пользователь
Сообщений: Регистрация: 11.02.2016
17.02.2016 20:36:41
Как исправить чтоб работало,вот ошибка 11: 'then' expected near '=' run=true
while run do
priceB=tostring (getParamEx("SPBFUT", "RIH6", 'offer').param_value) priceS=tostring (getParamEx("SPBFUT", "SRH6", 'bid').param_value) if priceB-priceS=20 then
message(спред) end;
sleep(60000) end
message
Пользователь
Сообщений: Регистрация: 11.02.2016
17.02.2016 19:44:41
priceB=tostring (getParamEx("SPBFUT", "SRH6", 'offer').param_value) message("покупайте по цене") message(priceB) Как зделать один месседж:покупайте по цене(цена)?
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 11.02.2016
17.02.2016 19:27:00
Цитата
Валентин написал: в данном случае спред относится к тейк профиту, как я понял. да, он нужен
local Transaction = { ["ACTION"] = "NEW_STOP_ORDER", -- Тип заявки ["TRANS_ID"] = tostring(trans_id), ["CLASSCODE"] = "SPBFUT", ["SECCODE"] = "SRH6 ", ["ACCOUNT"] = ACCOUNT, ["OPERATION"] = "B" ["QUANTITY"] = "1", -- Количество в лотах ["PRICE"] = price, -- Цена, по которой выставится заявка при срабатывании Стоп-Лосса (для рыночной заявки по акциям должна быть 0) ["STOPPRICE"] = stopprice, -- Цена Тэйк-Профита ["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER", -- Тип стоп-заявки ["EXPIRY_DATE"] = "TODAY", -- Срок действия стоп-заявки ("GTC" – до отмены,"TODAY" - до окончания текущей торговой сессии, Дата в формате "ГГММДД")
Подскажите пожалуйста в даной транзакции нужно условия Спреда,если робот торгует Маркет Ордерами? local Transaction = { ["ACTION"] = "NEW_STOP_ORDER", -- Тип заявки ["TRANS_ID"] = tostring(trans_id), ["CLASSCODE"] = "SPBFUT", ["SECCODE"] = "SRH6 ", ["ACCOUNT"] = ACCOUNT, ["OPERATION"] = "B" ["QUANTITY"] = "1", -- Количество в лотах ["PRICE"] = price, -- Цена, по которой выставится заявка при срабатывании Стоп-Лосса (для рыночной заявки по акциям должна быть 0) ["STOPPRICE"] = stopprice, -- Цена Тэйк-Профита ["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER", -- Тип стоп-заявки ["EXPIRY_DATE"] = "TODAY", -- Срок действия стоп-заявки ("GTC" – до отмены,"TODAY" - до окончания текущей торговой сессии, Дата в формате "ГГММДД")
["SPREAD"] = tostring(100*SEC_PRICE_STEP), ["SPREAD_UNITS"] = "PRICE_UNITS", -- Единицы измерения защитного спрэда ("PRICE_UNITS" - шаг цены, или "PERCENTS" - проценты)
Извините я в школе нимецкий учил,переводчик не помог,я всьоровно не понял как округлить если не сложно можете показать на примере
Не работает бесконечный цикл
Пользователь
Сообщений: Регистрация: 11.02.2016
15.02.2016 20:17:33
Вроде всьо пошло,только у меня комп виснет от цикла,Какой цикл вбить чтоб комп не вис?
Округление цены
Пользователь
Сообщений: Регистрация: 11.02.2016
15.02.2016 20:07:32
Как округлить цену к целому числу,у меня цену видает с нулями после точки.а такую цену тразакция не принимает Price =tonumber(getParamEx('SPBFUT', 'SRH6', 'bid').param_value)
t = {
["CLASSCODE"]="SPBFUT",
["SECCODE"]="SRH6 ",
["ACTION"]="NEW_ORDER",
["ACCOUNT"]=" SPBFUT00b52 ",
["CLIENT_CODE"]=" 99883 ",
["TYPE"]="L",
["OPERATION"]="S",
["QUANTITY"]="1",
["PRICE"]=tonumber(Price),
["TRANS_ID"]="1"
}
res=sendTransaction(t)
message(res,1)
Не работает бесконечный цикл
Пользователь
Сообщений: Регистрация: 11.02.2016
15.02.2016 19:38:08
Цитата
Николай Камынин написал: поставьте первой строкой run=true-- или любое значение
Вот переделал но всеровно реакции 0
run = true
while is_run do t = {
["CLASSCODE"]="SPBFUT",
["SECCODE"]="RIH6 ",
["ACTION"]="NEW_ORDER",
["ACCOUNT"]=" SPBFUT00b52 ",
["CLIENT_CODE"]=" 99883 ",
["TYPE"]="L",
["OPERATION"]="S",
["QUANTITY"]="1",
["PRICE"]="70500" ,
["TRANS_ID"]="1"
}
res=sendTransaction(t)
message(res,1)
sleep(1000) end
Не работает бесконечный цикл
Пользователь
Сообщений: Регистрация: 11.02.2016
15.02.2016 19:16:46
Не работает бесконечный цикл,исправте пожалуйста,Ошибку не видает,просто ничего не происходит while run do
t = {
["CLASSCODE"]="SPBFUT",
["SECCODE"]="RIH6 ",
["ACTION"]="NEW_ORDER",
["ACCOUNT"]=" SPBFUT00b52 ",
["CLIENT_CODE"]=" 99883 ",
["TYPE"]="L",
["OPERATION"]="S",
["QUANTITY"]="1",
["PRICE"]= "70500",
["TRANS_ID"]="1"
}
res=sendTransaction(t)
message(res,1) sleep(10) end
Как зделать переворот пози?
Пользователь
Сообщений: Регистрация: 11.02.2016
13.02.2016 21:44:47
Ви не поняли,Смотрите if aaa>bbb then buy end if aaa<bbb then закрить бай и открить селл,Как ето записать кодом? тоесть банальний реверс просто увиличить контракт не поможет робот потом запутается
Как зделать переворот пози?
Пользователь
Сообщений: Регистрация: 11.02.2016
12.02.2016 23:32:34
меня больше интерисует функция Клоус Поз как ее скриптом записать?
Как зделать переворот пози?
Пользователь
Сообщений: Регистрация: 11.02.2016
12.02.2016 17:32:54
Есто условие по которому входим в позицию,если есть обратное условие то как закрить действующую позу и открить новую?