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


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


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

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


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


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


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

vil

Avatar
Date: 11/20/2015
Reply


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

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

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

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

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

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

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

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 этот код еще работает
Thanks:
1 2  >

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

loading
clippy