Wealth-Lab Russian Traders

Если есть реальная потребность выставлять и снимать заявки из собственного кода, то можно использовать методы из нашего адаптера.

Выставление заявок

Выставить заявку можно в 2 этапа.

  1. Создать объект Alert с нужными параметрами.

  2. Вызвать метод для передачи этого алерта в систему исполнения.

Ниже описаны методы, которые следует использовать генерации алерта и его выполнения.

Описание вспомогательных методов Copy imageКопировать
namespace WLRT.WLD
{
    /// <summary>
    /// Вспомогательный класс для работы с заявками
    /// </summary>
    public static class OrderHelper
    {
        /// <summary>
        /// Метод генерации алерта.
        /// </summary>
        /// <param name="date">дата</param>
        /// <param name="riskStopLevel">рекомендуется 0</param>
        /// <param name="autoProfitLevel">рекомендуется 0</param>
        /// <param name="account">торговый счет</param>
        /// <param name="bars">объект Bars</param>
        /// <param name="strategy">объект стратегии</param>
        /// <param name="tradeType">тип сделки. WealthLab.TradeType.Buy, WealthLab.TradeType.Sell, WealthLab.TradeType.Short или WealthLab.TradeType.Cover</param>
        /// <param name="orderType">тип заявки. рекомендуется WealthLab.OrderType.Limit</param>
        /// <param name="shares">количество</param>
        /// <param name="signal">имя сигнала(не сохраняется в истории сделок)</param>
        /// <param name="price">цена</param>
        /// <param name="position">позиция, если алерт на закрытие позиции</param>
        /// <returns>объект алерт</returns>
        public static Alert CreateAlert(System.DateTime date, double riskStopLevel, double autoProfitLevel, string account, WealthLab.Bars bars,
                                        WealthLab.Strategy strategy, WealthLab.TradeType tradeType, WealthLab.OrderType orderType, double shares, string signal,
                                        double price, WealthLab.Position position);
        /// <summary>
        /// Выставление заявок
        /// </summary>
        /// <param name="alert">Алерт</param>
        /// <param name="timeframe">таймфрейм в секундах</param>
        /// <param name="strategy">стратегия, наследник WLRT.WLD.Common.Strategy</param>
        /// <returns></returns>
        public static WealthLab.Order PlaceOrder(WealthLab.Alert alert, int timeframe, Common.Strategy strategy);
    }
}

Ниже приведен пример, который выставит лимит-заявку на покупку бумаги "SPBFUT.RIM4" по цене 100000 и объемом 1. Пока для выставления заявки требуется передать ссылку на объект стратегии, отнаследованный от WLRT.WLD.Common.Strategy.

Пример выставления заявки Copy imageКопировать
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;

namespace WealthLab.Strategies
{
    public class MyStrategy : WLRT.LiveTrading.WealthScript
    {
        private WealthLab.Order _order;

        protected override void Execute()
        {
            if(_order==null)
            {
                var alert = OrderHelper.CreateAlert(System.DateTime.Now, //время заявки
                                                                                        0, 0,
                                                                                        "PaperAccountTest",//счет
                                                                                        this.Bars,//используем текущие бары бумага указывается в поле Symbol этого объекта
                                                                                        this.Strategy, //объект WealthLab.Strategy
                                                                                        WealthLab.TradeType.Buy,//заявка на покупку
                                                                                        WealthLab.OrderType.Limit, //заявка лимитированная
                                                                                        1, //объем 1
                                                                                        "comment", //комментарий
                                                                                        100000, //цена
                                                                                        null);//позиция
                _order = OrderHelper.PlaceOrder(alert, 60, this);
            }
        }
    }
}

Если все поля заполнены верно - заявка является активной, ее следует отменить по достижении соответствующих условий.

Снятие заявок

Чтобы отменить заявку, нужно иметь ссылку на этот объект. Ссылку рекомендуется сохранить при выставлении заявки, но можно попробовать ее найти в списке заявок WealthLabPro.MainModule.Instance.TradeManager.Orders.

Пример снятия заявки Copy imageКопировать
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;

namespace WealthLab.Strategies
{
    public class MyStrategy : WLRT.LiveTrading.WealthScript
    {
        private WealthLab.Order _order;

        protected override void Execute()
        {
            if(_order == null)
            {
                PrintDebug("Nothing to cancel");
                return;
            }
            WealthLabPro.MainModule.Instance.TradeManager.CancelOrder(_order);
        }
    }
}