Skip to content

Qyxxlor/StockSharp-Multi-Asset-Trading

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Twitter Discord Shield Open in Dev Containers Open In Colab

image

Why StockSharp Plugins?

StockSharp (shortly S#) – are free platform for trading at any markets of the world (crypto exchanges, American, European, Asian, Russian, stocks, futures, options, Bitcoins, forex, etc.). You will be able to trade manually or automated trading (algorithmic trading robots, conventional or HFT). Available connections: Binance, MT4, MT5, FIX/FAST, PolygonIO, Trading Technologies, Alpaca Markets, BarChart, CQG, E*Trade, IQFeed, InteractiveBrokers, LMAX, MatLab, Oanda, FXCM, Rithmic, cTrader, DXtrade, BitStamp, Bitfinex, Coinbase, Kraken, Poloniex, GDAX, Bittrex, Bithumb, OKX, Coincheck, CEX.IO, BitMEX, YoBit, Livecoin, EXMO, Deribit, HTX, KuCoin, QuantFEED and many other.

Logo

They are:

  • 🔌 Modular & reusable components
  • 📦 Environment-agnostic (backtest, sandbox, live)
  • 🧩 Easy to plug into any strategy or workflow
  • 🌐 Exchange-agnostic with unified interfaces

Create, share, or combine plugins for indicators, strategies, risk controls, and more — all while keeping your code clean and scalable.

Hydra500

Designer - free universal algorithmic strategies application for easy strategy creation:

Visual designer to create strategies by mouse clicking Embedded C# editor Easy to create own indicators Build in debugger Connections to the multiple electronic boards and brokers All world platforms Schema sharing with own team

StockSharp Workspace

While the StockSharp Platform is all about an integration to dozens of different data vendors, the interface is either Python or a CLI.

If you want an enterprise UI to visualize this datasets and use AI agents on top, you can find StockSharp Workspace at.

image

架构设计

Hydra - free software to automatically load and store market data:

  • Supports many sources
  • High compression ratio
  • Any data type
  • Program access to stored data via API
  • Export to csv, excel, xml or database
  • Import from csv
  • Scheduled tasks
  • Auto-sync over the Internet between several running programs S#.Data

Shell500

import StockSharp
"""
This example shows how backtest over tweets
"""

class TwitterBot(StockSharp.Model):
    def main(self, args):
        while self.has_data:
            self.backtester.value_account()
            self.sleep('1h')

    def event(self, type_: str, data: str):
        # Now check if it's a tweet about Tesla
        if 'tsla' in data.lower() or 'gme' in data.lower():
            # Buy, sell or evaluate your portfolio
            pass


if __name__ == "__main__":
    exchange = StockSharp.Alpaca()
    model = TwitterBot(exchange)

    # Add the tweets json here
    model.backtester.add_custom_events(StockSharp.data.JsonEventReader('./tweets.json'))
    # Now add some underlying prices at 1 month
    model.backtester.add_prices('TSLA', '1h', start_date='3/20/22', stop_date='4/15/22')

    # Backtest or run live
    print(model.backtest(args=None, initial_values={'USD': 10000}))

Shell - the ready-made graphical framework with the ability to quickly change to your needs and with fully open source code in C#:

  • Complete source code
  • Support for all StockSharp platform connections
  • Support for S#.Designer schemas
  • Flexible user interface
  • Strategy testing (statistics, equity, reports)
  • Save and load strategy settings
  • Launch strategies in parallel
  • Detailed information on strategy performance
  • Launch strategies on schedule

🛠️ Installation

public class SimpleStrategy : Strategy
{
	[Display(Name = "CandleSeries",
		 GroupName = "Base settings")]
	public CandleSeries CandleSeries { get; set; }
	public SimpleStrategy(){}

	protected override void OnStarted()
	{
		var connector = (Connector)Connector;
		connector.WhenCandlesFinished(CandleSeries).Do(CandlesFinished).Apply(this);
		connector.SubscribeCandles(CandleSeries);
		base.OnStarted();
	}

	private void CandlesFinished(Candle candle)
	{
		if (candle.OpenPrice < candle.ClosePrice && Position <= 0)
		{
			RegisterOrder(this.BuyAtMarket(Volume + Math.Abs(Position)));
		}
		else if (candle.OpenPrice > candle.ClosePrice && Position >= 0)
		{
			RegisterOrder(this.SellAtMarket(Volume + Math.Abs(Position)));
		}
	}
}
erDiagram
    PLUGIN {
        string id
        string name
        string type
    }

    PLUGIN ||--o{ STRATEGY : implements
    STRATEGY ||--o{ INDICATOR : uses
    STRATEGY ||--o{ EXECUTOR : runs
    EXECUTOR ||--o{ MARKET_INTERFACE : interacts
    MARKET_INTERFACE }|--o{ EXCHANGE : connects
    PLUGIN ||--o{ CONFIGURATION : requires
    PLUGIN ||--o{ LOGGING : logs
Loading

Preview

snake

Contributors

wouldn't be without you. If we are going to disrupt financial industry, every contribution counts. Thank you for being part of this journey.