Додайте свій проект безкоштовно і почніть отримувати пропозиції від фрілансерів-виконавців вже через хвилини після публікації!
500 ₽

Написать индикатор для FXCM TradeStation (lua/JavaScript)

минув час актуальності


Необходимо на графике вывести горизонтально или вертикально (слева/спарва/сверху/снизу, должно задаваться через параметр) последние N (задается через параметр) изменений цены в пунктах (то есть текущая-предыдущая/минимальное изменение (так называемый "пункт")). То есть вывод будет +5 -7 -1 +2 и  т.д.

====

Есть платформа для торговли на Forex - FXCM TradeStation. В ней на графики можно накладывать индикаторы технического анализа (к примеру - скользящая средняя, регрессия и т.д.). Эти индикаторы можно писать самому на языке Lua или JavaScript (но примеры привожу на Lua).

Если вкратце о структуре скрипка на Lua под эту платформу (чтобы примерно понимать, сколько работы там): есть несколько обязательных функций которые надо написать, это:

1) function Init() - выполняется один раз при старте платформы, в этой функции по сути составляется описание индикатора:

indicator:name("Figurelli Series indicator");

indicator:description("Figurelli Series indicator"); -- как называется,

indicator:requiredSource(core.Bar); -- тип принимаемых данных (один потом core.Tick или core.Bar, то есть несколько потомков со значениями за определенный промежуток времени (значения на начало и конец периода, минимум и максимум в течении этого промежутка времени)

indicator:type(core.Oscillator); -- тип выдаваемых значений (core.Indicator, то есть диапазон значений совпадает с источником, core.Oscillator, то есть у него свой диапазон выдаваемых значений)

indicator.parameters:addInteger("series", "series", "series", 36);

indicator.parameters:addColor("clr", "Color", "Color", core.rgb(0, 0, 255)); -- парамиетры которые пользователь может задавать


2) function Prepare() -- функция вызывается когда пользователь накладывает индикатор на график. Тут мы должны инициализировать все что нам нужно для работы. Тут у нас имеются

source = instance.source; --источник данных на основе которого мы должны считать. Зависит от того что мы указали в indicator:type.

series=instance.parameters.series; --указанные пользователем параметры

local name = profile:id() .. "(" .. source:name() .. ", " .. instance.parameters.series .. ")";

instance:name(name); --указываем имя для легенды на графике

FS = instance:addStream("FS", core.Bar, name .. ".FS", "FS", instance.parameters.clr, first); -- создаем выходные потоки (результат того что мы посчитаем


3) function Update(period, mode) --эта функция при старте вызывается для каждого значения которое нам надо посчитать (по индексу period). То есть period будет 0, 1... и до source:size() - 1. Потом он также будет вызываться при каждом изменении source

FS[period]=457348957;--и мы должны произвести какие-нибудь манипуляции и записать результат.


Также в prepare мы можем сказать что сами себя будем отрисовывать (добавить строчку instance.ownerDrawn(true);)

Тогда будет вызываться опциональная функция

4) function Draw(stage, context)

В ней через context можно создавать ручки, кисти, шрифты (аналог GDI объектов), и рисовать примитивы (линии, текст, квадраты и прочее).


Вся документация для разработки есть (на английском), примеров тоже куча (гуглите fxcodebase). Зачастую можно найти похожий каркас и подправить внутрянку (но наверное в этом случае проще с нуля). Дебаггера для платформы толкового нет (проще дебажить трейсами: core.host:trace("ырпвоап");


Сам являюсь экспертом по разработке под эту платформу, но работы физически больше чем я могу выполнить, поэтому часть самых простых решил отдать на сторону. В случае чего, могу подсказать чего да как. Если есть уточняющие вопросы - задавайте, отвечу.


Оптимальным кандидатом будет какой-нибудь студент который хочет попробовать пописать торговых роботов (автоматизация торговли на биржах)



  1. 5 днів2000 ₽
    Антон Мыслицкий
     472   6   0

    Интересный проект, мог бы попробовать

    Україна Київ | 14 травня о 16:01 |

Замовник
Проект опублікований
14 травня о 05:41
42 перегляди
Місцеположення виконавця
Поділитися