Support
|
Date: 9/18/2017
Prival:
Support:
Воспроизводится 1 и 2 ошибки - это баг.
Так в strategy.MyTrades сделки есть или нет?
Скажите описанные баги в этой ветке уже поправлены ?
Спасибо за вашу информацию. Проверьте, пожалуйста, на последних версиях.
|
|
|
|
Thanks:
|
|
|
|
|
|
Prival
|
Date: 9/21/2017
А вы что не знаете ? Исправили вы это или нет ? Баг был показан в апреле месяце, сейчас конец сентября ... пол года жду.
|
|
|
|
Thanks:
|
|
|
|
|
|
Prival
|
Date: 1/25/2018
|
|
|
|
|
Проверил на версии 4.4.4 - ошибка не исправлена.
на 800-м перевороте снова недостаточно денег на счете.
23:31:03.100| |SecurityMarketEmulator|Заявка 84322794 зарегистрирована.
23:31:03.100| |SecurityMarketEmulator|Заявка 84322794. Исполнение объема 2 по цене 130030.
23:31:03.100| |SecurityMarketEmulator|Заявка 84322794 полностью исполнена.
23:31:03.100| |SecurityMarketEmulator|Сделка 798 заявки 84322794 P=130030 V=2.
23:31:03.082| |RealTimeEmulationTrader1|Order changed: 84322794/810 RIH8@FORTS Симулятор Продажа Цена=0 Объем=2 Сост=Done Бал=0 23:31:03.082| |RealTimeEmulationTrader1|RegisterOrder: 0/ RIH8@FORTS Симулятор Покупка Цена=0 Объем=2 Сост=None Бал=0
23:31:03.082| |RealTimeEmulationTrader1|New order: 84322795/ RIH8@FORTS Симулятор Покупка Цена=0 Объем=2 Сост=Pending Бал=2 23:31:03.101| |SecurityMarketEmulator|Заявка 84322795 зарегистрирована. 23:31:03.101| |SecurityMarketEmulator|Заявка 84322795. Исполнение объема 1 по цене 130040. 23:31:03.101| |SecurityMarketEmulator|Заявка 84322795 отменяется, так как является рыночной с неисполненным объемом 1. 23:31:03.101| |SecurityMarketEmulator|Сделка 799 заявки 84322795 P=130040 V=1. 23:31:03.082| |RealTimeEmulationTrader1|Order changed: 84322795/811 RIH8@FORTS Симулятор Покупка Цена=0 Объем=2 Сост=Done Бал=1
23:31:03.082| |RealTimeEmulationTrader1|RegisterOrder: 0/ RIH8@FORTS Симулятор Покупка Цена=0 Объем=1 Сост=None Бал=0 23:31:03.082| |RealTimeEmulationTrader1|New order: 84322796/ RIH8@FORTS Симулятор Покупка Цена=0 Объем=1 Сост=Pending Бал=1
23:31:03.102| |SecurityMarketEmulator|Заявка 84322796 не зарегистрирована. Причина 'На счету Симулятор недостаточно денег для регистрации заявки 84322796. Необходимо 1016816.43, имеется 985580, заблокировано 1002079.96.'.
23:31:03.082|Error |RealTimeEmulationTrader`1|OrderRegisterFailed
84322796/ RIH8@FORTS Симулятор Покупка Цена=0 Объем=1 Сост=Failed Бал=1
System.InvalidOperationException: На счету Симулятор недостаточно денег для регистрации заявки 84322796. Необходимо 1016816.43, имеется 985580, заблокировано 1002079.96.
Скоро будет год как жду исправления...
|
|
|
|
Thanks:
|
|
|
|
|
|
Prival
|
Date: 3/7/2018
Support:
Сделайте следующую проверку с последней версией: посмотрите добавляются ли сделки в коллекцию strategy.MyTrades
Проверил. Одну ошибку так и не поправили.
Версия 4.4.5.3
order
.WhenMatched(Connector)
.Do(() =>
{
this.AddInfoLog(@"{0} Заявка {2} {3} полностью исполнена Volume={4}. Позиция {1} Price={5} TH={6}",
TimeHelper.Now.TimeOfDay, Position, order.Direction, order.Security.Code, order.Volume,
order.Price, TraderHelper.GetAveragePrice(order, Connector));
}
в лог выводиться
20:31:30.086| |S_RIH8@FORTS_Симулятор|20:31:30.1103235 Заявка Buy RIH8 полностью исполнена Volume=1. Позиция 1 <u>Price=0 TH=0</u>
Может я что то не так делаю (не понимаю). Мне нужно получить цену по которой прошла сделка. Как её получить ?
|
|
|
|
Thanks:
|
|
|
|
|
|
Константин
|
Date: 3/8/2018
Может я что то не так делаю (не понимаю). Мне нужно получить цену по которой прошла сделка. Как её получить ?
Вам наверное нужно подписаться на сделки по ордеру чтоб узнать их цену
order.WhenNewTrade
На сколько я понимаю Price = 0 может быть у ордера который исполнен по рынку.
|
|
|
|
Thanks:
|
|
|
|
|
|
Prival
|
Date: 3/8/2018
Ордер большой объем, и нужно получить среднюю цену когда он весь исполниться.
order.WhenNewTrade
пробовал, там да, цена приходит
this.AddInfoLog(@"WhenNewTrade Цена заявки ={0}, Цена сделки={0} ", trade.Order.Price, trade.Trade.Price);
а вот как её получить в order.WhenMatched
никак не пойму.
TraderHelper.GetAveragePrice(order, Connector) то что нужно, но он возвращает ноль (((
|
|
|
|
Thanks:
|
|
|
|
|
|
Константин
|
Date: 3/8/2018
А если так:
order.WhenNewTrade(Connector).Do((trade) =>
{
if (trade.Order.State == OrderStates.Done)
{
//Заявка исполнена полностью
var averagePrice = order.GetAveragePrice(Connector);
}
else
{
//Заявка исполнена не полностью
return;
}
})
.Apply(this);
|
|
|
|
Thanks:
|
|
|
|
|
|
Prival
|
Date: 3/16/2018
|
|
|
|
|
Support:
Prival:
Support:
Воспроизводится 1 и 2 ошибки - это баг.
Так в strategy.MyTrades сделки есть или нет?
Скажите описанные баги в этой ветке уже поправлены ?
Спасибо за вашу информацию. Проверьте, пожалуйста, на последних версиях.
1 ошибка все таки осталась или я неправильно понимаю PnL
Вот лог
07:41:13.611| |S_RIM8@FORTS_Симулятор|Стратегия Запущена. [0,-1]. Позиция 0.
07:41:13.611| |S_RIM8@FORTS_Симулятор|07:41:14.6011093 Strategy OnStarted: S_RIM8@FORTS_Симулятор BeginValue=1000000 CurrentValue=1000000 Position=0
10:07:32.771| |S_RIM8@FORTS_Симулятор|=> ENTER SHORT.
10:07:32.771| |S_RIM8@FORTS_Симулятор|Регистрация новой Market (0x2B3FFA1) заявки на Sell с ценой 0 и объемом 1.
10:07:32.823| |S_RIM8@FORTS_Симулятор|Новая позиция: (S#:RIM8@FORTS, Native:,Type:Future, Симулятор)=-1.
10:07:32.823| |S_RIM8@FORTS_Симулятор|Заявка 27662344 (0x2B3FFA1) больше не активна.
10:07:32.823| |S_RIM8@FORTS_Симулятор|Новая Sell сделка 1 по цене 125890 на 1 заявки 27662344.
10:07:32.823| |S_RIM8@FORTS_Симулятор|*** Заявка исполнена полностью Цена заявки =0, Цена сделки=125890 AveragePrice=125890 TP=125790 SL= 125990 ***
10:07:32.823| |S_RIM8@FORTS_Симулятор|Position = -1 Current P/L = 0
10:23:18.514| |S_RIM8@FORTS_Симулятор|<= EXIT SHORT.
10:23:18.514| |S_RIM8@FORTS_Симулятор|Регистрация новой Market (0x1C5627E) заявки на Buy с ценой 0 и объемом 1.
10:23:18.514| |S_RIM8@FORTS_Симулятор|Новая позиция: (S#:RIM8@FORTS, Native:,Type:Future, Симулятор)=0.
10:23:18.514| |S_RIM8@FORTS_Симулятор|Заявка 27662345 (0x1C5627E) больше не активна.
10:23:18.514| |S_RIM8@FORTS_Симулятор|Новая Buy сделка 2 по цене 125720 на 1 заявки 27662345.
10:23:18.514| |S_RIM8@FORTS_Симулятор|*** Заявка исполнена полностью Цена заявки =0, Цена сделки=125720 AveragePrice=125720 TP=125790 SL= 125990 ***
10:23:18.514| |S_RIM8@FORTS_Симулятор|Position = 0 Current P/L = 194,539840
Не могу понять почему PnL= 194,539840
Это сделка фьючерс RIM8 125890-125720 должно быть.... =170
this.AddInfoLog("Position = {0} Current P/L = {1} ", Position, this.PnLManager.PnL);
Вопрос PnL он в пунктах выводиться или в деньгах ? Если в деньгах, то как его привести к пунктам ?
Заранее спасибо. Версия 4.4.5.3
|
|
|
|
Thanks:
|
|
|
|
|
|
Prival
|
Date: 4/21/2018
|
|
|
|
|
Support:
Prival:
Support:
Воспроизводится 1 и 2 ошибки - это баг.
Так в strategy.MyTrades сделки есть или нет?
Скажите описанные баги в этой ветке уже поправлены ?
Спасибо за вашу информацию. Проверьте, пожалуйста, на последних версиях.
Проверил. К сожалению режим совсем поломался (((
Quik 7.16.3.14
Версия 4.4.6.1
В режиме RealQuikConnector(); Все работает, все приходит
В режиме EmulationQuikConnector() и EmulationQuikConnector2(); событие ValuesChanged срабатывает, но OpenInterest BidsCount ... не приходят ((
Версия 4.4.5.4
В режиме RealQuikConnector(); Все работает, все приходит
В режиме EmulationQuikConnector() и EmulationQuikConnector2(); событие ValuesChanged срабатывает, но OpenInterest BidsCount ... не приходят ((
Версия 4.4.5.3
Во всех режимах, все приходит.
Получен портфель - Симулятор
SBER@TQBR - зарегестрирован, все ок
RIM8@FORTS - зарегестрирован, все ок
RIM8@FORTS BidsCount=798
RIM8@FORTS OpenInterest=510700
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Security;
using System.Windows;
using Ecng.Common;
using MoreLinq;
using StockSharp.Algo;
using StockSharp.Algo.Testing;
using StockSharp.BusinessEntities;
using StockSharp.Logging;
using StockSharp.Messages;
using StockSharp.Quik;
using StockSharp.Quik.Lua;
namespace Test2
{
public partial class MainWindow : Window
{
private Connector _trader;
public MainWindow()
{
InitializeComponent();
}
private QuikTrader RealQuikConnector()
{
var qtrader = new QuikTrader
{
LuaLogin = "quik",
LuaFixServerAddress = QuikTrader.DefaultLuaAddress,
LuaPassword = "quik".To<SecureString>()
};
return qtrader;
}
private RealTimeEmulationTrader<IMessageAdapter> EmulationQuikConnector()
{
var tMessageAdapter = new QuikTrader
{
LuaLogin = "quik",
LuaFixServerAddress = QuikTrader.DefaultLuaAddress, //"127.0.0.1:5001".To<EndPoint>(),
LuaPassword = "quik".To<SecureString>(),
LogLevel = LogLevels.Debug,
UpdateSecurityByLevel1 = true
}.MarketDataAdapter;
var portfolio = new Portfolio {Name = "Симулятор", BeginValue = 100000};
var etrader = new RealTimeEmulationTrader<IMessageAdapter>(tMessageAdapter, portfolio);
return etrader;
}
private RealTimeEmulationTrader<IMessageAdapter> EmulationQuikConnector2()
{
var quikMd = new LuaFixMarketDataMessageAdapter(new MillisecondIncrementalIdGenerator())
{
Login = "quik",
Password = "quik".To<SecureString>(),
Address = QuikTrader.DefaultLuaAddress,
TargetCompId = "StockSharpMD",
SenderCompId = "quik",
RequestAllSecurities = true
};
var portfolio = new Portfolio {Name = "Симулятор", BeginValue = 100000};
var etrader = new RealTimeEmulationTrader<IMessageAdapter>(quikMd, portfolio);
return etrader;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (_trader == null)
{
//_trader = RealQuikConnector();
_trader = EmulationQuikConnector2();
_trader.NewSecurities += securities =>
{
securities.ForEach(s =>
{
try
{
if (s.Id == "SBER@TQBR" || s.Id == "SBER@QJSIM") //
{
_trader.RegisterMarketDepth(s);
_trader.RegisterSecurity(s);
_trader.RegisterTrades(s);
Console.WriteLine(@"{0} - зарегестрирован, все ок", s);
}
if (s.Id == "RIM8@FORTS") //
{
_trader.RegisterMarketDepth(s);
_trader.RegisterSecurity(s);
_trader.RegisterTrades(s);
Console.WriteLine(@"{0} - зарегестрирован, все ок", s);
}
}
catch (Exception exc)
{
Console.WriteLine(exc.Message, @" Ошибка регистрации ", s);
throw;
}
});
};
_trader.NewPortfolio += portfolio => { Console.WriteLine(@"Получен портфель - {0}", portfolio.Name); };
//_trader.NewTrades += Trader_NewTrades;
//_trader.SecuritiesChanged += Trader_SecuritiesChanged;
_trader.ValuesChanged += _trader_ValuesChanged;
}
_trader.Connect();
}
private void _trader_ValuesChanged(Security security, IEnumerable<KeyValuePair<Level1Fields, object>> value,
DateTimeOffset serverTime, DateTimeOffset localTime)
{
if (security == null || value == null) return;
if (security.Code == "SBER" || security.Code == "RIM8")
foreach (var keyValuePair in value)
if (keyValuePair.Key == Level1Fields.OpenInterest || keyValuePair.Key == Level1Fields.BidsCount)
Console.WriteLine(@"{0} {1}={2}", security, keyValuePair.Key, keyValuePair.Value);
}
private void Trader_SecuritiesChanged(IEnumerable<Security> securities)
{
foreach (var security in securities)
{
Console.Write(@"Событие SecuritiesChanged");
if (security.LastTrade != null)
Console.WriteLine(@" Name={0} LastTrade.Price={1} AsksCount={2}", security.Id, security.LastTrade.Price, security.AsksCount);
else
Console.WriteLine(@" LastTrade.Price=null");
}
}
private void Trader_NewTrades(IEnumerable<Trade> trades)
{
foreach (var trade in trades) Debug.Print(trade.ToString());
}
}
}
Пожалуйста сделайте режим работоспособным. И курсы покупал и платная тех поддержка, а за эти годы так рабочего варианта и не смог получить (увидеть). Обидно очень ....
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 4/21/2018
Prival:
и платная тех поддержка
У вас нет активной подписки на техническую поддержку. По нашей информации она истекла более полу года назад. Наши специалисты не видят ваши сообщения. Приобретите подписку и тогда мы сможем вам помочь - http://stocksharp.ru/support/ Или вы можете найти программиста на S# среди зарегистрированных пользователей и на коммерческой основе помочь вам сделать желаемый результат.
|
|
|
|
Thanks:
|
|
|
|
|