Дочерние стратегии StopLoss и TakeProfit.

Дочерние стратегии StopLoss и TakeProfit.


Добрый день! Пытаюсь выставить заявки типа стоп лимит и тейк профит так:

Как только приходит сделка сразу же исполняется отложенный ордер. В примере SampleQuik при выставлении стоп заявки таблица стоп заявок пишет "Ошибка".
Как правильно выставлять стопы и тейки?

И еще вопрос. С помощью какого элемента графики рисовать стопы на графике?
Пробовал рисовать LineElement но исключение пишет что элемент поддерживается.



Спасибо:


< 1 2 3  >
Константин

Фотография
Дата: 26.03.2018
Ответить


Для стопов и тейков есть элемент для отрисовки на графике?
Спасибо:

Support

Фотография
Дата: 27.03.2018
Ответить


Добрый день

График не зависит от типов торговых данных. Вы можете изобразить ваши заявки любым подходящим элементом графика. Например уровнями http://doc.stocksharp.ru...g_ChartOrderElement.htm Наш пример SampleActiveOrders демонстрирует работу с данным элементом.
Спасибо:

Константин

Фотография
Дата: 11.04.2018
Ответить


SampleActiveOrders это немного не то. Вот так можно ли как то рисовать?
Спасибо:

Support

Фотография
Дата: 12.04.2018
Ответить


Добрый день

Вы можете использовать маркер заявок. Пример использования показан в SampleChartActiveOrders

79f0ac5f8fd5d57e2febe73ccdd8e5fd.png
Спасибо:

Константин

Фотография
Дата: 12.04.2018
Ответить


Здравствуйте! Я смотрел этот пример. Я же написал что это немного не то. Если я буду использовать трейлинг то на истории я не смогу видеть как он смещался. SampleChartActiveOrders показывает просто уровни. На скрине выше видно как стоп смещается. Может можно использовать значения не привязанные к ордерам? Рисовать ломаную линию на графике указав координаты оси X (время) и оси Y (цена).
Спасибо:

Support

Фотография
Дата: 13.04.2018
Ответить


Все элементы графика не привязаны к торговым объектам. Вы можете выбрать подходящий элемент и рисовать на графике в произвольном стиле.
Спасибо:

Константин

Фотография
Дата: 03.06.2018
Ответить


Добрый день! Я не понимаю как можно рисовать в произвольном стиле. Метод добавления данных на график (ChartDrawData.Add();) принимает аргумент типа IIndicatorValue. Перегрузки с аргументом типа decimal нет. При попытке передать decimal выбрасывает исключение, при чем ошибки уровня компиляции нет.
Скрин: https://yadi.sk/i/UCLUsVhF3WxFnE
Пробовал создать класс реализующий интерфейс IIndicatorValue, но так и не понял куда передать нужное значение.
Код:

Спасибо:

Support

Фотография
Дата: 06.06.2018
Ответить


Добрый день

Есть два варианта: 1) Подобрать подходящий графически индикатор и передавать в него значения. В этом варианте вы контролируете что именно рисовать. 2) Изменить существующий индикатор путём переопределение интерфейса IIndicatorPainter. В этом варианте вы контролируете как именно рисовать данные.
Спасибо:

Константин

Фотография
Дата: 07.06.2018
Ответить


Про IIndicatorPainter не понял. Как можно переопределить интерфейс? Да и интерфейса такого я не нашел. Есть IChartIndicatorPainter. Вы его имели в виду? То есть для того что бы рисовать индикатор так, как мне нужно мне надо создать класс реализующий IChartIndicatorPainter, а затем экземпляр этого класса передать в ChartIndicatorElement.IndicatorPainter? Верно? Если да то можно ли где то посмотреть реализацию такого класса? Не очень понятно как реализовывать методы этого интерфейса.
Спасибо:

Support

Фотография
Дата: 08.06.2018
Ответить


Добрый день

Ниже реализация отрисовщика для индикатора Ишимоку

Код
namespace StockSharp.Xaml.Charting.IndicatorPainters
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Windows.Media;

    using Ecng.Serialization;
    using Ecng.Xaml;

    using StockSharp.Algo.Indicators;
    using StockSharp.Localization;

    /// <summary>
    /// The renderer for <see cref="Ichimoku"/>.
    /// </summary>
    [Indicator(typeof(Ichimoku))]
    public class IchimokuPainter : BaseChartIndicatorPainter
    {
        private ChartIndicatorElement _tenkan;
        private ChartIndicatorElement _kijun;
        private ChartIndicatorElement _senkouA;
        private ChartIndicatorElement _chinkou;

        /// <summary>
        /// <see cref="Ichimoku.Tenkan"/> line color.
        /// </summary>
        [Display(
            ResourceType = typeof(LocalizedStrings),
            Name = LocalizedStrings.Str2039Key,
            Description = LocalizedStrings.Str2040Key)]
        public Color TenkanColor { get; set; } = Colors.Red;

        /// <summary>
        /// <see cref="Ichimoku.Kijun"/> line color.
        /// </summary>
        [Display(
            ResourceType = typeof(LocalizedStrings),
            Name = LocalizedStrings.Str2041Key,
            Description = LocalizedStrings.Str2042Key)]
        public Color KijunColor { get; set; } = Colors.Blue;

        /// <summary>
        /// <see cref="Ichimoku.SenkouA"/> line color.
        /// </summary>
        [Display(
            ResourceType = typeof(LocalizedStrings),
            Name = LocalizedStrings.Str2043Key,
            Description = LocalizedStrings.Str2044Key)]
        public Color SenkouAColor { get; set; } = Colors.SandyBrown;

        /// <summary>
        /// <see cref="Ichimoku.SenkouB"/> line color.
        /// </summary>
        [Display(
            ResourceType = typeof(LocalizedStrings),
            Name = LocalizedStrings.Str2045Key,
            Description = LocalizedStrings.Str2046Key)]
        public Color SenkouBColor { get; set; } = Colors.Thistle;

        /// <summary>
        /// <see cref="Ichimoku.Chinkou"/> line color.
        /// </summary>
        [Display(
            ResourceType = typeof(LocalizedStrings),
            Name = LocalizedStrings.Str2047Key,
            Description = LocalizedStrings.Str2048Key)]
        public Color ChinkouColor { get; set; } = Colors.Green;

        /// <summary>
        /// To initialize renderer.
        /// </summary>
        /// <returns>Graphical data.</returns>
        public override IEnumerable<ChartIndicatorElement> Init()
        {
            InnerElements.Clear();

            InnerElements.Add(_tenkan = new ChartIndicatorElement
            {
                DrawStyle = ChartIndicatorDrawStyles.Line,
                Color = TenkanColor,
                StrokeThickness = BaseElement.StrokeThickness,
                Title = LocalizedStrings.Str764
            });

            InnerElements.Add(_kijun = new ChartIndicatorElement
            {
                DrawStyle = ChartIndicatorDrawStyles.Line,
                Color = KijunColor,
                StrokeThickness = BaseElement.StrokeThickness,
                Title = LocalizedStrings.Str765
            });

            InnerElements.Add(_senkouA = new ChartIndicatorElement
            {
                DrawStyle = ChartIndicatorDrawStyles.Band,
                Color = SenkouAColor,
                AdditionalColor = SenkouBColor,
                StrokeThickness = BaseElement.StrokeThickness,
                Title = LocalizedStrings.Str767
            });

            InnerElements.Add(_chinkou = new ChartIndicatorElement
            {
                DrawStyle = ChartIndicatorDrawStyles.Line,
                Color = ChinkouColor,
                StrokeThickness = BaseElement.StrokeThickness,
                Title = LocalizedStrings.Str768
            });

            return InnerElements;
        }

        /// <summary>
        /// To process new values.
        /// </summary>
        /// <param name="time">The time stamp of the new data generation.</param>
        /// <param name="value">Indicator values.</param>
        /// <param name="draw">The method of value drawing on the chart.</param>
        public override void ProcessValues(DateTimeOffset time, IIndicatorValue value, DrawHandler draw)
        {
            if (!value.IsFormed)
            {
                draw(_tenkan, 0, double.NaN);
                draw(_kijun, 0, double.NaN);
                draw(_senkouA, 0, double.NaN, double.NaN);
                draw(_chinkou, 0, double.NaN);
            }
            else
            {
                var values = value.GetSimpleValues();
                var ind = (Ichimoku)value.Indicator;

                draw.TryDraw(_tenkan, 0, values[ind.Tenkan]);
                draw.TryDraw(_kijun, 0, values[ind.Kijun]);
                draw.TryDraw(_senkouA, 0, values[ind.SenkouA], values[ind.SenkouB]);
                draw(_chinkou, 0, double.NaN);
                draw.TryDraw(_chinkou, ind.Kijun.Length, values[ind.Chinkou]);
            }
        }

        #region IPersistable

        /// <summary>
        /// Load settings.
        /// </summary>
        /// <param name="storage">Settings storage.</param>
        public override void Load(SettingsStorage storage)
        {
            TenkanColor = storage.GetValue<SettingsStorage>(nameof(TenkanColor)).ToColor();
            KijunColor = storage.GetValue<SettingsStorage>(nameof(KijunColor)).ToColor();
            SenkouAColor = storage.GetValue<SettingsStorage>(nameof(SenkouAColor)).ToColor();
            SenkouBColor = storage.GetValue<SettingsStorage>(nameof(SenkouBColor)).ToColor();
            ChinkouColor = storage.GetValue<SettingsStorage>(nameof(ChinkouColor)).ToColor();
        }

        /// <summary>
        /// Save settings.
        /// </summary>
        /// <param name="storage">Settings storage.</param>
        public override void Save(SettingsStorage storage)
        {
            storage.SetValue(nameof(TenkanColor), TenkanColor.ToStorage());
            storage.SetValue(nameof(KijunColor), KijunColor.ToStorage());
            storage.SetValue(nameof(SenkouAColor), SenkouAColor.ToStorage());
            storage.SetValue(nameof(SenkouBColor), SenkouBColor.ToStorage());
            storage.SetValue(nameof(ChinkouColor), ChinkouColor.ToStorage());
        }

        #endregion
    }
}
Спасибо:
< 1 2 3  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy