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

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

Страницы: Пред. 1 ... 34 35 36 37 38 39 40 41 42 43 44 ... 80 След.
Узнать цену покупки актива.
 
Цитата
Kolossi написал:
Цитата
nikolz написал:
 
Цитата
Ренат  написал:
getItem('firm_holding') .
 Вы же хотите узнать цену сделки, так и читайте ее из таблицы сделок.
причем здесь позиция по инструментам?
и где Вы в позиции увидели цену?
Ну да, с ценой сделки козе понятно. )
А как насчет получения средней цены покупки по инструменту, точнее параметра "Балансовая цена" в таблице Состояние счета?
Если Вы пытаетесь ответить на вопрос темы, то читайте внимательнее вопрос.
Если просто выпендриваетесь, то нахрена?
main()
 
Цитата
Constantin написал:
Цитата
nikolz написал:
так как вы не сможете обратиться к локальным переменным майн из колбека и наоборот.
Так "глобальная" переменная, объявленная с local вне функций, захватывается разными функциями и становится для них "локальной".  
Вы это сами придумали или где прочитали?
Вы хотя бы поняли, что написали?
-----------------------------------------------
Если Вы локальной переменной присваиваете значение глобальной,
то будет выполнено копирование  значения для скалярной величины и копирование указателя для таблицы.
--------------------
Поэтому никто ничего не захватывает и ничем не становится.  
Узнать цену покупки актива.
 
Цитата
Ренат написал:
getItem('firm_holding') .
Вы же хотите узнать цену сделки, так и читайте ее из таблицы сделок.
причем здесь позиция по инструментам?
и где Вы в позиции увидели цену?
 
main()
 
Цитата
Constantin написал:
Подскажите:

1. В main() можно использовать функции получения данных от Квика, которые обычно используются в колбаках? Такие как getParamEx(), getLevel2Quotes() и т.д.

2. QLua нормально синхронизирует обращение к переменным, помеченным как local, если к ним идет доступ и из потока колбаков, и из потока main?
main и колбеки имеют общий глобальный стек VMLua.
Поэтому есть синхронизация обращения к глобальным пере5менным.
Кроме того, обращение к глобальным переменным в кобеке приводит к блокировке main при обращении к этим же переменным.
Т е колбеки и main в этой ситуации работают последовательно.
--------------------
локальные стеки у них разные. поэтому синхронизация не требуется ,
так как вы не сможете обратиться к локальным переменным майн из колбека и наоборот.
Быстро продать и быстро купить, вопрос
 
Цитата
Рустам написал:
Если использовать условную заявку то они могут не взяться. Например продал акции и с концами пошел наверх оставив лимитку на покупку внизу. Было дело. Пробовал.
Есть еще варианты?  Чтобы один раз выставил до торговой сессии и забыл на сутки
пишите робота либо торгуйте руками.
Халявы нет.
Быстро продать и быстро купить, вопрос
 
Цитата
Рустам написал:
Ребята. Подскажите как с начала торгов с помощью стоп заявок сначала продать а затем купить одинаковое число заявок?
В данный момент если ставить стоп-лимит на продажу и покупку то при покупке выдает ошибку "не прошла контроль лимитов". Это как бы невозможно купить у себя во время продажи. итог только идет продажа.
С помощью тейкпрофита удается но там все зависит от того что первое пошло или покупка или продажа. Я бы его использовал но метод FIFO меня добивает своей неточностью.
Нужно сначала продать а затем купить.
Подскажите какие есть варианты!!!
надо ставить не по рынку, а по фиксированной цене.
и надо использовать не стоп-заявку, а условную заявку.
Подскажите как правильно
 
и еще
функция FRACTALS
это плохой индикатор из тех, которые заглядывают в будущее.
Т е индикатор -шулер.
Значения на график заносятся задним числом. Поэтому вам кажется что можно легко торговать.
----------------
Если вы построите робота на таком индикаторе то на истории этот робот будет давать прибыль а на реале - убыток.
Подскажите как правильно
 
Цитата
Сергей написал:
Приветствую, во втором сообщении код индикатора. Стандартный фрактал на lua. Мне нужно просто поднять/опустить его от графика, потому что он очень близко рисуется, мелкие свечи бывает не видно. Я делаю его в виде жирных точек, вот они сильно низко рисуются. А стандартные треугольники со сделками иногда сливаются.

можно сделать так:
----------------
В setting добавляем два значения вот так:
Settings = {
Name = "nk_FRACTALS(Fractals)",
X1 = 0.0,  -- это смещение для максимума
X2 = 0.0,  -- это смещение для минимума
Period = 5,
line = {{
Name = "Horizontal line",
Type = TYPE_LINE,
Color = RGB(140, 140, 140)
},
{
Name = "FRACTALS - Up",
Type = TYPE_TRIANGLE_UP,
Color = RGB(0, 206, 0)
},
{
Name = "FRACTALS - Down",
Type = TYPE_TRIANGLE_DOWN,
Color = RGB(221, 44, 44)
}
},
--------------------
далее   добавляем вот такую функцию
--------------------
local function nk_sm(X,N,m)   if N then return X(N)+m end  end
-----------------
и исправляем две строки в функции
-----------------
function OnCalculate(Index)
local Out1,Out2 = func(Index, Settings)
SetValue(Out1, 2, ConvertValue(Settings,nk_sm(H,Out1,Settings.X1)))
SetValue(Out2, 3, ConvertValue(Settings,nk_sm(L,Out2,Settings.X2)))
return tonumber(Settings.Horizontal_line),nil,nil
end
=================
если что не так, пишите, поправлю.
Подскажите как правильно
 
Цитата
Сергей написал:
Цитата
Alexey Danin написал:
попробуйте добавить в код обработку данного случая.

Спасибо большое, что ответили, но я в программировании полный ноль, по этому я ничего не понял.))
покажите скрипт
Принципы написания скриптов, Разделять или объединять?
 
Владислав,
Несколько бесплатных советов.
-------------------------
Тестирование скорости исполнения скриптов или отдельных функций делается для оценки имеющихся вычислительных ресурсов .
-----------------------
Эти оценки необходимы для разработки в дальнейшем алгоритмов работы роботов, реализующих конкретную стратегию поведения.
---------------
Если вы начинающий писатель,
то начинать надо с выбора метода торговли (если это торговый робот)
затем разработки алгоритма  и реализации его.
----------------------------------
После этого наступает этап тестирования и определения адекватности его работы ожиданиям автора.
---------
Частота совершения сделок а следовательно и скорость реакции робота зависит от выбранной стратегии торговли.
-----------
Если Вы решили заниматься скальпингом, то скорость  сделка в  секунду может быть низкой,
а если займетесь арбитражем, то возможно  что и  1 сделка в минуту будет достаточно.
------------------  
Поэтому рекомендую начать не с написания скрипта для торговли, а с разработки алгоритма торговли и тестирования его на истории.
===============  
И еще, если торгуете конкретным инструментом, то можно торговать без колбеков а робота написать в индикаторе.
При этом скорость будет не ниже чем с колбеками а скрипт на порядок проще.
====================
Если используете колбеки,
то более важной задачей является синхронизация сообщений
и транзакций между собой так как интернет и биржевая торговля
это источники асинхронных событий.  
------------------
Если сделаете правильно, то робот будет работать без затыков и сообщениях об ошибках и всегда быстро будете получать реакцию на сделки.
---------------
Примерно так.
Квик Втб стал занимать много памяти
 
и еще
В папке arxiv хранятся данные по инструментам с
сохраните если она вам нужна и перед загрузкой квика удалите все файлы *.dat из нее.
Квик Втб стал занимать много памяти
 
Цитата
Юрий написал:
Цитата
nikolz написал:
попробуйте в заказе данных в потоке котировок оставить лишь один класс и в нем  инструмент .Посмотрите сколько у Вас сейчас в окне выбор принимаемых инструментоввыбрано классов инструментов и параметров
Я убрал вообще все данные, но загрузка от этого не изменилась
В диспетчере задач время Info равно нулю т е терминал не работает.
Предлагаю сделать следующее
оставьте как установили т е без классов и инструметов
сохраните квик и выйдете из него (система->выход )
Удалите файл *.log
Запустите терминал снова  
Квик Втб стал занимать много памяти
 
Цитата
Юрий написал:
Цитата
СергейК написал:
Написал про это брокеру Втб также.  
Я звонил им в поддержку. Все тоже самое: удалили .log, .dat, .wnd файлы, почистили папки, изменили настройку получения данных. Посоветовали переустановить. Ничего не помогло из этого. у себя в теме я писал, что даже пустой без вкладок и графиков квик у меня забрал сразу 2 ГБ
попробуйте в заказе данных в потоке котировок оставить лишь один класс и в нем  инструмент .
Посмотрите сколько у Вас сейчас в окне выбор принимаемых инструментов
выбрано классов инструментов и параметров
Как конвертировать в юникод
 
http://lua-users.org/wiki/LuaUnicode
Как конвертировать в юникод
 
https://stackoverflow.com/questions/41855842/converting-utf-8-string-to-ascii-in-pure-lua
Принципы написания скриптов, Разделять или объединять?
 
Владислав,
вроде бы уже писал, но повторю.
-------------------
чтобы не дублировать колбеки надо обеспечить возможность скриптам обращаться к общим данным.
это можно сделать различными методами.
-------------------------
Реализую это с помощью memory mapping.
Кроме того, для реализации неблокирующей синхронизации потоков использую shared memory.
Для параллельной работы с множеством инструментов использую пул потоков.
------------------
Примерно так.
Изменение стоп-заявки
 
Цитата
Айдар написал:
Чтобы изменить параметры действующей стоп-заявки я удаляю действующую и выставляю новую.
Но иногда происходит так, что во время удаления эта стоп-заявка успевает сработать - и в этом случае новая уже не требуется, но в алгоритме это не прописано и все-равно выставляется новая-стоп заявка.
Как можно это исправить? Спасибо
используйте колбек стоп-заявки
любое изменение будет приходить в колбек.
Надо обрабатывать все события в колбеке.
Ответ на вопрос: "Что быстрее , рассчитать индикатор или взять с графика?"
 
Добрый день,
---------------
сделал следующий тест.
На график вывел два варианта индикатора  стохастик.
-----------------------
1)  встроенный в терминал (третий график  на картинке )
2)  взятый из предложенных разработчиками вариантов на луа. (четвертый график )
-----------------------
Во втором варианте добавил чтение индикатора с графика первого варианта
и вывод этого значения для сравнения на график второго варианта.
-------------
На втором варианте это линия белого цвета.
------------------
Вот такая картинка в итоге:



Время чтения индикатора с графика 6.8 мкс ,
а время расчета индикатора  23.4 мкс.

--------------
Рассчитать данные индикатора ИЛИ брать с графика?
 
Цитата
Дмитрий Бланк написал:
Доброго дня Камрады!

задача простая - торгуем бумагу. Таких бумаг 40+
"Смотрю" на разных ТФ (их 6+ по каждому инструменту).

Сейчас встал выбор - брать ДАНЫЕ индикаторов с ГРАФИКА (всегда открыт, их 6+ с индикаторами) или вообще закрыть графики и брать данные по бумаге с сервера брокера в разных ТФ и так же рассчитывать идикаторы.

вопрос - что менее грузит систему? Что быстрее?

Велика ли разница? по наитию понимаю что быстрее рассчет.


Благодарствую.
Если это встроенные в терминал индикаторы , то быстрее брать с графика.
---------------------------------------
Если это индикаторы рассчитываемы в луа, то зависит от того как Вы напишите эти индикаторы.
------------------------
Разница в том, что встроенные реализованы на СИ.
А индикаторы на луа - это байт код
этот байт-код исполняется виртуальной машиной луа
т е в программе на СИ последовательность байт-кода выполняется  вызовом функций, реализованных  на СИ.
при этом, так как данные в луа хранятся в виде структур, то прежде чем их обработать те вычислить индикатор
ВМ луа проверяет их формат и вызывает соответствующие преобразования.
------------------------
В итоге, даже если Вы вызовите на луа пустую функцию луа,
у вас уйдет на это куча времени  минимум  раза в 3 больше, чем вызов функции СИ.
--------------  
В итоге ваш индикатор на луа может вычисляться от 3 до 10 раз медленнее, чем встроенный, либо написанный на C.
============
Но это не предел, можно так плохо написать индикатор на луа что  будет  медленнее раз в 100.
Например, тут есть один умелец который пузырьком на луа сортирует миллион данных. при этом потери в скорости уже составляют 1000 и десятки тысяч раз.
Но его это не ...ет, так что дело вкуса.

 
Отправка транзакций данного типа не поддерживается, Не получается выставить заявку через динамический импорт транзакций секция центы.
 
Цитата
Владимир Петров написал:
Добрый день.
Подскажите пожалуйста, где искать источник проблемы?
Пытаюсь через динамический импорт транзакций выставить заявку по долларовым центам.
ACCOUNT=###; CLIENT_CODE=###; TYPE=L; TRANS_ID=680858782; CLASSCODE=CETS_SU; SECCODE=USDRUB_TMS; ACTION=NEW_ORDER; OPERATION=B; PRICE=60.1100; QUANTITY=50;
TransactionReplyMessage:Обработка внешних транзакций: Отправка транзакций данного типа не поддерживается.
До сервера транзакция не доходит. Может какую-то галочку нужно где-то поставить?

Версия квик 7.27.2.1
Брокер Кит-финанс
скорее всего вы неправильно задали параметры
поэтому ошибка возникает на уровне терминала.
все числа передаются как строки
а в цене надо установить дробную часть в соответствии с шагом цены
Индикаторы для QUIK старше 8.3.2.4
 
пардон, опечатка
в 9 версии можно выбрать версию Lua
установите 5.3 и используйте индикаторы от версии 8.7
Индикаторы для QUIK старше 8.3.2.4
 
Цитата
Анатолий написал:
Цитата
Sergey Gorokhov написал:
Здравствуйте,По идее последняя версия должна работать
Здравствуйте, где теперь взять индикаторы на новый QUIK 9.4?
в 9 версии можно выбрать версию QUIK
установите 5.3 и используйте индикаторы от версии 8.7
Недокументированный "Троянский конь" на Lua
 
и еще
В нормальных программах есть обычно функция инициализации
так вот в этой функции и грузятся все индикаторы.
Поэтому вариант - тупо два раза - это для дилетантов.
Недокументированный "Троянский конь" на Lua
 
нормальная логика - грузим все индикаторы при нулевом индексе.
и все
Нафига гонять все свечи пока индикаторы не загружены?
Недокументированный "Троянский конь" на Lua
 
Цитата
s_mike@rambler.ru написал:
Цитата
nikolz написал:
Метод OnCalculate  обязательно срабатывает два раза на для всей истории свечей в следующих случаях
1)  Когда первый раз загружается индикатор на график
2) Когда вносятся изменения в settings уже загруженного индикатора
------------------  
Если изменения не вносятся, а лишь вызывается редактирование, то метод срабатывает лишь один раз.
===========  
Таким образом в 1 и 2 случаях выполняется два раза идентичный расчет всего индикатора для всей истории свечей.
т е бессмысленная трата времени процессора и зависание квика.
Не бессмысленная. Это костыль, специально сделанный разработчиками.

Индикаторы загружаются последовательно один за другим. Если один индикатор использует данные с другого индикатора, то нет гарантий, что на втором уже есть рассчитанные данные. Поэтому не долго думая, при добавлении тупо прогоняют начальный расчет по всей цепочке. Ну по иным причинам, которые не видны пользователю.

Ну, в общем понятно, какой ногой все это написано.
Загружаются, да,
но исполняются они последовательно для каждого тика.
поэтому решение "два раза все сначала" -  очень тупое.
Недокументированный "Троянский конь" на Lua
 
Метод OnCalculate  обязательно срабатывает два раза на для всей истории свечей в следующих случаях
1)  Когда первый раз загружается индикатор на график
2) Когда вносятся изменения в settings уже загруженного индикатора
------------------  
Если изменения не вносятся, а лишь вызывается редактирование, то метод срабатывает лишь один раз.
===========  
Таким образом в 1 и 2 случаях выполняется два раза идентичный расчет всего индикатора для всей истории свечей.
т е бессмысленная трата времени процессора и зависание квика.
ParamRequest и CancelParamRequest в индикаторах, ACCESS VIOLATION
 
Цитата
Karina Dmitrieva написал:
Добрый день.

Цитата
TGB написал:
Зачем двойная последовательность вызов функции OnCalculate(index)?:1) index:  1, 2, 3  ….2) index:  1, 2, 3  ….

Действительно метод OnCalculate может срабатывать не один раз при изменении параметров индикатора.
Данная проблема будет устранена в одной из очередных версий ПО.
Приносим извинения за причиненные неудобства.
Метод OnCalculate  обязательно срабатывает два раза на для всей истории свечей в следующих случаях
1)  Когда первый раз загружается индикатор на график
2) Когда вносятся изменения в settings уже загруженного индикатора
------------------  
Если изменения не вносятся, а лишь вызывается редактирование, то метод срабатывает лишь один раз.
===========  
Таким образом в 1 и 2 случаях выполняется два раза идентичный расчет всего индикатора для всей истории свечей.
т е бессмысленная трата времени процессора и зависание квика.
Ошибка при расчёте стохастика, Выдаёт ошибку при обращении к SO.lua
 
Цитата
Евгений написал:
Возникла новая проблема - получить значения индикатора с нескольких предыдущих свечек. Пробовал поменять запрос so1,so2=funcSo(ds:Size(),..  на so1,so2=funcSo(ds:Size()-1,... или менял цикл  for i=1,ds:Size() do  на  for i=1,ds:Size()-1 do, получается ерунда. Подскажите?
чтобы получить значения индикатора с предыдущих свечей надо сохранять значения индикатора в массиве
тогда значения предыдущие читаете из массива по индексу влево от длины массива.
т е
local t={}
t[#t+1]=текущее значение индикатора

читаем значение на 1 свечу назад
x=t[#t-1]
на 2 свечи
x=t[#t-2]
Ошибка при расчёте стохастика, Выдаёт ошибку при обращении к SO.lua
 
Цитата
Евгений написал:
Возникла новая проблема - получить значения индикатора с нескольких предыдущих свечек. Пробовал поменять запрос so1,so2=funcSo(ds:Size(),..  на so1,so2=funcSo(ds:Size()-1,... или менял цикл  for i=1,ds:Size() do  на  for i=1,ds:Size()-1 do, получается ерунда. Подскажите?
так как вы хотите использовать этот индикатор без отображения на графике то для начала исправьте исходный файл и уберите все лишнее:
1) надо выкинуть это:
Код
Settings = {
Name = "*SO (Stochastic Oscillator)", 
Period = 5, 
Metod = "SMA", --(SMA, MMA, EMA, WMA, SMMA, VMA)
Shift = 3, 
Period_D = 3, 
Metod_D = "SMA", --(SMA, MMA, EMA, WMA, SMMA, VMA)
line = {{
      Name = "Horizontal line (top)",
      Type = TYPE_LINE, 
      Color = RGB(140, 140, 140)
      },
      {
      Name = "Horizontal line (bottom)",
      Type = TYPE_LINE, 
      Color = RGB(140, 140, 140)
      },
      {
      Name = "SO", 
      Type = TYPE_LINE, 
      Color = RGB(221, 44, 44)
      },
      {
      Name = "SO - %D", 
      Type = TYPE_LINE, 
      Color = RGB(0, 206, 0)
      }
      },
Round = "off",
Multiply = 1,
Horizontal_line="30"
}
         
function Init()
   func = SO()
   return #Settings.line
end

function OnCalculate(Index) 
local Out1,Out2 = ConvertValue(Settings, func(Index, Settings))
local HL = tonumber(Settings.Horizontal_line)
   if HL then
      return 50+HL,50-HL,Out1,Out2
   else
      return nil,nil,Out1,Out2
   end
end

2) Из большого числа скользящих средних взять то, которое будете использовать
Остальное выкинуть.
-------------------
3) Переписать  функцию SO, указав в ней функцию из 2
--------------------------
В результате у Вас будет скрипт очень похожий на то, что я написал Выше.
в итоге не будет кучи ошибок и все будет просто и понятно.
-----------
Если захотите другую функцию сглаживания то просто замените ее в скрипте.
Зависание терминала QUIK версии 9.5.0.42
 
просто убейте версию 9.x и поставьте 8.7
Все версии 9  очень глючные.  
Ошибка при расчёте стохастика, Выдаёт ошибку при обращении к SO.lua
 
Цитата
Евгений написал:
Цитата
Подскажите, где можно посмотреть примеры запросов к индикаторам?
Функции для работы с графиками

  • getLinesCount
  • getNumCandles
  • getCandlesByIndex
Ошибка при расчёте стохастика, Выдаёт ошибку при обращении к SO.lua
 
Цитата
Евгений написал:
Цитата
nikolz написал:
     Цитата         Евгений    написал:
 
Цитата
  Николай     написал:
 А Вы используете этот код как индикатор или как скрипт?  


 Если как скрипт, то не забывайте передавать поток данных, для которого даже есть переменная ds.   Или, возможно, Вы просто переопределили глобальную переменную C, например С = 5. Что делать в индикаторе нельзя.   Да и в скрипте тоже, если используете этот код, т.к. (C and C(I)) просто проверяет на nil, а уж число там или нет уже не проверяет.  
   Как скрипт, ds есть   Вычисление стохастика по ВИКИ элементарно просто:
---------------------
x=100*(C(i)-Ln)/(Hn-Ln); K=Filt(AL1,K,x); D=Filt(AL,D,K);  
---------------------------
где Hn и Ln - это максимум и минимум на интервале N
а Filt - это мувинг , например, такой: K=Filt(AL1,K,x);
------------------------------
Т е все до безобразия примитивно и просто, как и вся финансовая математика.
---------------
сравните это с монстром, который вам подсунули.
=================
Для справки - стохастик - это примитивный полосовой фильтр  
с очень плохими фильтрующими свойствами.
Параметры этого фильтра биржевые игроки подбирают методом тыка.
Для меня это не очень просто, т.к. данную формулу нужно адаптировать для своего скрипта, ведь так? Причём делать эту нужно для каждого индикатора, с которым захочется поработать. Пробовал я по другому индикатору это сделать - работает, но значения не те. Всё же, думаю, что удобнее всего было бы получать значения индикатора через запрос к файлу индикатора. Подскажите, где можно посмотреть примеры запросов к индикаторам?
напишите, что хотите сделать.
Если Вы делаете индикатор и в нем будете делать робота, то можно использовать код который указали Выше. если вы не можете запустить его как индикатор, то могу выложить немного исправленный этот код который без проблем запускается как индикатор.
-----------------
если хотите как-то иначе использовать этот индикатор, то напишите подробнее, что хотите сделать.
будет настроение, подскажу как.
Разработка торговых роботов на LUA, Разработка торговых роботов на LUA
 
Цитата
EVGEN799 написал:
Вы сможете это сделать?  Сколько будет стоить и что для этого нужно?  Проще на Whatsapp 89163874567
Можете объяснить зачем Вам  TW ?
Вы хотите оплачивать подписку на TW  от 1000 до 5000 руб в месяц?
И что в TW такого что готовы за это платить?
Прикольно,но факт.
 
Проблему выявил,
Квик версии 9.4 выкинул. будщу работать на 8.7.1.3 так спокойнее.
всем спасибо,
тему закрыл.
Прикольно,но факт.
 
получается, что сбербанк непричем
Просто это очередная ошибка в КВИКЕ версии 9.
Прикольно,но факт.
 
действительно,
Вернул версию 8.7 и все стало ОК!
дата сервера 22.08.2022
------------------------
второй раз пытался поставить 9.4
и опять пришлось выкинуть до лучших времен.
Прикольно,но факт.
 
странно то, что я в субботу заменил версию 8.7 на версию 9.4.2.1
И с такой херней столкнулся впервые.
Что-то мне подсказывает что эта херня с 9 версии.
Прикольно,но факт.
 
написал же - прикольно.
потому что меня это не ...т.
Работал я и сведущим брокером, который по материалам расследования комиссии по ЦБ сливал депозиты клиентов.
На ведущих биржах мира такое тоже делают ведущие брокеры.
Жадность никто еще не победил.
Индикатор для арбитража
 
Цитата
Владимир написал:
nikolz, Ути-пути! Чем же это невежливо я спросил, лапуль? Тем более, что вопрос был риторический, а Вас я не считаю способным ответить даже на самые примитивные вопросы. Индикаторы НИЧЕМ не могут быть полезны, В ПРИНЦИПЕ ничем. Поскольку если их показания полезны, то нет ничего проще, чем автоматизировать и принятие решений по этим показаниям а не просиживать у монитора, зарабатывая очки на глаза и геморрой на жопу. А если бесполезны, то им тем более место на помойке. Следовательно, индикаторы нафиг не нужны никому и никогда. Я лично это говно не только никогда не использовал, но даже и в мыслях не было этого делать.

Да, лапуль: ОТ ВАС мне никакие ответы не нужны, и я говорю это Вам не первый год. И не надо трусливо прятаться за "все и вся" - просто я тоже не раз уж говорил, что с детства не перевариваю распальцованных дураков.
Сочувствую.
Над мудаками не смеюсь.
Помогите с кодом индикатора Spred
 
Цитата
Юрий написал:
Код
  Settings = 
{
   Name  =   "DayMax/Med/Min/X" ,
   a  =   1000 ,  -- свободный член 
   line  = 
   {
      {
         Name  =   "Median" ,
         Color  =   RGB ( 0 ,  0 ,  255 ),
         Type  =  TYPE_LINE,
         Width  =   1 
      },
      {
         Name  =   "Maximum" ,
         Color  =   RGB ( 0 ,  128 ,  0 ),
         Type  =  TYPE_LINE,
         Width  =   1 
      },
      {
         Name  =   "Minimum" ,
         Color  =   RGB ( 255 ,  0 ,  0 ),
         Type  =  TYPE_LINE,
         Width  =   1 
      }
   }
}
ma  =   nil l
me  =   nil l
mi  =   nil l


 function   Init ()
    return   3 
 end 


 function   OnCalculate (index)
   
    if  index  =  =   1   then 
      ma  =   nil l
      me  =   nil l
      mi  =   nil l
    end  

    if  ma  =  =   nil l  then 
      ma  =  H(index)
      
    elseif  H(index)  >  ma  then 
      ma  =  H(index)
       if  (ma - mi) > Settings.a  then 
        mi  =  ma  -  Settings.a
       end 
    end 

    if  mi  =  =   nil l  then 
      mi  =  L(index)
      
    elseif  L(index)  <  mi  then 
      mi  =  L(index)
       if  (ma - mi) > Settings.a  then 
        ma  =  mi  +  Settings.a
       end 
    end 
    if  me  =  =   nil l  then 
      me  =   (H(index)  +  L(index))/ 2 
    elseif  L(index)  <  mi  then 
       me  =   (H(index)  +  L(index))/ 2 
    elseif  H(index)  >  ma  then 
       me  =   (H(index)  +  L(index))/ 2 
    end 
   
   

    return  me, ma, mi
 end 
  
Я хочу использовать для других расчетов предыдущие me, ma, mi. Подскажите, как это сделать! me(index-1) не работает....
Специально для Вас выложил на форуме готовый скрипт.
https://forum.quik.ru/forum10/topic7578/
Прикольно,но факт.
 
Сегодня в сбербанке на реальных торгах наблюдаем это:
посмотрите дату торгов и дату сервера.
Очевидно, все в отпуске и сервером управляет пьяный робот.
 
Индикатор для арбитража
 
Цитата
Владимир написал:
nikolz, Лапуль, а слабо сказать "специально для буратин и чайников" ЗА КАКИМ ХРЕНОМ вообще нужны индикаторы? Тем более, "буратинам и чайникам", которые по определению нифига не понимают ни в торговле, ни в программировании. Скрипты - я понимаю: чтобы утром их запустить, а вечером выключить. Или, как Борис хочет, выключать их раз в неделю, месяц, полгода, год. А эти дурацкие индикаторы зачем?
Владимир,
Если Вы спросите вежливо, то я Вам объясню в чем смысл индикаторов и почему они полезны профи на рынке.
-------------------------------
Более того, Вы удивитесь, но индикаторы используют и реальные роботы крупных игроков,
а не только игрушки , которые делают все посетители данного форума.
--------------------------------
И даже Вы используете индикаторы, но не подозреваете об этом, либо не хотите в этом сознаться.
-------------------------------------
Но эти вопросы и ответы на них не есть тема этого форума.
-------------------------
Да и вам ответы не нужны.
----------------------
Вы же себя показать желаете, оплевывая все и вся.  
Ошибка при расчёте стохастика, Выдаёт ошибку при обращении к SO.lua
 
Цитата
Евгений написал:
Цитата
Nikolay написал:
А Вы используете этот код как индикатор или как скрипт?  


Если как скрипт, то не забывайте передавать поток данных, для которого даже есть переменная ds.   Или, возможно, Вы просто переопределили глобальную переменную C, например С = 5. Что делать в индикаторе нельзя.   Да и в скрипте тоже, если используете этот код, т.к. (C and C(I))     просто проверяет на nil, а уж число там или нет уже не проверяет.
Как скрипт, ds есть
Вычисление стохастика по ВИКИ  элементарно просто:
---------------------
x=100*(C(i)-Ln)/(Hn-Ln);  K=Filt(AL1,K,x);    D=Filt(AL,D,K);
---------------------------
где  Hn и Ln  - это максимум и минимум на интервале N
а Filt - это мувинг , например,  такой:  K=Filt(AL1,K,x);
------------------------------
Т е все до безобразия примитивно и просто, как и вся финансовая математика.
---------------
сравните это с монстром, который вам подсунули.
=================
Для справки  - стохастик - это примитивный полосовой фильтр
с очень плохими фильтрующими свойствами.
Параметры этого фильтра биржевые игроки подбирают методом тыка.
Индикатор для арбитража
 
Добрый день,
Специально для буратин и чайников выкладываю исходник индикатора арбитража.
-----------------
На графике отображается  
белый  - разность цен
красный - максимум за торговый день
синий -минимум за торговый день
зеленый - средний за торговый день
розовый - эксп.скользящая средняя
------------------
Инструкция для ощущения счастья:
1. Откройте график цены первого инструмента
2. Откройте в этом же окне график цены второго инструмента.
3. На вкладке Дополнительно второго графика запишите Идентификатор, который записан в  исходнике индикатора в поле sec    таблицы Settings
4. Откройте индикатор в новой области этого окна.
------------------
Код
--title="Arbitr <nikolz> "-- арбитраж
name='arb_nk'
Settings={
sec ="SB_arb",  --идентификатор 2-го инструмента (графика)
LEMA = 30,
Name = name,
}
-------
function OnCalculate(i)
   if i==1 then
      AL=1/Settings.LEMA; y,Ma,Mi,Me,x=nil;
   else
      local C1=C(i)
      if T(i-1).hour>T(i).hour then y,Ma,Mi,Me,x=nil  end
      local t=getCandlesByIndex(Settings.sec,0,i,1);  t=t[#t];
      if t  then
         local C2=t.close;
         if C2  and C1 then
            x1=C1-C2;
            if Ma==nil or x1>Ma then Ma=x1 end
            if Mi==nil or Mi>x1 then Mi=x1 end
            if Ma and Mi then
            Me=(Ma+Mi)/2; x=x1;
            if y==nil then y=x; end y=(1-AL)*y+AL*x;
            end
         end
      end
   end
   return Me,Ma,Mi,x,y
end
-----
function Init()
 Settings.line={};
   Settings.line[1] =    {Name = "Me",Color = RGB(0,255,0),      Type =1,Width = 2   };
   Settings.line[2] =    {Name = "Ma",Color = RGB(255,0,0),      Type =1,Width = 2   };
   Settings.line[3] =    {Name = "Mi",Color = RGB(0,0,255),      Type =1,Width = 2   };
   Settings.line[4] =    {Name = "x",Color = RGB(255,255,255),   Type =1,Width = 1   };
   Settings.line[5] =    {Name = "eMA",Color = RGB(255,32,255),   Type =1,Width = 2   };
   return #Settings.line;
end
 
Помогите с кодом индикатора Spred
 
Я Вам написал чтобы проверили а не копировали надписи на заборе.
У вас нет вычисления timeCode (добавьте):
и где вы изначально нашли  функцию  getCandleByTimeCode
----------------
В своей программе ,картинка выше, я использую getCandlesByIndex,
Ошибка при расчёте стохастика, Выдаёт ошибку при обращении к SO.lua
 
удивляюсь, как можно такой простой индикатор изложить в виде такого громадного количества операторов.
Полагаю, что разработчику платили по количеству операторов.
Ошибка при расчёте стохастика, Выдаёт ошибку при обращении к SO.lua
 
по форме этот индикатор написан правильно, но по сути - это издевательство над пользователями.
Писавший эти индикаторы совершенно не понимает зачем они нужны.
Ошибка при расчёте стохастика, Выдаёт ошибку при обращении к SO.lua
 
Цитата
Евгений написал:
Цитата
nikolz написал:
     Цитата         Евгений    написал:
function Init()
 func = SO()
 return #Settings.line
end   попробуйте перенести функцию Init в самый конец скрипта
Здравствуйте.
Не помогло.
Ошибку "311:attempt to call a number value (global 'C')" удалось убрать, поменяв в моём коде, который обращается к файлу индикатора цену C на c.
Но значения индикатора не удаётся получить, появляется ошибка "attempt to concatenate a nil value (global 'so2')".
Видимо я неправильно обращаюсь к индикатору, хотя по подобному запросу к PSAR скрипт получает значения:
Код
  dofile( getWorkingFolder () .. '\\LuaIndicators\\SO.lua' )
funcSo  =  SO()
 .. .

 for  i =  1 ,ds: Size ()  do 
so1, so2  =  funcSo(i, {Period  =   5 , Metod  =   "SMA" , Shift  =   3 , Period_D  =   3 , Metod_D  =   "SMA" }, ds)
so1, so2  =  funcSo(ds: Size (), {Period  =   5 , Metod  =   "SMA" , Shift  =   3 , Period_D  =   3 , Metod_D  =   "SMA" }, ds)
 end 
  
вы пытаетесь использовать монстра который нагородили разработчики, но они его сами не применяют в квике.
---------------
Проще всего поместите встроенный этот индикатор  на график, задайте идентификатор и прочитайте значения с графика. В результате получите ровно то, что увидите.
--------------  
если надо скрипт на луа, то либо найдите существенно более простой код что то что взяли, либо напишите сами по формуле из вики.
Объединение тиков, Как объединить тики
 
если надо объединение тиков, то самое простое это смотреть стакан.  
Объединение тиков, Как объединить тики
 
пардон, опечатка
тик - это и есть сделка между двумя участниками биржи, цены заявок которых совпали либо лучшие из существующих.
Страницы: Пред. 1 ... 34 35 36 37 38 39 40 41 42 43 44 ... 80 След.
Наверх