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

не могу нарисовать индикатор сделки и заявки на графике
Atom
11/13/2015
Vitaly48


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

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);

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

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


Tags:


Thanks:


1 2  >
Vitaly48

Avatar
Date: 11/16/2015
Reply


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

Thanks:

Vitaly48

Avatar
Date: 11/16/2015
Reply


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

private readonly List _myOrdersList = new List(); private readonly List _myTradesList = new List();

...

_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, но как изменить хинт не знаю поможет кто, нет?

Thanks:

Vitaly48

Avatar
Date: 11/16/2015
Reply


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

Thanks:

Иван З.

Avatar
Date: 11/16/2015
Reply


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

Thanks:

Vitaly48

Avatar
Date: 11/16/2015
Reply


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

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

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

Thanks:

Иван З.

Avatar
Date: 11/17/2015
Reply


Thanks:

Vitaly48

Avatar
Date: 11/17/2015
Reply


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

Thanks:

rtDen

Avatar
Date: 11/20/2015
Reply


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

Thanks:

Vitaly48

Avatar
Date: 11/20/2015
Reply


[quote=rtDen;33993]Помню, что в примере Testing/SimpleHistoryTesting стрелочки на графике рисовались. Посмотрите его код[/quote]

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

Thanks:

vil

Avatar
Date: 11/20/2015
Reply


Например так можно сделать. В стратегии, когда переопределяем метод OnStarted [code=csharp] protected override void OnStarted() { InitChart(); InitIndicator(); RunProcessGetCandles();

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

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

[/code] Создаем метод для заявок [code=csharp] private void ShowMyOrder(Order order) { MainWindow.Instance.GuiAsync(() => MainWindow.Instance.CandleChart.Draw(order.Time, new Dictionary<IChartElement, object> { {_chartOrderElement, order}, // вывод заявок })); } [/code] И такой же для сделок [code=csharp] private void ShowTrade(IEnumerable mytrades) { MainWindow.Instance.GuiAsync(() => { mytrades.ForEach(t => MainWindow.Instance.CandleChart.Draw(t.Trade.Time, new Dictionary<IChartElement, object> { {_chartTradeElement, t}, // вывод сделок })); }); } [/code] Подробно не разбираю, но вроде понять, что к чему не сложно. По крайней мере с версией 4.3.13 этот код еще работает

Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy