pmus

using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;
using TSLab.Script.Helpers;
using TSLab.Script.Realtime;
namespace TSLab.Samples
{
public class Final : IExternalScript
{
public …
public virtual void Execute(IContext ctx, ISecurity sec)
{
var …
IList …
{
int barsCount = sec.Bars.Count;
for (int i = 50; (i < barsCount); i++)
{
if …
else …
{
BT = …;
ST = …;
}
}
}
Если плагину необходимо получить управление в момент успешной установки соединения, то нужно добавить ещё одну функцию: trade()
Итак, простейший плагин hello_world по строчкам:
# -*- coding: utf-8 -*-# plugin_name = 'Hello world!'
Указываем, что файл сохранен в кодировке UTF-8 и называется он 'Hello world'
global api
Указываем, что будем использовать встроенный API — он нам понадобится для вывода текста в окно программы
Здесь я по привычке я сделал питонячий класс и сразу же при загрузке он создастся под именем hello. Это было совсем необязательно, но в более сложных плагинах лучше делать именно так.
class HelloWorld():
def __init__(self):
pass
def sayhello(self):
api.pprint('<strong>Hello!</strong>', 'magenta')
def trade(self):
api.pprint('<strong>Trade!</strong>', 'blue')
hello = HelloWorld()
И наконец, обязательные функции
def init():
hello.sayhello()
def trade():
hello.trade()
При успешной загрузке плагина выполнится init(), которая вызовет метод hello.sayhello(), а тот, в свою очередь, вызовет функцию api под названием pprint. А функция api.pprint(текст, цвет) по умолчанию выводит текст нужного цвета в закладку 'Консоль'.

Сразу после установки соединения будет вызвана (при наличии ее в плагине) функция trade(). У нас она просто сообщает, что успешно запустилась.

Вот и весь hello_world.
Приведу ещё раз полный текст плагина:
# -*- coding: utf-8 -*-#
plugin_name = 'Hello'
global api
class HelloWorld():
def __init__(self):
pass
def sayhello(self):
api.pprint('<strong>Hello!</strong>', 'magenta')
def trade(self):
api.pprint('<strong>Trade!</strong>', 'blue')
hello = HelloWorld()
def init():
hello.sayhello()
def trade():
hello.trade()
Как видите, получается компактный и читаемый код безо всяких Гитлеров. А если упростить, убрав класс, то вообще семь строк:
# -*- coding: utf-8 -*-#
plugin_name = 'Hello'
global api
def init():
api.pprint('<strong>Hello!</strong>', 'magenta')
def trade():
api.pprint('<strong>Trade!</strong>', 'blue')
В дальнейшем я расскажу, как создавать реально полезные плагины, с повышение уровня сложности.
Буду рад вашим комментариям!
Демка платформы лежит здесь: http://rts-robot.ru
p.s. Самые внимательные разглядят на скриншотах путь C:\Yukon. Это рабочее название проекта, но раз уж сайт называется rts-robot, то и программу я решил называть так же.

