﻿<?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">Параметры текущей свечи</title>
  <id>~/topic/3432/parametry-tekushshei-svechi/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-10T17:23:17Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=3432" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/24331/</id>
    <title type="text">Здравствуйте! По всей видимости у вас нет понимания как это все работает. protected override void On...</title>
    <published>2013-03-02T11:57:06Z</published>
    <updated>2016-08-16T00:12:09Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Здравствуйте! По всей видимости у вас нет понимания как это все работает. &lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
        protected override void OnStarted()
        {
            //LINQ-запрос - когда свеча сформирована, то запустить метод обработки свечи ProcessCandle
            _candleSeries
                .WhenCandlesFinished()
                .Do(ProcessCandle)
                .Apply(this);

            base.OnStarted();
        }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Здесь вы воспользовались правилом &amp;quot;MarketRuleHelper.WhenFinished - правило на событие окончания свечки.&amp;quot; То есть в ProcessCandle будут приходить только оконченные свечи. На ряду с этим правилом, есть еще следующие,&lt;br /&gt;&lt;br /&gt;MarketRuleHelper.WhenCandlesStarted - правило на событие появления новых свечек.&lt;br /&gt;MarketRuleHelper.WhenCandlesChanged - правило на событие изменения свечек.  &lt;br /&gt;MarketRuleHelper.WhenChanged - правило на событие изменения свечки.&lt;br /&gt;и другие, их можно посмотреть здесь &lt;a href="http://www.stocksharp.com/doc/?topic=html/97cf7a9c-8b3d-4791-9306-275d55d4cf36.htm " title="http://www.stocksharp.com/doc/?topic=html/97cf7a9c-8b3d-4791-9306-275d55d4cf36.htm "&gt;http://www.stocksharp.co...1-9306-275d55d4cf36.htm &lt;/a&gt;во вкладке Событийная модель=&amp;gt;Правило. &lt;br /&gt;Попробуйте другие правила, прочитайте как ими пользоваться.&lt;br /&gt;&lt;br /&gt;можно попробовать еще следующий способ, от сюда &lt;a href="http://www.stocksharp.com/doc/?topic=html/f71010d3-135c-4fe9-a573-abf0245b3f5d.htm
" title="http://www.stocksharp.com/doc/?topic=html/f71010d3-135c-4fe9-a573-abf0245b3f5d.htm
"&gt;http://www.stocksharp.co...9-a573-abf0245b3f5d.htm
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
_candleManager.Processing += ProcessCandle;// я бы воспользовался этим способом&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Когда разберетесь со способом передачи свечей в ProcessCandle. Так как ProcessCandle принимает только свечи, создайте буфер для хранения оконченных свечек&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
List&amp;lt;Candle&amp;gt; _buffer = new List&amp;lt;Candle&amp;gt;();&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;, добавляйте в буфер в методе ProcessCandle каждую оконченную свечку&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
 if (candle.State == CandleStates.Finished)// проверка окончена свеча или нет
              _buffer.Insert(0, candle);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;если таким образом добавлять свечи то _buffer[0] это будет последняя свеча, _buffer[1] предпоследняя и т.д.&lt;br /&gt;Когда буфер станет большим, допустим вам больше 10 свечей не надо. то удаляем последнюю.&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
if (_buffer.Count &amp;gt; 10) _buffer.RemoveAt(10);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; &lt;br /&gt;Вообще это стандартная система для индикаторов, достаточно посмотреть здесь &lt;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAbncQVTu8T5yVB2LlB47S-5KHyW8ZN6xcH4iJyKFKwUQgjwasowjZHTe_leX0HSMFrsQlNB3dBUr494VZjmWzvK3iBS_KdeG5y-gJEbO-e_g" title="http://stocksharp.codeplex.com/SourceControl/changeset/view/23281#166110, "&gt;http://stocksharp.codepl...eset/view/23281#166110, &lt;/a&gt;да по другим индикаторам.&lt;br /&gt;Теперь у вас в ProcessCandle есть текущая свеча candle, и список предыдущих свечей _buffer для обработки. Делайте с ними что душе угодно.&lt;br /&gt;&lt;br /&gt;candle.LowPrice; // минимальная цена текущей свечи&lt;br /&gt;_buffer[0].HighPrice; // максимальная цена предыдущей свечи и т.д.&lt;br /&gt;Все свойства свечи можно посмотреть здесь &lt;a href="http://www.stocksharp.com/doc/?topic=html/AllMembers_T_StockSharp_Algo_Candles_Candle.htm
" title="http://www.stocksharp.com/doc/?topic=html/AllMembers_T_StockSharp_Algo_Candles_Candle.htm
"&gt;http://www.stocksharp.co...Algo_Candles_Candle.htm
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Надеюсь немного прояснил для вас ситуацию. Советую вам не пропускать ссылки которые я вам дал. Документация достаточно хорошо сделана и сильно помогает. Есть еще поиск по форуму тоже хорошо помогает. Даже годичной давности сообщения могут помочь или показать как можно сделать, например &lt;a href="http://www.stocksharp.com/forum/357/Sozdaniie-robotov-s-pomoshch-iu-S---Chast--3--Riealizatsiia-intierfieisov/. " title="http://www.stocksharp.com/forum/357/Sozdaniie-robotov-s-pomoshch-iu-S---Chast--3--Riealizatsiia-intierfieisov/. "&gt;http://www.stocksharp.co...zatsiia-intierfieisov/. &lt;/a&gt;Есть еще обучение, мне лично помогло.(я не агитирую, сугубо личное мнение)&lt;br /&gt;&lt;br /&gt;p.s. Здесь скорее сообщество трейдеров чем программистов, и помогать вам особо ни кто не будет, особенно писать за вас робота. По этому надеюсь когда вы станете получать стабильную прибыль с торговли поделитесь со мной доходом![lol] &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24405/</id>
    <title type="text">вместо public override decimal OnProcess(IIndicatorValue input) напишите protected override decimal ...</title>
    <published>2013-03-05T14:15:57Z</published>
    <updated>2013-03-05T14:15:57Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">вместо &lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
public override decimal OnProcess(IIndicatorValue input)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;напишите &lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
protected override decimal OnProcess(IIndicatorValue input)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24401/</id>
    <title type="text">http://C:\Users\Спасенный_4ерт\Desktop\Ошибка.jpg С предыдущей проблемой всё разрешилось) спасибо! Н...</title>
    <published>2013-03-05T13:49:04Z</published>
    <updated>2013-03-05T13:49:04Z</updated>
    <author>
      <name>Shaly</name>
      <uri>https://stocksharp.ru/users/26891/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;a href='http://C:\Users\Спасенный_4ерт\Desktop\Ошибка.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="http://C:\Users\Спасенный_4ерт\Desktop\Ошибка.jpg" style='max-width: 600px;' alt=""/&gt;&lt;/a&gt;&lt;br /&gt;С предыдущей проблемой всё разрешилось) спасибо! Не хватало ссылки Ecng.Serialization. Но вот появилась другая проблема. Подскажите, как устранить?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24397/</id>
    <title type="text">Выложите скрин с ошибкой. Возможно прояснит ситуацию. Плюс скрин, что добавлено в рефы.</title>
    <published>2013-03-05T12:59:21Z</published>
    <updated>2013-03-05T12:59:21Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Выложите скрин с ошибкой. Возможно прояснит ситуацию. Плюс скрин, что добавлено в рефы.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24396/</id>
    <title type="text">Данная dll уже давно добавлена в проект и есть ссылка на StockSharp.Algo.Indicators(прописана), но о...</title>
    <published>2013-03-05T12:54:56Z</published>
    <updated>2013-03-05T12:54:56Z</updated>
    <author>
      <name>Shaly</name>
      <uri>https://stocksharp.ru/users/26891/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Данная dll уже давно добавлена в проект и есть ссылка на StockSharp.Algo.Indicators(прописана), но ошибка, что не хватает ссылки, не исчезает никак. </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24391/</id>
    <title type="text">VassilSanych не пугайте девушку обилием терминологии. Классы S# которые реализуют интерфейс IPersist...</title>
    <published>2013-03-05T11:45:48Z</published>
    <updated>2013-03-05T11:45:48Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;b&gt;VassilSanych&lt;/b&gt; не пугайте девушку обилием терминологии.[smile]&lt;br /&gt;&lt;br /&gt;Классы &lt;b&gt;S#&lt;/b&gt; которые реализуют интерфейс &lt;b&gt;IPersistable&lt;/b&gt; это не тот интерфейс который находится в &lt;b&gt;Microsoft.VisualStudio.QualityTools.Common.dll&lt;/b&gt;. &lt;br /&gt;Это интерфейс &lt;b&gt;S#&lt;/b&gt;, находится в &lt;b&gt;Ecng.Serialization.dll&lt;/b&gt;, поэтому ничего доп. скачивать и устанавливать не надо.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Shaly&lt;/b&gt;, добавьте в References проекта данную dll, должно все заработать.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24380/</id>
    <title type="text">Если отсутствуют какие-то библиотеки, попробуйте установить триальную версию VS и скопировать нужные...</title>
    <published>2013-03-05T09:16:30Z</published>
    <updated>2013-03-05T09:28:18Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Если отсутствуют какие-то библиотеки, попробуйте установить триальную версию VS и скопировать нужные библиотеки из её папок (врядли это нарушает лицензию)&lt;br /&gt;Можно ещё, наверное, установить SDK. Но я не знаю в какой именно SDK входят &amp;quot;Testing Tools&amp;quot;, если входят вообще куда-то.&lt;br /&gt;upd&lt;br /&gt;попробуйте &lt;br /&gt;&lt;a target="_blank" href="http://www.microsoft.com/en-us/download/details.aspx?id=30668" title="http://www.microsoft.com/en-us/download/details.aspx?id=30668"&gt;Visual Studio SDK&lt;/a&gt;&lt;br /&gt;или ещё (что врядли)&lt;br /&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx" title="http://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx"&gt;Windows SDK&lt;/a&gt;&lt;br /&gt;(не обращайте внимание на &amp;quot;windows 8&amp;quot; сейчас весь SDK называется именно так)&lt;br /&gt;Только осторожно: в последний раз, когда я качал Platform SDK (давно это было), он у меня занял около 7Гб.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24379/</id>
    <title type="text">IPersistable наследуют, кстати, ещё и Strategy и ITrader до кучи к другим классам.</title>
    <published>2013-03-05T08:56:48Z</published>
    <updated>2013-03-05T08:56:48Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">IPersistable наследуют, кстати, ещё и Strategy и ITrader до кучи к другим классам.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24378/</id>
    <title type="text">Просмотрев форум,и изучив индикаторы с codeplex я обнаружила что доступ к индикаторам StockSharp не ...</title>
    <published>2013-03-05T08:46:54Z</published>
    <updated>2013-03-05T08:46:54Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Shaly &lt;a href="https://stocksharp.ru/posts/m/24377/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Просмотрев форум,и изучив индикаторы с codeplex я обнаружила что доступ к индикаторам StockSharp не доступен обладателям VS express по причине не доступности интерфейса IPersistable или я ошибаюсь?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Каким образом VS express может накладывать ограничения на .net?&lt;br /&gt;В VS express отсутствуют только некоторые средства разработки, которые есть в платных версиях. Сама же .net и её API доступны вне зависимости от инструментов. Можно в notepad писать и из командной строки компилировать.  &lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24377/</id>
    <title type="text">Просмотрев форум,и изучив индикаторы с codeplex я обнаружила что доступ к индикаторам StockSharp не ...</title>
    <published>2013-03-05T07:27:59Z</published>
    <updated>2013-03-05T07:27:59Z</updated>
    <author>
      <name>Shaly</name>
      <uri>https://stocksharp.ru/users/26891/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Просмотрев форум,и изучив индикаторы с codeplex я обнаружила что доступ к индикаторам StockSharp не доступен обладателям VS express по причине не доступности интерфейса IPersistable или я ошибаюсь?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24327/</id>
    <title type="text">Для расчета индикатора требуются минимальные и максимальные цены текущего и предыдущего баров, незав...</title>
    <published>2013-03-02T10:01:41Z</published>
    <updated>2013-03-02T10:01:41Z</updated>
    <author>
      <name>Shaly</name>
      <uri>https://stocksharp.ru/users/26891/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Для расчета индикатора требуются минимальные и максимальные цены текущего и предыдущего баров, независимо, сформировался последний бар или нет. Вот этот код взят за основу, который я пытаюсь изменить, чтобы рассчитать индикатор.&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Ecng.Collections;
using Ecng.Xaml;

using StockSharp.Algo;
using StockSharp.Algo.Strategies;
using StockSharp.Algo.Candles;
using StockSharp.Quik;
using StockSharp.BusinessEntities;

/*
 * Стратегия на основе пробоя N внутридневных свечей для Si
*/

namespace Robot
{
    class RobotStrategy: Strategy
    {

        private CandleManager _candleManager;     //Менеджер свечей
        private CandleSeries _candleSeries;     //Свечи
        private TimeSpan _timeFrame;            //ТаймФрейм

        decimal stopLossPersent = 0.1m;     //Стоп-лосс в процентах

        bool isSendOrder = false;

        decimal _slippage;


        private MarketQuotingStrategy _quoteStrategy;    //стратегия котирование


        /// &amp;lt;summary&amp;gt;
        /// Конструктор
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;candleSeries&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;timeFrame&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        public RobotStrategy(CandleManager candleManager, CandleSeries candleSeries, TimeSpan timeFrame, decimal slippage)
        {
            _candleManager = candleManager;
            _candleSeries = candleSeries;
            _timeFrame = timeFrame;
            _slippage = slippage;
        }



        /// &amp;lt;summary&amp;gt;
        /// Событие старта стратегии
        /// &amp;lt;/summary&amp;gt;
        protected override void OnStarted()
        {
            //LINQ-запрос - когда свеча сформирована, то запустить метод обработки свечи ProcessCandle
            _candleSeries
                .WhenCandlesFinished()
                .Do(ProcessCandle)
                .Apply(this);

            base.OnStarted();
        }



        /// &amp;lt;summary&amp;gt;
        /// Событие обработки свечей (как новых свечей так и пришедших с начала торгового дня) 
        /// Свечи поступают согласно заданному таймфрейму
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;candle&amp;quot;&amp;gt;последняя сформированная полностью свеча&amp;lt;/param&amp;gt;
        private void ProcessCandle(Candle candle)
        {
            // если наша стратегия в процессе остановки
            if (ProcessState == ProcessStates.Stopping)
            {
                CancelActiveOrders();   //отменяем активные заявки
                return;
            }


            //Если время 23,30 - то закрываем все сделки, останавливаем стратегию, выключаем робота
            if (candle.CloseTime.Hour == 23 &amp;amp;&amp;amp; candle.CloseTime.Minute &amp;gt;= 30)
            {
                if (GetCurrentPosition() != 0) closeAllPosition();
                stopRobot();
                return;
            }


            //Разрешаем открывать позиции только в определенное время
            if ( canTradeByTime(candle.CloseTime.Hour, candle.CloseTime.Minute) )
            {

                //Проверяем, есть ли открытые позиции по нашему инструменту
                if (GetCurrentPosition() != 0)
                {
                    Console.WriteLine(&amp;quot;Has open pos - &amp;quot; + GetCurrentPosition());
                    //isSendOrder = false;
                }
                else
                {
                    //Console.WriteLine(&amp;quot;No pos &amp;quot; + candle.CloseTime.Hour + &amp;quot;:&amp;quot; + candle.CloseTime.Minute);

                    //Определяем время последней сформированной свечи
                    DateTime currentCandleTime = (candle.OpenTime + _timeFrame);

                    //Если пришедшая свеча - последняя полностью сформированная (актуальная к текущему времени)
                    if (currentCandleTime.Hour == _candleManager.CurrentTime.Hour &amp;amp;&amp;amp; currentCandleTime.Minute == _candleManager.CurrentTime.Minute / (int)_timeFrame.TotalMinutes * (int)_timeFrame.TotalMinutes)
                    {

                        int candlesCount = _candleSeries.GetCandleCount();

                        //Находим High/Low среди всех предыдущих свечей в текущем дне
                        decimal _high = decimal.MinValue;
                        decimal _low = decimal.MaxValue;

                        for (int i = 1; i &amp;lt; candlesCount; i++)
                        {
                            var prevCandle = _candleSeries.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(i);
                            _high = Math.Max(_high, Math.Max(prevCandle.ClosePrice, prevCandle.OpenPrice));
                            _low = Math.Min(_low, Math.Min(prevCandle.ClosePrice, prevCandle.OpenPrice));
                        }

                        Console.WriteLine(&amp;quot;High = &amp;quot; + _high + &amp;quot;; Low = &amp;quot; + _low);

                        //Создаем дочернюю стратегию - котирование
                        _quoteStrategy = null;


                        if (candle.ClosePrice &amp;gt; _high)  //Покупаем по рыночной цене 
                        {
                            Console.WriteLine(&amp;quot; &amp;gt;&amp;gt;&amp;gt;&amp;gt; BUY&amp;quot;);

                            //Формируем заявку на покупку через котирование
                            var direction = OrderDirections.Buy;
                            _quoteStrategy = new MarketQuotingStrategy(direction, Volume);
                            _quoteStrategy.PriceOffset = _slippage;  //Учитываем проскальзывание
                        }
                        else if (candle.ClosePrice &amp;lt; _low)  //Продаем
                        {
                            Console.WriteLine(&amp;quot; &amp;gt;&amp;gt;&amp;gt;&amp;gt; SHORT&amp;quot;);

                            //Формируем заявку на продажу через котирование
                            var direction = OrderDirections.Sell;
                            _quoteStrategy = new MarketQuotingStrategy(direction, Volume);
                            _quoteStrategy.PriceOffset = _slippage;  //Учитываем проскальзывание
                        }


                        //Если сделка произведена
                        if (_quoteStrategy != null)
                        {
                            _quoteStrategy.WaitAllTrades = true;

                            // регистрируем правило, отслеживающее появление новых сделок по заявке
                            _quoteStrategy
                                .WhenNewMyTrades()
                                .Do(OnNewOrderTrades)
                                .Apply(this);

                            ChildStrategies.Add(_quoteStrategy);

                            Console.WriteLine(&amp;quot;Make deal&amp;quot;);
                        }


                    }

                }   //End else getPos

            }
        }




        /// &amp;lt;summary&amp;gt;
        /// Разрешено ли торговать
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;hour&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;minute&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        private bool canTradeByTime(int hour, int minute)
        {
            //return true;    //!!!Del this

            if (hour &amp;gt;= 11 &amp;amp;&amp;amp; hour &amp;lt;= 18)
                return true;
            else
                return false;
        }




        /// &amp;lt;summary&amp;gt;
        /// Событие прихода новой свечи
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;trades&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        private void OnNewOrderTrades(IEnumerable&amp;lt;MyTrade&amp;gt; trades)
        {
            Console.WriteLine(&amp;quot;new trade&amp;quot;);

            // для каждой сделки добавляем защитную стратегию
            var protectiveStrategy = trades.Select(trade =&amp;gt;
            {
                //Если позиция открыта
                var stopDelta = (int) (trade.Order.Price * stopLossPersent/100);

                // выставляет стоп-лосс
                var stopLoss = new StopLossStrategy(trade, stopDelta);

                Console.WriteLine(&amp;quot;make stop &amp;quot; + stopDelta);

                //Подписываемся на событие срабатывания стоп-лоса
                stopLoss.
                    WhenPositionChanged().
                    Do(closePositionByStopLoss).
                    Apply(this);

                return stopLoss;
            });

            //Добавляем дочернюю стратегию
            ChildStrategies.AddRange(protectiveStrategy);
        }



        /// &amp;lt;summary&amp;gt;
        /// Определение текущей позициИ по инструменту
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        private int GetCurrentPosition()
        {
            if ( Trader.GetPosition(Portfolio, Security) != null )
            {
                return (int) Trader.GetPosition(Portfolio, Security).CurrentValue;
            }
            else
            {
                return 0;
            }
        }






        /// &amp;lt;summary&amp;gt;
        /// Закрытие позиции по Стоп-лосу
        /// &amp;lt;/summary&amp;gt;
        private void closePositionByStopLoss()
        {
            Console.WriteLine(&amp;quot;Close By Stop&amp;quot;);
        }



        /// &amp;lt;summary&amp;gt;
        /// Закрытие всех открытых позиций
        /// &amp;lt;/summary&amp;gt;
        private void closeAllPosition()
        {
            
        }





        /// &amp;lt;summary&amp;gt;
        /// Остановка робота
        /// &amp;lt;/summary&amp;gt;
        private void stopRobot()
        {
            CancelActiveOrders();
            //Закрытие всех активных позиций
            if (GetCurrentPosition() != 0)
            {
                _quoteStrategy.ClosePositionByQuoting();
            }

            this.Stop();
        }



    }
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24324/</id>
    <title type="text">Каким методом получить параметры текущей свечи? High, Low предыдущей (сформировавшейся) свечи получа...</title>
    <published>2013-03-01T21:13:44Z</published>
    <updated>2013-03-01T21:13:44Z</updated>
    <author>
      <name>kahuna</name>
      <uri>https://stocksharp.ru/users/16705/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Shaly &lt;a href="https://stocksharp.ru/posts/m/24271/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Каким методом получить параметры текущей свечи? High, Low предыдущей (сформировавшейся) свечи получаем через ProcessCandle(Candle candle), текущей (формирующейся) через ProcessValues(Candle candle), но последнее не работает.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вызывая индикатор в ProcessCandle&lt;br /&gt;подписываясь в стратегии вот так &lt;br /&gt;_series.WhenCandlesFinished().Do(this.ProcessCandle).Apply(this);&lt;br /&gt;получаю в качестве результата законченные значения индикатора по завершенным свечам.&lt;br /&gt;&lt;br /&gt;Чтобы получать значения в процессе формирования свечи вызываю в стратегии другую функцию&lt;br /&gt;Security.WhenChanged().Do(TryMakeTrade).Apply(this);&lt;br /&gt;и там беру значение индикатора. Тогда получаю значения и по не сформировавшейся свече.&lt;br /&gt;&lt;br /&gt;Если внутри OnProcess индикатора, то вот это у меня работает именно выдавая текущую формирующуся свечу. &lt;br /&gt;protected override decimal OnProcess(IIndicatorValue input)&lt;br /&gt;{&lt;br /&gt;var candle = input.GetValue&amp;lt;Candle&amp;gt;()&lt;br /&gt;var High=candle.HighPrice;&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;а если поставлю проверку типа&lt;br /&gt;            if (candle.State == CandleStates.Finished)&lt;br /&gt;            { var High=candle.HighPrice; }&lt;br /&gt;то получу в High только завершенную</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24323/</id>
    <title type="text">Вы опишите конкретно что пытаетесь/надо сделать, а не абстрактные куски кода. И желательно показать ...</title>
    <published>2013-03-01T19:57:03Z</published>
    <updated>2013-03-01T19:57:03Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Вы опишите конкретно что пытаетесь/надо сделать, а не абстрактные куски кода.&lt;br /&gt;&lt;br /&gt;И желательно показать код, что и как делаете. Может и найдется решение.[smile] </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24303/</id>
    <title type="text">Единственный метод по описанию подходящий под эти цели - WhenChanged(), но он выдает ошибки Ошибка 1...</title>
    <published>2013-02-28T12:49:13Z</published>
    <updated>2013-02-28T12:49:13Z</updated>
    <author>
      <name>Shaly</name>
      <uri>https://stocksharp.ru/users/26891/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Единственный метод по описанию подходящий под эти цели - WhenChanged(), но он выдает ошибки &lt;br /&gt;Ошибка	1	Аргумент экземпляра: невозможно преобразовать из &amp;quot;StockSharp.Algo.Candles.CandleSeries&amp;quot; в &amp;quot;StockSharp.BusinessEntities.Order&amp;quot;  &lt;br /&gt;Ошибка	2	&amp;quot;StockSharp.Algo.Candles.CandleSeries&amp;quot; не содержит определения для &amp;quot;WhenChanged&amp;quot; и наиболее подходящий перегруженный метод расширения &amp;quot;StockSharp.Algo.MarketRuleHelper.WhenChanged(StockSharp.BusinessEntities.Order)&amp;quot; содержит несколько недопустимых аргументов	&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24295/</id>
    <title type="text"> protected override void OnStarted() { //LINQ-запрос - когда свеча сформирована, то запустить метод ...</title>
    <published>2013-02-27T20:31:58Z</published>
    <updated>2013-02-27T20:31:58Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
        
protected override void OnStarted()
        {
            //LINQ-запрос - когда свеча сформирована, то запустить метод обработки свечи ProcessCandle
        _candleSeries
                .WhenCandlesFinished()//
            
                .Do(ProcessValues)
                .Apply(this);

            base.OnStarted();
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вы используете правило &lt;b&gt;WhenCandlesFinished&lt;/b&gt; - правило на событие окончания свечки.&lt;br /&gt;&lt;br /&gt;Соответственно метод &lt;b&gt;ProcessValues&lt;/b&gt; буде выполняться только тогда, когда &lt;b&gt;Сandle.State&lt;/b&gt; == &lt;b&gt;CandleStates.Finished&lt;/b&gt;.&lt;br /&gt;И в метод &lt;b&gt;ProcessValues &lt;/b&gt; будет передаваться только целая свечка.&lt;br /&gt;&lt;br /&gt;Почитайте про &lt;a href="http://stocksharp.com/doc/html/de6c121a-6a89-4c4b-80d1-804d7b98fda7.htm" title="http://stocksharp.com/doc/html/de6c121a-6a89-4c4b-80d1-804d7b98fda7.htm"&gt;правила&lt;/a&gt; и желательно весь раздел &lt;a href="http://stocksharp.com/doc/html/97cf7a9c-8b3d-4791-9306-275d55d4cf36.htm" title="http://stocksharp.com/doc/html/97cf7a9c-8b3d-4791-9306-275d55d4cf36.htm"&gt;событийная модель&lt;/a&gt;.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24286/</id>
    <title type="text">В этом случае все равно текущую формирующуюся свечу на видит, показывает последнюю полностью сформир...</title>
    <published>2013-02-27T11:29:10Z</published>
    <updated>2013-02-27T13:00:49Z</updated>
    <author>
      <name>Shaly</name>
      <uri>https://stocksharp.ru/users/26891/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">В этом случае все равно текущую формирующуюся свечу на видит, показывает последнюю полностью сформировавшуюся.&lt;br /&gt;Может проблема в другом месте например эдесь&lt;br /&gt;        protected override void OnStarted()&lt;br /&gt;        {&lt;br /&gt;            //LINQ-запрос - когда свеча сформирована, то запустить метод обработки свечи ProcessCandle&lt;br /&gt;        _candleSeries&lt;br /&gt;                .WhenCandlesFinished()//&lt;br /&gt;            &lt;br /&gt;                .Do(ProcessValues)&lt;br /&gt;                .Apply(this);&lt;br /&gt;&lt;br /&gt;            base.OnStarted();&lt;br /&gt;        }</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24287/</id>
    <title type="text">Проверил. QuikTrader | 27.02.2013 16:18:57.001 | | processCandle OpenTime:27.02.2013 16:18:00 O:1528...</title>
    <published>2013-02-27T12:29:02Z</published>
    <updated>2013-02-27T12:29:02Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Проверил.&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:plain"&gt;

QuikTrader      | 27.02.2013 16:18:57.001 |            | processCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152870
QuikTrader      | 27.02.2013 16:18:57.001 |            | currentCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152870
QuikTrader      | 27.02.2013 16:18:57.885 |            | processCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152860
QuikTrader      | 27.02.2013 16:18:57.885 |            | currentCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152860
QuikTrader      | 27.02.2013 16:18:58.199 |            | processCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152880
QuikTrader      | 27.02.2013 16:18:58.199 |            | currentCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152880
QuikTrader      | 27.02.2013 16:19:00.123 |            | processCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152860
QuikTrader      | 27.02.2013 16:19:00.123 |            | currentCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152860
QuikTrader      | 27.02.2013 16:19:00.866 |            | processCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152860
QuikTrader      | 27.02.2013 16:19:00.866 |            | currentCandle OpenTime:27.02.2013 16:18:00 O:152880 H:152910 L:152860 C:152860
QuikTrader      | 27.02.2013 16:19:00.866 |            | processCandle OpenTime:27.02.2013 16:19:00 O:152860 H:152860 L:152860 C:152860
QuikTrader      | 27.02.2013 16:19:00.866 |            | currentCandle OpenTime:27.02.2013 16:19:00 O:152860 H:152860 L:152860 C:152860
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Все значения совпадают. Что в пришедшей по событию &lt;b&gt;Processing&lt;/b&gt;, что взятой через &lt;b&gt;GetCandle&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

		_candleManager.Processing += Process;

		...

		void Process(CandleSeries series, Candle candle)
		{
			_quikTrader.AddInfoLog(&amp;quot;processCandle OpenTime:{OpenTime} O:{OpenPrice} H:{HighPrice} L:{LowPrice} C:{ClosePrice}&amp;quot;.PutEx(candle));

			var currCandle = _candleSeries.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(0);
			_quikTrader.AddInfoLog(&amp;quot;currentCandle OpenTime:{OpenTime} O:{OpenPrice} H:{HighPrice} L:{LowPrice} C:{ClosePrice}&amp;quot;.PutEx(currCandle));
		}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24276/</id>
    <title type="text">Свечки private CandleSeries _candleSeries; private Security _security; ... _candleSeries = new Candl...</title>
    <published>2013-02-27T07:55:55Z</published>
    <updated>2013-02-27T07:55:55Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;a href="http://stocksharp.com/doc/html/cd52cfcf-938c-4fce-9a56-4e9a001f0792.htm" title="http://stocksharp.com/doc/html/cd52cfcf-938c-4fce-9a56-4e9a001f0792.htm"&gt;Свечки&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

private CandleSeries _candleSeries;
private Security _security;

...

_candleSeries = new CandleSeries(typeof(TimeFrameCandle), _security, TimeSpan.FromMinutes(1));
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Текущая свечка:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

var candle = _candleSeries.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(0);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Предыдущая свечка:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

var candle = _candleSeries.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(1);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;High/Low:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;


var highPrice = candle.HighPrice;
var lowPrice = candle.LowPrice;

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24271/</id>
    <title type="text">Каким методом получить параметры текущей свечи? High, Low предыдущей (сформировавшейся) свечи получа...</title>
    <published>2013-02-27T06:38:57Z</published>
    <updated>2013-02-27T06:38:57Z</updated>
    <author>
      <name>Shaly</name>
      <uri>https://stocksharp.ru/users/26891/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Каким методом получить параметры текущей свечи? High, Low предыдущей (сформировавшейся) свечи получаем через ProcessCandle(Candle candle), текущей (формирующейся) через ProcessValues(Candle candle), но последнее не работает.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>