View Sidebar
Яндекс.Метрика
 
Раскрашиваем свечи в разные цвета в TSlab на C#

Раскрашиваем свечи в разные цвета в TSlab на C#

19.04.2016 21:000 comments

Хочу сегодня показать, как можно раскрашивать свечи в TSLab. Оказался очень полезный прием, его порекомендовал Родион Скуратовский. Я, в своих роботах-скриптах, синим цветом отмечаю свечи, когда находимся в позиции. Остальные – серым. Иногда помечаю оранжевым свечные паттерны или место появления сигнала.

candle-color-strategies

Раскрасить можно свечи, если вы создаете скрипты на C#. Кубики не дают такой возможности!

Чтобы было что раскрашивать, напишем простой скрипт. Будем покупать на баре номер 50, и продавать на баре 200.

Вот полный текст скрипта:


using System;
using System.Collections.Generic;
using System.Linq; // Без этого работать не будет!!!
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Helpers;
using TSLab.Script.Optimization;

namespace KKV.TSLab.Strategies
{
public class TestStrategy : IExternalScript
{

public virtual void Execute(IContext ctx, ISecurity sec)  // IContext ctx - источник данных, ISecurity sec - фин инструмент и инф.о нем
{

for (int bar = 0; bar < sec.Bars.Count; bar++)
{

if (bar == 50)
sec.Positions.BuyAtMarket(bar + 1, 1, "Купили");

if (bar == 200)
{
IPosition position = sec.Positions.GetLastPositionActive(bar); // получить ссылку на позицию
position.CloseAtMarket(bar + 1, "Продали");
}

}

// Если оптимизация, то пропускаем отрисовку
if (ctx.IsOptimization)
return;

var LightGray = 0xc0c0c0; //Серый цвет
var Blue = 0x0000ff;  //Синий цвет

// Создаём график скриптом
var pricePane = ctx.CreatePane(sec.ToString(), 100, false);

// Выводим график
var lst = pricePane.AddList(sec.ToString(), sec, CandleStyles.BAR_CANDLE, Blue, PaneSides.RIGHT);

//Расскрашиваем свечи в цвета
for (var i = 0; i < ctx.BarsCount; i++)
{
//Расскрашиваем свечи в цвета, если в позиции
var pos = sec.Positions.GetActiveForBar(i);

if (pos.Any())
lst.SetColor(i, Blue); //Синий цвет если в позиции
else
lst.SetColor(i, LightGray); //Серый цвет если позиции нет
}

}
}
}

Обратите внимание на третью строку

using System.Linq;

без неё не будет работать.

Ну, а само раскрашивание выполняет этот кусок кода:


//Расскрашиваем свечи в цвета
for (var i = 0; i < ctx.BarsCount; i++)
{
//Расскрашиваем свечи в цвета, если в позиции
var pos = sec.Positions.GetActiveForBar(i);

if (pos.Any())
     lst.SetColor(i, Blue); //Синий цвет если в позиции
else
     lst.SetColor(i, LightGray); //Серый цвет если позиции нет
}

А на картинке ниже красным отмечаю период стабилизации индикатора.

candle-color-tslab

Приведенный скрипт качаем тут.

 

Кому оказалось полезно, оставляйте комментарии!!!

Добавить комментарий


css.php