Робот в виде скрипта индикатора

Страницы: 1
RSS
Робот в виде скрипта индикатора
 
Добрый  день,
Рассказываю, как просто сделать робота в виде скрипта индикатора.
Сначала картинка работы такого робота.


В чем достоинство такого робота по сравнению с роботом на основе колбеков.
Робот значительно проще написать
Он загружается на график торгуемого инструмента,
Если для реализации алгоритма торговли  достаточно встроенных в QUIK индикаторов,
то нет надобности их программировать.
----------------  
Пример варианта основного  фрагмента такого робота:
Код
name="nkbot24"
Settings={["Name"] =name,["line"] ={},["account"]="",["client"]="",["Q"]=1;["wt"]=1000,["short"]=0}
Settings.Nind=0;

paths = "D:/QUIK_SCRIPT/"
package.cpath =package.cpath ..";"..paths.."?.dll";
package.path =package.path..paths.."?.lua;"
fnlog=paths..name..".log"; Log=io.open(fnlog,"w")

loadfile(paths.."nkbot24_func.lua")

function nkbuy(i,f)
---алгоритм покупки
 -- f=cross(1,1,2,1,1);
return f;
end

function nksell(i,f)
--алгоритм продажи
-- f=cross(1,1,2,1,1);
return f;
end

function nobuy(i,f)
--фильтр покупки
return f;
end

function nosell(i,f)
--фильтр продажи
return f;
end

function OnCalculate(i)
   local i1=i-1;
   if i==1 then nkInit(); return end
   if i~=i_ then    getI()   end
   N,torder=order(N);    Q=depo();
   if #t==0 then
--      f,j=cross(1,1,2,1,5); --пересечение двух индикаторов
      if i~=i_ then torg(nkbuysel(i));end
      M=os.clock();
   else
      del_ord(M);
   end
   i_=i;
return M1,M2;
end
Продолжение вероятно следует...
 
Написал робота.
Получилось 180 строк, примерно 200 операторов.
---------------------
Робот позволяет написать правило для индикаторов на графике
и по сигналам этого правила покупает или продает  заданное количество.
При этом снимает заявки, если они не исполняются заданное время.
-------------------
Сейчас процесс отладки.
-----------------
Отладил режим советника.
Вот картинка сигналов робота. На графике два мувинга .

это основная часть робота-индикатора:
Код
paths = "D:/QUIK_SCRIPT/" -- путь к файлу nkbot24_func.luac
dofile(paths.."nkbot24_func.luac")

Settings.account=""; Settings.client=""; --вписать счет и клиент
Settings.Nind=2;
function OnCalculate(i)
   Hi,Li=H(i),L(i);
   if i==1 then _nkInit(); return end--инициализация
   _getI(i); --читаем значения индикаторов
   f=_cross(1,1,2,1,i);  -- сигнал пересечение линий индикаторов
   _torg(f,i); --выставляем заявки по пересечению
   return SE,BU;  -- отображаем сигналы в режиме советника
end

Хотел выложить nkbot24_func.luac, но форум не принимает такие файлы.
--------------
 
 
Это очень хорошо. А как транзакции отслеживать Пробовали? События приходят?
 
Цитата
Александр написал:
Это очень хорошо. А как транзакции отслеживать Пробовали? События приходят?
Да, закончил отлаживать модуль для торговли.
События в индикаторах не используются.
Все делается по таблицам. Без проблем.
------------------------------
Скрипт 110  строк.
----------------
Модуль в виде функции.
Входные параметры сигнал купить/продать и текущий номер свечи.
---------------------
Алгоритм такой :
-----------------------
Проверяем есть ли активная заявка.
Если есть, то проверяется время ее активности.
Если время ее активности истекло (задается в параметрах индикатора)
то заявка снимается.
----------------------
Если активных заявок нет , то определяется текущая позиция  и возможное количество для совершения сделки.
-----------------------------
В зависимости от направления позиции, сигнала, допустимого максимума в позиции и разрешения на шорт, определяется
количество в новой заявке.
-----------------------------
Выбор цены сделки пока вопрос открытый. Есть различные варианты.  Пока остановился на last+-step.
После этого выставляется новая заявка.
------------------------
Тестил на демо сервере примерно 500 сделок , полет нормальный.
 
 
2024 Февраль  Сегодня



2024 Январь и Февраль
Страницы: 1
Читают тему
Наверх