﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Ордера выставляются с отстванием на 3 часа</title>
  <id>~/topic/15851/ordera-vystavlyayutsya-s-otstvaniem-na-3-chasa/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-04T16:15:42Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=15851" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/56215/</id>
    <title type="text">сделки показываются во временной зоне биржи, которую вы использовали при создании инструмента Exchan...</title>
    <published>2021-05-18T12:06:48Z</published>
    <updated>2021-05-18T12:06:48Z</updated>
    <author>
      <name>Sergey Sokolov</name>
      <uri>https://stocksharp.ru/users/6014/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;сделки показываются во временной зоне биржи, которую вы использовали при создании инструмента ExchangeBoard.Cryptopia (временная зона UTC+0)
вы можете настроить ось графика чтобы она также была в этой зоне.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/56213/</id>
    <title type="text">using System; using System.Windows; using System.Windows.Media; using Ecng.Collections; using Ecng.C...</title>
    <published>2021-05-18T09:12:53Z</published>
    <updated>2021-05-18T09:12:53Z</updated>
    <author>
      <name>dimdr</name>
      <uri>https://stocksharp.ru/users/73328/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;using System;
using System.Windows;
using System.Windows.Media;&lt;/p&gt;
&lt;p&gt;using Ecng.Collections;
using Ecng.Common;&lt;/p&gt;
&lt;p&gt;using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Commissions;
using StockSharp.Algo.Indicators;
using StockSharp.Algo.Storages;
using StockSharp.Algo.Strategies;
using StockSharp.Algo.Testing;
using StockSharp.BusinessEntities;
using StockSharp.Logging;
using StockSharp.Messages;
using StockSharp.Configuration;
using StockSharp.Xaml;
using StockSharp.Xaml.Charting;
using StockSharp.Xaml.Charting.IndicatorPainters;
namespace _02_bolinger_band_strategy
{
/// &lt;summary&gt;
/// Interaction logic for MainWindow.xaml
/// &lt;/summary&gt;
public partial class MainWindow
{
private HistoryEmulationConnector _connector;
private ChartCandleElement _candleElement;
private ChartTradeElement _tradesElem;
private ChartIndicatorElement _bollingerElem;
private BollingerBands _bollingerBands;
private CandleSeries _candleSeries;
private Security _security;
private Portfolio _portfolio;
private readonly LogManager _logManager;
private Strategy _strategy;
private readonly string _pathHistory = @&amp;quot;..........\History&amp;quot;.ToFullPath();
private ChartBandElement _pnl;
private ChartBandElement _unrealizedPnL;
private ChartBandElement _commissionCurve;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    public MainWindow()
    {
        InitializeComponent();

        _logManager = new LogManager();
        _logManager.Listeners.Add(new FileLogListener(&amp;quot;log.txt&amp;quot;));
        _logManager.Listeners.Add(new GuiLogListener(Monitor));

        DatePickerBegin.SelectedDate = new DateTime(2021, 02, 09);
        DatePickerEnd.SelectedDate = new DateTime(2021, 02, 11);

        CandleSettingsEditor.Settings = new CandleSeries
        {
            CandleType = typeof(TimeFrameCandle),
            Arg = TimeSpan.FromMinutes(1),
        };
    }

	private void Start_Click(object sender, RoutedEventArgs e)
	{
		_security = new Security
		{
			Id = &amp;quot;ETHUSD_1@FINAM&amp;quot;,
			Code = &amp;quot;ETHUSD_1&amp;quot;,
			PriceStep = 0.0001m,
			Board = ExchangeBoard.Cryptopia
		};
		_portfolio = new Portfolio { Name = &amp;quot;test account&amp;quot;, BeginValue = 1 };
		var storageRegistry = new StorageRegistry
		{
			DefaultDrive = new LocalMarketDataDrive(_pathHistory),
		};

		_connector = new HistoryEmulationConnector(new[] { _security }, new[] { _portfolio })
		{
			HistoryMessageAdapter =
			{
				StorageRegistry = storageRegistry,
				StorageFormat = StorageFormats.Binary,
				StartDate = DatePickerBegin.SelectedDate.Value.ChangeKind(DateTimeKind.Utc),
				StopDate = DatePickerEnd.SelectedDate.Value.ChangeKind(DateTimeKind.Utc),
			},
			LogLevel = LogLevels.Info,
		};

		_logManager.Sources.Add(_connector);
		_candleSeries = new CandleSeries(CandleSettingsEditor.Settings.CandleType, _security,
			CandleSettingsEditor.Settings.Arg)
		{
			//BuildCandlesMode = MarketDataBuildModes.Build,
			BuildCandlesFrom2 = DataType.CandleTimeFrame,
		};

		InitChart();
		_connector.CandleSeriesProcessing += Connector_CandleSeriesProcessing;
		//-------------------------------------------------
		_connector.NewSecurity += Connector_NewSecurity;
		_connector.NewOrder += OrderGrid.Orders.Add;
		_connector.OrderRegisterFailed += OrderGrid.AddRegistrationFail;

		_bollingerBands = new BollingerBands();
		_strategy = new BoligerStrategy_001(_candleSeries)
		{
			Security = _security,
			Connector = _connector,
			Portfolio = _portfolio,
			BollingerBands = new BollingerBands()
		};

		_logManager.Sources.Add(_strategy);
		_strategy.NewMyTrade += MyTradeGrid.Trades.Add;
		_strategy.NewMyTrade += FirstStrategy_NewMyTrade;
		_strategy.PnLChanged += Strategy_PnLChanged;

		CollectionHelper.AddRange(StatisticParameterGrid.Parameters, _strategy.StatisticManager.Parameters);

		_connector.Connect();
		_connector.SendInMessage(new CommissionRuleMessage
		{
			Rule = new CommissionPerTradeRule { Value = 0.01m }
		});
	}

	private void InitChart()
	{
		//-----------------Chart--------------------------------
		Chart.ClearAreas();

		var area = new ChartArea();
		Chart.AddArea(area);

		_candleElement = new ChartCandleElement();
		Chart.AddElement(area, _candleElement);

		_bollingerElem = new ChartIndicatorElement()
		{
			IndicatorPainter = new BollingerBandsPainter()
		};
		Chart.AddElement(area, _bollingerElem);

		_tradesElem = new ChartTradeElement { FullTitle = &amp;quot;Trade&amp;quot; };
		Chart.AddElement(area, _tradesElem);

		_pnl = EquityCurveChart.CreateCurve(&amp;quot;PNL&amp;quot;, Colors.Green, ChartIndicatorDrawStyles.Area);
		_unrealizedPnL = EquityCurveChart.CreateCurve(&amp;quot;unrealizedPnL&amp;quot;, Colors.Black, ChartIndicatorDrawStyles.Line);
		_commissionCurve = EquityCurveChart.CreateCurve(&amp;quot;commissionCurve&amp;quot;, Colors.Red, ChartIndicatorDrawStyles.Line);
	}

	private void Connector_NewSecurity(Security security)
	{
		//_connector.RegisterTrades(security); // - out of date
		_connector.SubscribeTrades(security);

		_strategy.Start();
		_connector.Start();
	}

	private void Strategy_PnLChanged()
	{
		var data = new ChartDrawData();
		data.Group(_strategy.CurrentTime)
			.Add(_pnl, _strategy.PnL)
			.Add(_unrealizedPnL, _strategy.PnLManager.UnrealizedPnL ?? 0)
			.Add(_commissionCurve, _strategy.Commission ?? 0);
		EquityCurveChart.Draw(data);
	}

	private void FirstStrategy_NewMyTrade(MyTrade myTrade)
	{
		var data = new ChartDrawData();
		data.Group(myTrade.Trade.Time)
			.Add(_tradesElem, myTrade);
		Chart.Draw(data);
	}

	private void Connector_CandleSeriesProcessing(CandleSeries candleSeries, Candle candle)
	{
		if (candle.State != CandleStates.Finished) return;
		var s = _bollingerBands.Process(candle);

		var data = new ChartDrawData();
		data.Group(candle.OpenTime)
			.Add(_candleElement, candle)
			.Add(_bollingerElem, s);
		Chart.Draw(data);
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/56212/</id>
    <title type="text">можете выложить те данные которые вы используете для тестирования? </title>
    <published>2021-05-18T08:46:44Z</published>
    <updated>2021-05-18T08:46:44Z</updated>
    <author>
      <name>Sergey Sokolov</name>
      <uri>https://stocksharp.ru/users/6014/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;можете выложить те данные которые вы используете для тестирования?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/56210/</id>
    <title type="text">Добрый день Тестирую стратегию bolinger_band_strategy из 8 урока. Перед этим закачал исторические да...</title>
    <published>2021-05-17T11:32:30Z</published>
    <updated>2021-05-17T11:32:30Z</updated>
    <author>
      <name>dimdr</name>
      <uri>https://stocksharp.ru/users/73328/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;Тестирую стратегию bolinger_band_strategy из 8 урока. Перед этим закачал исторические данные с биржи бинанс. Смотрю файл csv - везде стоит +3 часа.  При выставлении ордера стратегия берет нужную свечку и выставляет ордер по цене открытия. Но на графике и в логах  ордер выставляется с отставанием на 3 часа. Как это можно поправить?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>