Хочу сегодня показать, как можно раскрашивать свечи в TSLab. Оказался очень полезный прием, его порекомендовал Родион Скуратовский. Я, в своих роботах-скриптах, синим цветом отмечаю свечи, когда находимся в позиции. Остальные – серым. Иногда помечаю оранжевым свечные паттерны или место появления сигнала.
Раскрасить можно свечи, если вы создаете скрипты на 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); //Серый цвет если позиции нет }
А на картинке ниже красным отмечаю период стабилизации индикатора.
Приведенный скрипт качаем тут.
Кому оказалось полезно, оставляйте комментарии!!!
Свежие комментарии