← 返回

не могу нарисовать индикатор сделки и заявки на графике

Приветствую! прошу помочь, не могу отрисовать свои сделки на графике, по примерам найденным на форуме делаю так:

private readonly ChartTradeElement _MYchartTradeElement = new ChartTradeElement ;

private readonly ChartOrderElement _MYchartOrderElement = new ChartOrderElement ;

...

_trader.NewMyTrades += myTrades => this.GuiAsync(() => { var dict = new Dictionary<IChartElement, object> {{ _MYchartTradeElement, myTrades.Last() }}; Chart.Draw(myTrades.Last().Trade.Time, dict);

...

_trader.OrdersChanged += myOrders => this.GuiAsync(() => { foreach (Order MO in myOrders) { var dict = new Dictionary<IChartElement, object> { { _MYchartOrderElement, MO } }; Chart.Draw(MO.Time , dict);

и в итоге на экране ничего кроме свечек не отображается!

и еще вопрос можно ли как то к стрелке показывающей на сделку вывести тестовое пояснение, ну например это сработал стоп, а это тэйк? или, если нет какого то готового решения, хоть направьте плиз куда посмотреть спасибо!

本主题对您有帮助吗?

分享主题

评论 (12)

登录创建账户, 登录或注册以发表评论

Vitaly48
Vitaly48 作者

Уважаемые коллеги! требуется помощь!

Vitaly48
Vitaly48 作者

Фух, после упорного перелапачивания форума, доков и примеров пришел к тому, что надо заводить отдельную переменную на ордера и сделки, а рисовать на графике через CandleManagerProcessing

private readonly List<Order> _myOrdersList = new List<Order>(); private readonly List<MyTrade> _myTradesList = new List<MyTrade>();

...

_trader.NewMyTrades += myTrades => this.GuiAsync(() => {_myTradesList.AddRange(myTrades); }); _trader.OrdersChanged += myOrders => this.GuiAsync(() => {_myOrdersList.AddRange(myOrders); });

                _candleManager = new CandleManager(_trader);
                _candleManager.Processing += DrawCandle;

...

private void DrawCandle(CandleSeries _series, Candle _candle) {

        var _trade = _myTradesList.FirstOrDefault();
                    _myTradesList.Clear();

        var _order = _myOrdersList.FirstOrDefault();
                     _myOrdersList.Clear();

        var dict = new Dictionary<IChartElement, object>
          {
          { _MYchartOrderElement, _order },
          { _MYchartTradeElement, _trade },
          { _candlesElem, _candle },
          };
        Chart.Draw(_candle.OpenTime, dict);
    }

в итоге отрисовываются сделки, ордеров нет!

и остается в силе очень важный вопрос - можно ли сделать подписи к стрелочкам? пока что нашел IsLegend = true, но как изменить хинт не знаю поможет кто, нет?

Vitaly48
Vitaly48 作者

Так, поправка, ордера рисует, НО, рисует их почему то стрелочками? а не горизонтальными линиями как в Квике! Вопрос, это почему так? и вообще изменить вид этих стрелочек как то можно? и остается последний нерешенный вопрос, можно ли отрисовать свои комментарии рядом со стрелочками?

Иван З.
Иван З.

Вам наверное в этот раздел надо. http://stocksharp.com/forum/tags/Алготрейдинг/ Там много чего есть. И вопрос там задавайте, если ответят, как потом искать? Как я понял можно сделать все, что есть здесь http://www.scichart.com/features и в S#Studio. Но надо уметь. Покрутите S#Studio как там сделано, есть же исходники. Вид стрелок поменять можно, а вот над горизонтальными линиями, да еще как в Квике, придется попотеть. Есть рабочие примеры от S#, допиливайте их.

Vitaly48
Vitaly48 作者

да, раздел я наверно попутал, ну да результат, я думаю, был бы тот же... сами видите общение тут по большей части происходит с пустотой )

Покрутите S#Studio как там сделано, есть же исходники. исходников студио я не видел, ссылку можно?

Есть рабочие примеры от S#, допиливайте их. рабочих примеров вывода графиков нет ни одного кроме простейшего вывода свечек, если у Вас что то интересное есть, может поделитесь, можете пульнуть на vint48@bk.ru был бы премного благодарен!

Vitaly48
Vitaly48 作者

в этих примерах очень мало нужной инфы, SampleCandles? с него и начинал, а больше ничего интересного не нашел за студио - спасибо! еще не видел, щас начну ковырять ;)

rtDen
rtDen

Помню, что в примере Testing/SimpleHistoryTesting стрелочки на графике рисовались. Посмотрите его код

Vitaly48
Vitaly48 作者

rtDen: Помню, что в примере Testing/SimpleHistoryTesting стрелочки на графике рисовались. Посмотрите его код

посмотрю, спасибо!

vil
vil

Например так можно сделать. В стратегии, когда переопределяем метод OnStarted


protected override void OnStarted()
        {
            InitChart();
            InitIndicator();
            RunProcessGetCandles();

            this
                .WhenNewMyTrades()
                .Do(ShowTrade)
                .Apply(this);

            this
                .WhenOrderRegistered()
                .Do(ShowMyOrder)
                .Apply(this);
           
            base.OnStarted();
        }

Создаем метод для заявок


private void ShowMyOrder(Order order)
        {
            MainWindow.Instance.GuiAsync(() => MainWindow.Instance.CandleChart.Draw(order.Time, new Dictionary<IChartElement, object>
                {
                    {_chartOrderElement, order}, // вывод заявок
                }));
        }

И такой же для сделок


private void ShowTrade(IEnumerable<MyTrade> mytrades)
        {
            MainWindow.Instance.GuiAsync(() =>
            {
                mytrades.ForEach(t => MainWindow.Instance.CandleChart.Draw(t.Trade.Time, new Dictionary<IChartElement, object>
                {
                    {_chartTradeElement, t}, // вывод сделок
                }));
            });
        }

Подробно не разбираю, но вроде понять, что к чему не сложно. По крайней мере с версией 4.3.13 этот код еще работает

Vitaly48
Vitaly48 作者

да, спасибо, только хотелось бы, что бы заявки выставлялись в виде линий, как в квике, заявки в виде стрелок не удобно, даже если выделять их разными цветами, все равно, когда много сделок, появляется абсолютно непонятная мешанина, к тому же исполненные заявки не убираюся как в квике, а остаются висеть на графике (

vil
vil

Vitaly48: да, спасибо, только хотелось бы, что бы заявки выставлялись в виде линий, как в квике, заявки в виде стрелок не удобно, даже если выделять их разными цветами, все равно, когда много сделок, появляется абсолютно непонятная мешанина, к тому же исполненные заявки не убираюся как в квике, а остаются висеть на графике ( Да стрелки в заявках это конечно как то не здорово, согласен абсолютно. Попробовал поковырять LineElement, подружить с графиком не получилось, видимо есть какой то нюансик. Вышел из положения просто создав простейший индикатор, который принимает на вход число и его потом так же выводит на график 😂, получается просто линия, которую можно использовать и для заявок и для тейка со стопами для подсветки текущего состояния. Особенно удобно, если нет терминала, например для Плазы. Это конечно ужасный костыль, но быстро сделать и работает удобно.