﻿<?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">Wealth &lt;-&gt; S#</title>
  <id>~/topic/4915/wealth---s/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-15T06:48:33Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=4915" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/33313/</id>
    <title type="text">Я переместил в отдельную тему обсуждение, так как оно не относится к ГитХаб. Между Велсом и СтокШарп...</title>
    <published>2015-07-02T15:30:21Z</published>
    <updated>2015-07-02T15:30:21Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Я переместил в отдельную тему обсуждение, так как оно не относится к ГитХаб.&lt;br /&gt;&lt;br /&gt;Между Велсом и СтокШарп есть принципиальное отличие в подходе. S# используют события (событийная модель), Велс использует итерационную. Лет 10 назад подход Велса еще оправдывался. Сейчас же практически все архитектуры, с которыми я ознакамливался по мере работы в трейдинге, используют события. И Велс на этом фоне устарел. Данных стало очень много. ТФ для роботов изменились до безобразно минимальных значений, объемы стали мизерными, шумы на трендах и т.д.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/33310/</id>
    <title type="text">Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно дравину сдел...</title>
    <published>2015-07-02T09:00:04Z</published>
    <updated>2015-07-02T09:02:16Z</updated>
    <author>
      <name>Артем</name>
      <uri>https://stocksharp.ru/users/16716/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;TheRoman &lt;a href="https://stocksharp.ru/posts/m/32774/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно дравину сделать с аналичными функциями wealth-lab-а, что бы просто можно было копировасть код с wealth-lab в #stocksharp и обратно.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Я для этого использую независимую от внешней инфраструктуры библиотеку, которая на вход принимает ghost-bar, а на выходе выдает сигналы для покупки/продажи.&lt;br /&gt;Реализация библиотеки по сути является абстрактной системой анализа. Сам торговый алгоритм пишется в терминах этой системы.&lt;br /&gt;&lt;br /&gt;Далее эту библиотеку можно легко интегрировать с любой системой анализа или риал-тайм торговли:&lt;br /&gt;&lt;br /&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;

public interface IStrategyPackage
    {
        IList&amp;lt;ISignalStrategy&amp;gt; Items { get; }
        void Setup();
        SignalSet Process(TimeFrameCandle ghostCandle);
        StopSet GetStops();
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Интеграция с S#:&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;


class StockSharpStrategy {

...

 protected override ProcessResults OnProcess()
        {
            // если наша стратегия в процессе остановки
            if (ProcessState == ProcessStates.Stopping)
            {
                // отменяем активные заявки
                CancelActiveOrders();

                // так как все активные заявки гарантированно были отменены, то возвращаем ProcessResults.Stop
                return ProcessResults.Stop;
            }

            TimeFrameCandle candle = candleManager.GetCurrentTimeFrameCandle(Security, TimeFrame);
            
            if (candle != null)
            {
                lock (locker)
                {
                    ProcessSignals(candle);
                }
            }

            return ProcessResults.Continue;
        }

        private void ProcessSignals(TimeFrameCandle candle)
        {
            var signalSet = signalMachine.Process(candle);

            foreach (var signal in signalSet.Open)
            {
                if (signal.Alarm)
                {
                    var direction = signal.PositionType == SignalPositionType.Long 
                        ? OrderDirections.Buy 
                        : OrderDirections.Sell;
                    RegisterOrder(direction);
                }
            }

            foreach (var signal in signalSet.Close)
            {
                if (signal.Alarm)
                {
                    var direction = signal.PositionType == SignalPositionType.Long 
                        ? OrderDirections.Sell 
                        : OrderDirections.Buy;
                    RegisterOrder(direction);
                }
            }
        }
...
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Интеграция с Wealth-lab:&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 abstract class WealthStrategy : WealthScript
    {
        protected override void Execute()
        {
            ...

            for (int bar = 1; bar &amp;lt; Bars.Count; bar++)
            {
                TimeFrameCandle candle = Bars.ToCandle(bar);
                var signalSet = signalMachine.Process(candle);

                ProcessSignals(bar, signalSet);

                var stops = signalMachine.GetStops();

                if (bar &amp;lt; Bars.Count - 1)
                {
                    DrawStops(bar, stops);
                }
            }
        }

        protected void ProcessSignals(int bar, SignalSet signalSet)
        {
            foreach (Signal signal in signalSet.Open)
            {
                if (signal.Alarm)
                {
                    OpenPosition(bar, signal);
                }
            }
            foreach (Signal signal in signalSet.Close)
            {
                if (signal.Alarm)
                {
                    ClosePosition(bar, signal);
                }
            }
        }
        private void OpenPosition(int bar, Signal signal)
        {
            if (signal.PositionType == SignalPositionType.Long)
            {
                if (signal.OrderType == SignalOrderType.AtOpen)
                {
                    BuyAtMarket(bar);
                }
                if (signal.OrderType == SignalOrderType.StopLoss)
                {
                    BuyAtStop(bar, signal.Price);
                }
                if (signal.OrderType == SignalOrderType.TakeProfit)
                {
                    BuyAtLimit(bar, signal.Price);
                }
            }
            if (signal.PositionType == SignalPositionType.Short)
            {
                if (signal.OrderType == SignalOrderType.AtOpen)
                {
                    ShortAtMarket(bar);
                }
                if (signal.OrderType == SignalOrderType.StopLoss)
                {
                    ShortAtStop(bar, signal.Price);
                }
                if (signal.OrderType == SignalOrderType.TakeProfit)
                {
                    ShortAtLimit(bar, signal.Price);
                }
            }
        }
&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/32777/</id>
    <title type="text">Не, не торговые решения, я как раз по функционалу и реализации архитектуры имею введу.</title>
    <published>2015-03-04T22:10:43Z</published>
    <updated>2015-03-05T00:43:27Z</updated>
    <author>
      <name>TheRoman</name>
      <uri>https://stocksharp.ru/users/72860/</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/32776/</id>
    <title type="text">Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно дравину сдел...</title>
    <published>2015-03-04T21:37:17Z</published>
    <updated>2015-03-04T21:37:17Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;TheRoman &lt;a href="https://stocksharp.ru/posts/m/32774/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно дравину сделать с аналичными функциями wealth-lab-а, что бы просто можно было копировасть код с wealth-lab в #stocksharp и обратно.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Здесь описываются задачи непосредственно по StockSharp. Задач, что можно сделать в плане трейдинга - несчетное количество. Не думаю, что имеет смысл их все выписывать.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/32774/</id>
    <title type="text">Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно дравину сдел...</title>
    <published>2015-03-04T21:20:49Z</published>
    <updated>2015-03-04T21:22:29Z</updated>
    <author>
      <name>TheRoman</name>
      <uri>https://stocksharp.ru/users/72860/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно дравину сделать с аналичными функциями wealth-lab-а, что бы просто можно было копировасть код с wealth-lab в #stocksharp и обратно.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>