﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/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-06-15T10:44:54Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=4915" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/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.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Я переместил в отдельную тему обсуждение, так как оно не относится к ГитХаб.&lt;/p&gt;
&lt;p&gt;Между Велсом и СтокШарп есть принципиальное отличие в подходе. S# используют события (событийная модель), Велс использует итерационную. Лет 10 назад подход Велса еще оправдывался. Сейчас же практически все архитектуры, с которыми я ознакамливался по мере работы в трейдинге, используют события. И Велс на этом фоне устарел. Данных стало очень много. ТФ для роботов изменились до безобразно минимальных значений, объемы стали мизерными, шумы на трендах и т.д.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/33310/</id>
    <title type="text">TheRoman: Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно др...</title>
    <published>2015-07-02T09:00:04Z</published>
    <updated>2015-07-02T09:02:16Z</updated>
    <author>
      <name>Артем</name>
      <uri>https://stocksharp.com/users/16716/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(32774)" rel="nofollow" target="_blank"&gt;TheRoman&lt;/a&gt;:&lt;/strong&gt;
Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно дравину сделать с аналичными функциями wealth-lab-а, что бы просто можно было копировасть код с wealth-lab в #stocksharp и обратно.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Я для этого использую независимую от внешней инфраструктуры библиотеку, которая на вход принимает ghost-bar, а на выходе выдает сигналы для покупки/продажи.
Реализация библиотеки по сути является абстрактной системой анализа. Сам торговый алгоритм пишется в терминах этой системы.&lt;/p&gt;
&lt;p&gt;Далее эту библиотеку можно легко интегрировать с любой системой анализа или риал-тайм торговли:&lt;/p&gt;
&lt;p&gt;Интерфейс сигнальной машины (основной объект абстрактной системы анализа):&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
public interface IStrategyPackage
    {
        IList&amp;lt;ISignalStrategy&amp;gt; Items { get; }
        void Setup();
        SignalSet Process(TimeFrameCandle ghostCandle);
        StopSet GetStops();
    }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Интеграция с S#:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
&lt;p&gt;Интеграция с Wealth-lab:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/72860/</uri>
      <email>info@stocksharp.com</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.com/posts/m/32776/</id>
    <title type="text">TheRoman: Я бы ещё предложил интеграцию с кодом 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.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(32774)" rel="nofollow" target="_blank"&gt;TheRoman&lt;/a&gt;:&lt;/strong&gt;
Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно дравину сделать с аналичными функциями wealth-lab-а, что бы просто можно было копировасть код с wealth-lab в #stocksharp и обратно.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Здесь описываются задачи непосредственно по StockSharp. Задач, что можно сделать в плане трейдинга - несчетное количество. Не думаю, что имеет смысл их все выписывать.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/72860/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Я бы ещё предложил интеграцию с кодом wealth-lab, языки как раз у них одинаковый, можно дравину сделать с аналичными функциями wealth-lab-а, что бы просто можно было копировасть код с wealth-lab в #stocksharp и обратно.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>