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


не могу нарисовать индикатор сделки и заявки на графике
Atom Ответить
13.11.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);

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

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

Теги:


Спасибо:




12 Ответов
Vitaly48

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


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

Автор топика
Спасибо:

Vitaly48

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


Фух, после упорного перелапачивания форума, доков и примеров пришел к тому, что надо заводить отдельную переменную на ордера и сделки, а рисовать на графике через 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

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


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

Иван З.

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


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


Спасибо:

Vitaly48

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


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

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

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

Иван З.

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


Спасибо:

Vitaly48

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


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

rtDen

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


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

Vitaly48

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


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


посмотрю, спасибо!
Автор топика
Спасибо:

vil

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


Например так можно сделать. В стратегии, когда переопределяем метод 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

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


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

vil

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


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

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

Спасибо: Mikhail Sukhov Vitaly48


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

loading
clippy