Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 13:08   #1
Конс
Новичок
Джуниор
 
Регистрация: 22.05.2014
Сообщений: 2
По умолчанию Как добавить новый параметр(2)?

Пожалуйста напишите дополнение к имеющемуся коду, что бы команда Cancel Pending Orders Asynchronously выполнялось учитывая не только параметр [Parameter("Seconds Timeout", DefaultValue = 30, MinValue = 1)]
public int SecondsTimeout { get; set; } но и параметр [Parameter("Pips away", DefaultValue = 15)] public int PipsAway { get; set; }.
То есть, если значение [Parameter("Pips away", DefaultValue = 15)]
public int PipsAway { get; set; } БОЛЬШЕ 18 (>18), необходимо что бы выполнялось команда Cancel Pending Orders Asynchronously.

Ниже преведен весь код бота, которого нужно дополнить.
Спасибо.
Код:
using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.Indicators;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.EEuropeStandardTime)]
    public class NewsRobot : Robot
    {
        [Parameter("News Day (1-5)", DefaultValue = 1, MinValue = 1, MaxValue = 5)]
        public int NewsDay { get; set; }

        [Parameter("News Hour", DefaultValue = 14, MinValue = 0, MaxValue = 23)]
        public int NewsHour { get; set; }

        [Parameter("News Minute", DefaultValue = 30, MinValue = 0, MaxValue = 59)]
        public int NewsMinute { get; set; }

        [Parameter("Pips away", DefaultValue = 15)]
        public int PipsAway { get; set; }

        [Parameter("Take Profit", DefaultValue = 30)]
        public int TakeProfit { get; set; }

        [Parameter("Stop Loss", DefaultValue = 8)]
        public int StopLoss { get; set; }

        [Parameter("Volume", DefaultValue = 100000, MinValue = 10000)]
        public int Volume { get; set; }

        [Parameter("Seconds Before", DefaultValue = 10, MinValue = 1)]
        public int SecondsBefore { get; set; }

        [Parameter("Seconds Timeout", DefaultValue = 30, MinValue = 1)]
        public int SecondsTimeout { get; set; }

        [Parameter("One Cancels Other")]
        public bool Oco { get; set; }

        private bool _ordersCreated;
        private const string Label = "News Robot";

        protected override void OnStart()
        {
            MarketData.GetMarketDepth(Symbol).Updated += PlaceStopOrders;
            Positions.Opened += OnPositionOpened;
        }

        protected override void OnTick()
        {
            PlaceStopOrders();
        }

        void PlaceStopOrders()
        {
            if ((int)Server.Time.DayOfWeek == NewsDay && !_ordersCreated)
            {
                var triggerTime = new DateTime(Server.Time.Year, Server.Time.Month, Server.Time.Day, NewsHour, NewsMinute, 0);

                if (Server.Time <= triggerTime && (triggerTime - Server.Time).TotalSeconds <= SecondsBefore)
                {
                    _ordersCreated = true;
                    var expirationTime = triggerTime.AddSeconds(SecondsTimeout);

                    var sellOrderTargetPrice = Symbol.Bid - PipsAway * Symbol.PipSize;
                    PlaceStopOrder(TradeType.Sell, Symbol, Volume, sellOrderTargetPrice, Label, StopLoss, TakeProfit, expirationTime);

                    var buyOrderTargetPrice = Symbol.Ask + PipsAway * Symbol.PipSize;
                    PlaceStopOrder(TradeType.Buy, Symbol, Volume, buyOrderTargetPrice, Label, StopLoss, TakeProfit, expirationTime);
                }
            }
        }

        private void OnPositionOpened(PositionOpenedEventArgs args)
        {
            var position = args.Position;
            if (position.Label == Label && position.SymbolCode == Symbol.Code)
            {
                if (Oco)
                {
                    foreach (var order in PendingOrders)
                    {
                        if (order.Label == Label && order.SymbolCode == Symbol.Code)
                        {
                            CancelPendingOrderAsync(order);
                        }
                    }
                }
                Stop();
            }
        }
    }
}

Последний раз редактировалось Stilet; 22.05.2014 в 14:50.
Конс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить новый параметр Конс C# (си шарп) 0 22.05.2014 01:34
Как добавить новый элемент в массив? Ассемблер Пиф Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.03.2013 16:51
Как в редактор кода Delphi 7 добавить новый шрифт? lexaltd Общие вопросы Delphi 13 22.06.2012 18:34
Как добавить новый язык в среду Delphi Яшар Общие вопросы Delphi 9 15.03.2011 08:50
Как выполнить поиск по XML файлу и добавить к нему новый узел в Delphi? LexaL Помощь студентам 0 24.12.2010 17:12