Sergey Gorokhov пишет: в OnTransReply едут ответы на все транзакции и не важно от куда они до этого отправлялись.
Ерунда! OnTransReply не приходят на транзакции, поданные вручную.
Да, действительно следует уточнить . Туда едут ответы на все транзакции имеющие trans_id, не важно от куда они до этого отправлялись. Транзакции поданные через интерфейс не имеют trans_id и соответственно в колбэк не попадут
Что приходит в OnTransReply ?
Пользователь
Сообщений: Регистрация: 23.01.2015
10.06.2015 08:06:33
Здравствуйте,
в OnTransReply едут ответы на все транзакции и не важно от куда они до этого отправлялись. И это правильное поведение.
Если нужно фильтровать ответы на транзакции только LUA скрипта, отправляйте транзакции с каким-нибудь особенным TRANS_ID и в OnTransReply уже фильтруйте ответы по параметру trans_id
Сообщения
Пользователь
Сообщений: Регистрация: 23.01.2015
09.06.2015 11:05:19
Здравствуйте, Описанная проблема не воспроизводится. Сообщите версию терминала.
Старатель пишет: Переключился на тиковый интервал: секунды появились. Но милисекунды не транслируются.
А теперь переключитесь с демо спотана демо фортс или на боевые торги.
Я имел ввиду для параметров из ТТП. На боевом сервере мс не транслируются для параметров.
Ещё такой вопрос.
Код
function main()
tDS = CreateDataSource('QJSIM', 'SBER', INTERVAL_M1)
tDS:SetUpdateCallback(function(nIndex) end)
message('[main] '..tostring((tDS:Close())), 2)
end
Результат: [main] true
Код
local bRun, tDS = true
function OnStop()
bRun = nil
end
function main()
tDS = CreateDataSource('QJSIM', 'SBER', INTERVAL_M1)
tDS:SetUpdateCallback(function(nIndex) end)
while bRun do sleep(200) end
message('[main] '..tostring((tDS:Close())), 2)
end
Результат: [main] nil
Код
local bRun, tDS = true
function OnStop()
message('[OnStop] '..tostring((tDS:Close())), 2)
bRun = nil
end
function main()
tDS = CreateDataSource('QJSIM', 'SBER', INTERVAL_M1)
tDS:SetUpdateCallback(function(nIndex) end)
while bRun do sleep(200) end
end
Результат: [OnStop] nil
Код
local bRun, tDS = true
function OnStop()
message('[OnStop] '..tostring((tDS:Close())), 2)
bRun = nil
end
function main()
tDS = CreateDataSource('QJSIM', 'SBER', INTERVAL_M1)
tDS:SetUpdateCallback(function(nIndex) end)
while bRun do sleep(200) end
message('[main] '..tostring((tDS:Close())), 2)
end
Результат: [OnStop] nil [main] false
Можете объяснить результаты?
Здравствуйте!
Информация получена, проблема изучается. Постараемся в ближайшее время дать ответ.
Добрый день,
Ошибка будет исправлена в одной из следующих версий программы.
Сравните с примером -Раздел 6. Совместная работа с другими приложениями --Импорт транзакций ---Формат .tri-файла с параметрами транзакций ----Примеры строк, которые могут содержаться в файле -----"Тэйк-профит и стоп-лимит"
Цитата
Валентин пишет: ["TYPE"] = "M", ["PRICE"] = "0", эти поля нужны?
Еще раз повторяю, поле TYPE, НЕ для стоп заявок Поле PRICE да нужно, посмотрите пример
отправка заявки на закрытии сессии, заявка снимается, но показывается как исполнена
Пользователь
Сообщений: Регистрация: 23.01.2015
08.06.2015 09:59:11
Здравствуйте, По данному вопросу рекомендуем обратиться к своему брокеру.
Sergey Gorokhov пишет: Здравствуйте, Да верно на ФОРТС не существует рыночных заявок. Но QUIK умеет их эмулировать. Для этого нужно поставить Type=M и указать цену 0
почему в данном случае не происходит эмуляция?
Здравствуйте, Параметр "TYPE" для лимитированных заявок. Для стоп заявки "TAKE_PROFIT_AND_STOP_LIMIT_ORDER" используются параметры MARKET_STOP_LIMIT или MARKET_TAKE_PROFIT
Если считаете наш выбор одного из способов не правильным, выберете свой и реализуйте его на LUA
p.s. так проблема в этом и есть что вашего способа реализации тоже нет, в википедии не написано где возведение в целое требуется, а где нет - если использовать LUA, я в принципе понял - если в формуле есть что то типа 100*.. нужно в Луа болты крутить.
Роман, При чем тут LUA когда мы говорим о математике? Если считаете виноватым LUA воспроизведите формулу из википедии на excel увидите те же самые цифры.
Наша реализация аналогична реализации википедии, за исключением двух моментов, это умножение -M и +M на 100 и округление значений (ADX, +DI, -DI ) до целых
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
06.06.2015 08:41:21
Цитата
Роман пишет: Ладно ну его в баню, там может быть косяк с чем угодно связан, учитывая что Луа с заплатками работает - там в сотые могут все сбить. Потом сяду сравню расчёт и ADX в ТА с самых основ и там уже найду в чём проблема.
Роман, "косяк" в том что существуют разные способы в расчета ADX Уже было сказано что в QUIK формула аналогична формуле в википедии. Если не верите википедии посмотрите другие сайты Если считаете наш выбор одного из способов не правильным, выберете свой и реализуйте его на LUA
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
06.06.2015 07:23:33
Цитата
Роман пишет: и честно не вижу в алгоритме что бы был использован ATR
Роман пишет: Сразу в глаза кидается ATR - зачем оно там.
Роман, Я Вам уже три раза повторил причину. Существует ДВЕ формулы ADX И тот пример который я написал НЕ по той формуле которая в QUIK А по той формуле которая указана по ссылке
И там расчет ведется с учетом ATR Это значит что Ваше утверждение
Цитата
Роман пишет: если вы с c# взяли как пример для выше приведённого кода то у вас он получился не так в том коде.
является ложным
Большая просьба внимательно читать то о чем Вам пишут
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
05.06.2015 14:06:54
На сайте написано так
у меня так:
Код
local dHigh = H(Index) - H(Index-1)
local dLow = L(Index-1) - L(Index)
На сайте написано так:
у меня так:
Код
if ((dHigh < 0) and (dLow < 0)) or (dHigh==dLow) then
pDM[Index-1] = 0
mDM[Index-1] = 0
end
if (dHigh > dLow) then
pDM[Index-1] = dHigh
mDM[Index-1] = 0
end
if (dHigh < dLow) then
pDM[Index-1] = 0
mDM[Index-1] = dLow
end
На сайте написано так:
у меня так:
Код
--Average Directional Move Indicator
local pAMD = pDM_MA(Index-1, {Period=N, Metod=M}, pDM, idp)
local mADM = mDM_MA(Index-1, {Period=N, Metod=M}, mDM, idp)
--где для EMA
--EMA_TMP[Index]=round((EMA_TMP[Index-1]*(Period-1)+2*ds[Index]) / (Period+1),idp)
--Average True Range
local ATR = ATR_MA(Index-1, {Period=N, Metod=M}, TR, idp)
--где для EMA
--EMA_TMP[Index]=round((EMA_TMP[Index-1]*(Period-1)+2*ds[Index]) / (Period+1),idp)
На сайте написано так:
у меня так:
Код
local pDI = round(100 * pAMD / ATR, idp)
local mDI = round(100 * mADM / ATR, idp)
на сайте написано так:
у меня так:
Код
DX[Index-N] = 100 * math.abs(pDI-mDI) / (pDI+mDI)
и наконец, на сайте написано так
а у меня так:
Код
return ADX_MA(Index-N, {Period=N, Metod=MetodADX}, DX, idp),pDI,mDI
--где для EMA
--EMA_TMP[Index]=round((EMA_TMP[Index-1]*(Period-1)+2*ds[Index]) / (Period+1),idp)
Я Вам уже говорил, LUA примера ADX по формуле как в QUIK у нас уже нет, и делать я его не буду. Попробуйте сделать его самостоятельно (формула у Вас уже есть), готов помочь при возникновении проблем.
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
05.06.2015 06:55:53
Еще раз повторяю В QUIK индикатор ADX считается по формуле
Тот пример который я привел рассчитывает данне по ДРУГОЙ формуле
Это две РАЗНЫЕ формулы Их сравнение обсуждалось тут:
и они приведены еще тут:
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
05.06.2015 06:49:12
Цитата
Роман пишет: з.ы. Сергей и ваш код, совсем не похож на тот алгоритм который описан:
Роман, Гигантская просьба читайте посты внимательнее, Я воспроизвел Вашу формулу по ссылке
Цитата
Роман пишет: В общем не правильно у вас индюк рассчитывается.
Есть два вида ADX
1. на EMA - он же на финаме, у вас не верный 2. на WMA - он же в wealth lab
вот этот вариант EMA работает и в точности как на финаме, а вот под WMA - ячто то не понял как его подкрутить, посоветуйте ...
Эта формула НЕ такая как в QUIK о чем также было явно сказано. Так что причин удивляться тому что этот индикатор НЕ такой как в QUIK совершенно нет. Так как именно об этом и идет разговор последние 20 постов.
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
05.06.2015 06:47:10
Цитата
Роман пишет: Самое интересное что этот вариант с EMA, отличается от графика ADX Квика.
Вам явно и не двусмысленно было сказано, что тот код который я привел воспроизводит ту формулу которую Вы привели. Эта формула НЕ такая как в QUIK о чем также было явно сказана. Так что причин удивляться тому что этот индикатор НЕ такой как в QUIK совершенно нет. Так как именно об этом и идет разговор последние 20 постов.
Цитата
Роман пишет: Этот код немного отличается о того что я сделал, в преобразовании в целое round - упоминаний об этом не встречал не где.
Округление было добавлено по моей личной инициативе в процессе исследования. Если оно Вам мешает, не вопрос просто выключите его: Round = "-1",
Цитата
Роман пишет: Вот со всеми вариантами: - не выходит
Поясните что именно не выходит?
Цитата
Роман пишет: я не знаю как у вас в КВИКе расчёт выводит.
Я Вам уже приводил формулу Еще раз дублирую
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
04.06.2015 15:37:37
Цитата
Sergey Gorokhov пишет: наша формула совпадает с формулой метастока. В то время как например в том же метатрейдере используется формула приведенная Вами
Опечатка, перепутал метасток и метатрейдер, следует читать так:
Цитата
наша формула совпадает с формулой метатрейдера. В то время как например в том же метастоке используется формула приведенная Вами
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
04.06.2015 15:31:43
Цитата
Роман пишет: 1. на EMA - он же на финаме, у вас не верный
Роман, нашу формулу я Вам приводил, да она отличается от той что привели Вы. Покопавшись в истории выяснилось что наша формула совпадает с формулой метастока. В то время как например в том же метатрейдере используется формула приведенная Вами На счет сайта финама ничего не могу сказать. Так вот, оказывается эти различия заметили не только Вы
И как оказалось единого мнения не нашлось. Также в процессе исследования, я воспроизвел расчеты приведенные Вами, может оказаться полезным:
Код
SMA="SMA"
EMA="EMA"
SMMA="SMMA"
Settings= {
Name = "!LUA_ADX",
Period=14,
Metod = EMA, --Metod: SMA, EMA, SMMA
MetodADX = EMA, --Metod: SMA, EMA, SMMA
Round = "0", --округление
line = {
{
Name = "LINE_ADX",
Type = TYPE_LINE,
Width = 1,
Color = RGB(0, 0, 255)
},
{
Name = "LINE_ADX +DI",
Type = TYPE_LINE,
Width = 1,
Color = RGB(0, 255, 0)
},
{
Name = "LINE_ADX -DI",
Type = TYPE_LINE,
Width = 1,
Color = RGB(255, 0, 0)
}
}
}
function Init()
F=ADX()
return #Settings.line
end
function OnCalculate(Index)
return F(Index, Settings)
end
--Average Directional Movement Index (ADX)
function ADX()
local pDM_MA=MA()
local mDM_MA=MA()
local ATR_MA=MA()
local ADX_MA=MA()
local pDM={}
local mDM={}
local TR={}
local DX={}
return function (Index, Settings)
local Settings=(Settings or {})
local N = (Settings.Period or 14)
local M = (Settings.Metod or EMA)
local MetodADX = (Settings.MetodADX or M)
if (Settings.Round=="") or (tonumber(Settings.Round)<0) then idp=nil else idp=tonumber(Settings.Round) end
if Index>1 then
local dHigh = H(Index) - H(Index-1)
local dLow = L(Index-1) - L(Index)
if ((dHigh < 0) and (dLow < 0)) or (dHigh==dLow) then
pDM[Index-1] = 0
mDM[Index-1] = 0
end
if (dHigh > dLow) then
pDM[Index-1] = dHigh
mDM[Index-1] = 0
end
if (dHigh < dLow) then
pDM[Index-1] = 0
mDM[Index-1] = dLow
end
--Average Directional Move Indicator
local pAMD = pDM_MA(Index-1, {Period=N, Metod=M}, pDM, idp)
local mADM = mDM_MA(Index-1, {Period=N, Metod=M}, mDM, idp)
--True Range
TR[Index-1] = math.max(math.abs(H(Index) - L(Index)), math.abs(H(Index) - C(Index-1)), math.abs(C(Index-1) - L(Index)))
--Average True Range
local ATR = ATR_MA(Index-1, {Period=N, Metod=M}, TR, idp)
if Index > N then
--Directional Index
local pDI = round(100 * pAMD / ATR, idp)
local mDI = round(100 * mADM / ATR, idp)
--Directional Movement Index
DX[Index-N] = 100 * math.abs(pDI-mDI) / (pDI+mDI)
return ADX_MA(Index-N, {Period=N, Metod=MetodADX}, DX, idp),pDI,mDI
else
return nil,nil,nil
end
else
return nil,nil,nil
end
end
end
function MA()
local t_SMA=fSMA()
local t_EMA=fEMA()
local t_SMMA=fSMMA()
return function(Index, Settings, ds, idp)
local Settings=(Settings or {})
local P = (Settings.Period or 9)
local M = (Settings.Metod or EMA)
if M == SMA then
return t_SMA(Index, P, ds, idp)
elseif M == EMA then
return t_EMA(Index, P, ds, idp)
elseif M == SMMA then
return t_SMMA(Index, P, ds, idp)
else
return nil
end
end
end
------------------------------------------------------------------
--Скользящие средние (SMA, EMA, VMA, SMMA)
------------------------------------------------------------------
--[[Simple Moving Average (SMA)
SMA = sum(Pi) / n
]]
function fSMA()
return function (Index, Period, ds, idp)
local Out = nil
if Index >= Period then
local sum = 0
for i = Index-Period+1, Index do
sum = sum +ds[i]
end
Out = sum/Period
end
return round(Out,idp)
end
end
--[[Exponential Moving Average (EMA)
EMAi = (EMAi-1*(n-1)+2*Pi) / (n+1)
]]
function fEMA()
local EMA_TMP={}
return function(Index, Period, ds, idp)
local Out = nil
if Index == 1 then
EMA_TMP[Index]=round(ds[Index],idp)
else
EMA_TMP[Index]=round((EMA_TMP[Index-1]*(Period-1)+2*ds[Index]) / (Period+1),idp)
EMA_TMP[Index-2]=nil
end
if Index >= Period then
Out = EMA_TMP[Index]
end
return round(Out,idp)
end
end
--[[Smoothed Moving Average (SMMA)
SMMAi = (sum(Pi) - SMMAi-1 + Pi) / n
]]
function fSMMA()
local SMMA_TMP={}
return function(Index, Period, ds, idp)
local Out = nil
if Index >= Period then
local sum = 0
for i = Index-Period+1, Index do
sum = sum +ds[i]
end
if Index == Period then
SMMA_TMP[Index]=round(sum / Period, idp)
else
SMMA_TMP[Index]=round((sum - SMMA_TMP[Index-1] + ds[Index]) / Period, idp)
end
SMMA_TMP[Index-2]=nil
Out = SMMA_TMP[Index]
end
return round(Out,idp)
end
end
------------------------------------------------------------------
--Вспомогательные функции
------------------------------------------------------------------
function round(num, idp)
if idp and num then
local mult = 10^(idp or 0)
if num >= 0 then return math.floor(num * mult + 0.5) / mult
else return math.ceil(num * mult - 0.5) / mult end
else return num end
end
Take Profit, Как правильно выставить величину отступа и спрэда
Пользователь
Сообщений: Регистрация: 23.01.2015
04.06.2015 11:55:42
Цитата
Евгений_2 пишет: правильно я понимаю что при отрицательном отступе важен только знак, а значение отступа не принципиально(1,3 или 5)
По сути да правильно
Цитата
Евгений_2 пишет: поскольку в этом случае заявка отправится в систему при первой сделке в стакане?
В стакане нет и никогда не было сделок, там только заявки
Take Profit, Как правильно выставить величину отступа и спрэда
Пользователь
Сообщений: Регистрация: 23.01.2015
04.06.2015 11:23:39
Цитата
Евгений_2 пишет: Или я неправильно рассуждаю? Поправьте...
Про отрицательный спрэд и отступ. Дело в том, что формулы описывающие работу take-profit оказались универсальными и независящими от знака спрэда и отступа, поэтому мы решили сохранить такую универсальность и в реализации. Другое дело, что тяжело придумать жизненный пример где бы такую возможность можно было применить по делу. Отрицательный защитный спрэд служит для того, чтобы выставить лимитированную заявку по цене «хуже» рынка. Отрицательный отступ служит для того, чтобы take-profit сработал как только лучшая цена перестанет улучшаться на его значение. То есть, после того как take-profit начал насчитывать min/max, лучшая цена должна на каждой сделке улучшаться на заданный отступ (точнее на его модуль) и как только она так сильно не улучшилась take-profit срабатывает выставляя лимитированную заявку. В классическом применении эти два параметра должны быть больше или равны нулю - независимо от операции. Если вы зададите отрицательный отступ, то лимитированная заявка выставится в рынок немедленно после совершения на нем какой-нибудь сделки. Отрицательный спред приведет к тому, что заявка выставится по цене хуже той, из-за которой сработало условие.
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
03.06.2015 19:06:10
Цитата
Роман пишет: Расхождения слишком большие, тогда только два объяснения:
1. Формула применена в Квике верна, а все о стольные ТА ошиблись в расчёте. 2. Все остольные ТА рассчитывают ADX верно, а в Квике что то не то.
Уточните различия в самом ADX или в линиях +DM и -DM? и приведите пример различий
Роман пишет: Я уже достаточно стар что бы верить в светлое будущее, я думаю проблему нужно решить не зависимо от верыисповедывания.
Я говорю о конкретной проблеме, которая есть в вашем продукте, отображаемый индикатор АДX показывать не корректные данные, сомневаюсь что там округление виновато, так как отличаются они не сотыми и на вашем индикаторе можно наблюдать длительный рос, в отличии от других где идёт длительное падение, в целом единственное что ваш АДX связывает с остальными - это то что он колеблется в приделах 0 - 100
Наша формула такая же как здесь За двумя исключениями, первое это то что значения округляются, второе то что значения +DM и -DM умножаются на 100. Могу Вас заверить других отличий нет
Может быть дело в том что у нас ADX считается как Экспоненциальная скользящая средняя?
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
03.06.2015 18:19:28
Цитата
Роман пишет: Я уже достаточно стар что бы верить в светлое будущее, я думаю проблему нужно решить не зависимо от верыисповедывания.
Я говорю о конкретной проблеме, которая есть в вашем продукте, отображаемый индикатор АДX показывать не корректные данные, сомневаюсь что там округление виновато, так как отличаются они не сотыми и на вашем индикаторе можно наблюдать длительный рос, в отличии от других где идёт длительное падение, в целом единственное что ваш АДX связывает с остальными - это то что он колеблется в приделах 0 - 100
Наша формула такая же как здесь За двумя исключениями, первое это то что значения округляются, второе то что значения +DM и -DM умножаются на 100. Могу Вас заверить других отличий нет
К сожалению уже нет, все было удалено безвозвратно.
В наше время это сложно сделать.
Вроде все серьёзные дяди, а ребячитесь на эмоциях забывая о том чем мы здесь занимаемся ...
Проблема в том что ваш ADX отличается от всех остальных ADX используемых в ТА и его нужно подправить и я не могу понять где. Если у вас есть идея, скиньте через личку, я самостоятельно проработаю эту проблему.
Просто поверьте, что примеров больше нет. Даю подсказку в ADX показатели округляются по математическим правилам для всех методов кроме SMMA
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
03.06.2015 16:43:13
Цитата
Роман пишет: - а есть ADX в LUA? а то я запарился с ним, не как не могу его к стандарту Wealth-lab или Финама подогнать, то ли формулы разные то ли сделаны не так.
з.ы. вообще если честно, поставьте в форуме голосование - какие индикаторы нужно реализовывать, а какие нет. А так реализация в скриптах она хороша, просто что бы не пиать постоянно то что уже есть, а за инклидить и вставил в скрипт нужного индюка. Я же говорил с.м. архитектуру ТА, зачем велосипед заново изобретать.
Роман, К сожалению уже нет, все было удалено безвозвратно. Примеров индикаторов на LUA нет и не будет. Есть только пример скользящей средней, который выложен ранее на сайте
Является ли на текущий момент эта возможность стандартной и гарантируется ли ее работа вне зависимости от факторов брокера и т.п.?
Спасибо.
Михаил, Боюсь что нет. Теперь цену подставляет шлюз, если брокер его не обновил или отключил опцию, то работать не будет
6.17.0.58 bugs collection, разработчикам на заметку. (все остальные - прошу проходить мимо и не засорять топик)
Пользователь
Сообщений: Регистрация: 23.01.2015
03.06.2015 10:20:15
Цитата
s_mike@rambler.ru пишет: Было бы неплохо также распространить автомасштабирование на установленные метки.
Михаил, Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Take Profit, Как правильно выставить величину отступа и спрэда
Пользователь
Сообщений: Регистрация: 23.01.2015
03.06.2015 08:51:19
Цитата
сергей пишет: 3. Величины «отступа» и «защитного спрэда» могут указываться как в значениях цены, так и в процентах. Исходя из п2. - отрицательное значение в процентах допустимо?
Да отрицательные значения в процентах также являются допустимыми
Что понять? Что воспроизведение индикаторов не является нашей задачей? Это очевидно. Если требуется частная реализация, делайте сами, не можете сами есть фрилансеры.
Sergey Gorokhov пишет: Я забочусь об остальных клиентах
а обо мне значит, НЕТ??? вот всегда - я так и знал... ((
(шутка.)
Вы считаете что я должен собрать все известные индикаторы и реализовать их на LUA только чисто из своей доброты? Ужи извините, но мне жизни не хватит. Да и кушать на что то нужно.
Собственно после общения с Вами у меня вообще отпало какое-либо желание воспроизводить индикаторы. Забудьте о моем жесте доброй воли, я просто удалю все что создал. Остальные пользователи будут Вам благодарны.
Take Profit, Как правильно выставить величину отступа и спрэда
сергей пишет: Сергей, я - сергей. Запомните. Если вы уверены что я не смогу найти "огрехов" в этих 16ти страницах - кидайте. 9137731391@mail.ru
сергей, Документацию отправил
Да, что-то новенькое в примерах. Но! 1. В работе тэйк-профита, даже на этих 20ти страницах, не нашёл описание "неблагоприятного" исхода срабатывания тэйка на покупку. 2. Опять же, с чего и началась данная ветка....Даю рубль за два что большинство сотрудников техподдержки не знают как работает тэйк при использовании отрицательных отступа и спрэда, а пользователи квика и подавно. 3. Величины «отступа» и «защитного спрэда» могут указываться как в значениях цены, так и в процентах. Исходя из п2. - отрицательное значение в процентах допустимо?
НАЗНАЧЕНИЕ: Закрытие позиции по инструменту с максимальной прибылью. А как же открытие позиции по самой выгодной цене? )
Sergey Gorokhov пишет: Я забочусь об остальных клиентах
а обо мне значит, НЕТ??? вот всегда - я так и знал... ((
(шутка.)
Вы считаете что я должен собрать все известные индикаторы и реализовать их на LUA только чисто из своей доброты? Ужи извините, но мне жизни не хватит. Да и кушать на что то нужно.
Sergey Gorokhov пишет: Если Вы хотите новые индикаторы, можете сделать самостоятельно.
это понятно ))))) но ведь, а как же забота об остальных клиентах???))))))
Я забочусь об остальных клиентах и именно поэтому решил воспроизвести расчеты имеющихся индикаторов. Но делать новые я не буду, просто потому что это не является моей задачей. Если у Вас есть на это свободное время займитесь вопросом, люди Вам скажут спасибо.
6.17.0.58 bugs collection, разработчикам на заметку. (все остальные - прошу проходить мимо и не засорять топик)
Дмитрий пишет: Заметил также еще одну особенность работы функций SetValue и SetRangeValue - если с их помощью установить значения индикатора (индикатор рисовал в отдельном окне), которые выходят за границы минимальных/максимальных значений индикатора, установленных ранее с помощью return в OnCalculate, то новые значения в итоге не видны, так как оказываются за границами окна (автомасштабирование на такую смену значений индикатора не реагирует).
Здравствуйте! Удалось ли воспроизвести проблему с помощью приведенного мною скрипта?
Да, описанное поведение воспроизводится. Ответа по проблеме пока нет.
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
03.06.2015 08:23:05
Цитата
sam063rus пишет: похоже, те индикаторы, которые есть в квике - это предел для квика...
Если Вы хотите новые индикаторы, можете сделать самостоятельно.
Sergey Gorokhov пишет: определенная работа по созданию примеров для всех индикаторов уже ведется. Некоторые примеры уже готовы
А как можно ознакомиться с уже готовыми примерами?
Выкладывать не готовый комплект я не буду, по вполне объективным причинам. Но если нужен какой-то определенный индикатор, можете спросить, если он готов то я его выложу.
Собственно, а зачем Вам перекодировка ради одного единственного результата команды ping? Цифровые значения Вы выдернуть можете, а весь остальной текст там является константой. Просто произведите замену текста на читаемый и все.
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
02.06.2015 14:57:02
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
02.06.2015 14:49:15
Цитата
Роман пишет: или к какой цене (открытие, закрытие, максимум, минимум)
Цитата
Sergey Gorokhov пишет: во всех индикаторах где это возможно, уже можно установить привязку к закрытию, открытию.
Время ожидания подтверждения транзакции
Пользователь
Сообщений: Регистрация: 23.01.2015
02.06.2015 12:32:02
Цитата
Viktor MMM пишет: Спасибо, Сергей! Подскажите, пожалуйста, как с кодировкой справиться? Скрытый текст === Testing backticks_string ===
К сожалению у нас нет рекомендаций на этот счет, может есть ответ на форумах посвященных LUA
Время ожидания подтверждения транзакции
Пользователь
Сообщений: Регистрация: 23.01.2015
02.06.2015 11:30:29
Цитата
Виктор МММ пишет: имеется в виду, чтобы не просто вызвать пинг, а скриптом получить результультат етого пинга..
если получить результат то это уже io.popen()
Почитать тут:
Время ожидания подтверждения транзакции
Пользователь
Сообщений: Регистрация: 23.01.2015
02.06.2015 11:15:42
Цитата
Viktor MMM пишет: 1. Ситуация - ждем ответ, его все нет. Что вы, как разработчики, посоветуете делать? Если просто дальше ждать, то может вообще моя транзакция не дошла? Если еще одну отправить - две могут в результате исполнится. Какой алгоритм действий вы можете предложить в ситуации долгого ответа?
Если ответа нет, наверное следует вывести ошибку в лог и остановить работу. Но решать Вам.
Цитата
Viktor MMM пишет: 2. Кроме бесконечного цикла в скрипте, сами по себе настройки квика могут повлиять на скорость и качество обмена инф с сервером? Нагруженость, так сказать, квика повлияет на это?
Настройки могут повлиять на нагрузку процессора, а нагрузка процессора может привести к зависанию, так что да. Есть соответствующие рекомендации по оптимизации:
Цитата
Viktor MMM пишет: 3. Как через клуа пинговать сервер?
Либо os.execute, либо параметр "Задержка данных при обмене с сервером" информационного окна, работает при включенной галке "Проверять связь с сервером каждые … секунд" в меню Связь - Доступные соединения
Старатель пишет: Переключился на тиковый интервал: секунды появились. Но милисекунды не транслируются.
А теперь переключитесь с демо спотана демо фортс или на боевые торги.
Я имел ввиду для параметров из ТТП. На боевом сервере мс не транслируются для параметров.
Ещё такой вопрос.
Код
function main()
tDS = CreateDataSource('QJSIM', 'SBER', INTERVAL_M1)
tDS:SetUpdateCallback(function(nIndex) end)
message('[main] '..tostring((tDS:Close())), 2)
end
Результат: [main] true
Код
local bRun, tDS = true
function OnStop()
bRun = nil
end
function main()
tDS = CreateDataSource('QJSIM', 'SBER', INTERVAL_M1)
tDS:SetUpdateCallback(function(nIndex) end)
while bRun do sleep(200) end
message('[main] '..tostring((tDS:Close())), 2)
end
Результат: [main] nil
Код
local bRun, tDS = true
function OnStop()
message('[OnStop] '..tostring((tDS:Close())), 2)
bRun = nil
end
function main()
tDS = CreateDataSource('QJSIM', 'SBER', INTERVAL_M1)
tDS:SetUpdateCallback(function(nIndex) end)
while bRun do sleep(200) end
end
Результат: [OnStop] nil
Код
local bRun, tDS = true
function OnStop()
message('[OnStop] '..tostring((tDS:Close())), 2)
bRun = nil
end
function main()
tDS = CreateDataSource('QJSIM', 'SBER', INTERVAL_M1)
tDS:SetUpdateCallback(function(nIndex) end)
while bRun do sleep(200) end
message('[main] '..tostring((tDS:Close())), 2)
end
Результат: [OnStop] nil [main] false
Можете объяснить результаты?
Здравствуйте!
Информация получена, проблема изучается. Постараемся в ближайшее время дать ответ.
Viktor MMM пишет: Подписаться на изменение конкретного параметра не возможно.
Можно, как вам уже указали, используя CreateDataSource и SetUpdateCallback. Но, если необходимо отслеживать много параметров, то неизвестно, как это отразится на производительности
вопрос к client support,
Время ожидания подтверждения транзакции
Пользователь
Сообщений: Регистрация: 23.01.2015
02.06.2015 07:49:56
Здравствуйте, При всем нормальном ответ на транзакцию должен быть всегда. Если по каким-то причинам его нет или он приходит с ощутимой задержкой это повод обратиться к брокеру, возможно есть проблемы на его стороне.
Рабочее место пользователя тоже может привести к таким последствиям, если привести к зависанию терминала. Например если сделать бесконечный цикл в событии.
Таблциа Истории
Пользователь
Сообщений: Регистрация: 23.01.2015
02.06.2015 07:34:04
Цитата
sam063rus пишет: в общем. как я понял - биржу можно сравнить с файлообменником с возможностью докачки. Врядли история ведётся по каждому брокеру. Логичней было бы предположить, что есть некий общий биржевой кеш, в структуре биржевого потока - есть поля временных меток. Квиковский сервер мониторит пакеты с биржевого шлюза, и если есть изменение метки времени в структуре пакета - принимает данные. Брокеры - являются подписчиками на информацию теперь уже через квиковский сервер - тут уже - единый биржевой поток разбирается на части и к реально биржевым данным примешиваются чисто исторические - свечи и т. д. Теперь уже брокер является своего рода биржевым каналом (через выделенный квиковский сервер) и главным арбитром предоставления информации. Старина квик же - делает тоже самое, что и квиковский сервер с биржей: есть изменение метки времени в структуре пакета - есть и так называемы срезы в OnParam и другие коллбеки. серверное время стоит на месте - значит квик замирает. Если разница между изменениями превышает квантум - запрос на пропущенные данные. (что нетрудно понять/заметить потому как квик, как ошпаренный потом начинает "догонять" информацию на графиках и даже в стаканах котировок).
tech support - поправьте где я ошибся.
Я не буду комментировать описание поведения биржи, так как вопрос явно к специалистам биржи. Могу только порекомендовать ознакомиться с технической биржевой документацией если таковая есть в публичном доступе
Такому пожеланию нет, так как нет возможности автоматически определить к какому именно индикатору должен быть привязан другой индикатор. Представьте что на графике у Вас 200 разных индикаторов привязанных к цене и Вы хотите добавить еще один привязанный к одному из этих 200 индикаторов, как по Вашему программа должна определить автоматически к какому именно?
Меню тоже! Ну, а как во всех ТА это делают? Просто поставьте функцию, применить к чему, к закрытию, открытию, EMA который уже есть на графике и зачем применять к 200 индикатором, просто создаём индикатор и у указываем применить к чему (то что уже там стоит) на графике?
Цитата
Эту часть предложения не не понял, поясните.
Если говорить о цене, то к примеру максимальный максимум за пять свечей или минимум за 10 свечей и т.д.
Все что Вы описываете уже можно сделать через Lua индикаторы. К тому же Вы так и не ответили на поставленную задачу с 200 индикаторами и вопрос НЕ касается "к закрытию, открытию", так как во всех индикаторах где это возможно, уже можно установить привязку к закрытию, открытию.
Индикаторы
Пользователь
Сообщений: Регистрация: 23.01.2015
02.06.2015 07:25:05
Цитата
Старатель пишет: Зарегистрируйте также, чтобы функцию getDataSourceInfo() можно было использовать в Settings
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Sergey Gorokhov пишет: быстрее и надежней это и есть pricemin pricemax, но они же самые невыгодные.
Не понял. Заявка все равно будет исполняться не по этим а по лучшим ценам в стакане на текущий момент. Разве нет. Или вы намекаете на некие особенности исполнения заявок типа микро аукцион?
Чем дешевле Вы продаете или чем дороже покупаете тем быстрее найдете встречное предложение, это и есть pricemin pricemax.