Repository files navigation

TradeAPI

Trading Data API and Web Interface Project.

To run the project, open TradingDB.sln inside Visual Studio 2022 (for compatibility with ASP.NET CORE 6). Press the continue buttons from the top to compile and run the program. A webpage will be available under https://localhost:7182 which links to the project. For API calls, direct them at the same URL. For instance https://localhost:7182/api/orders/GetOrders.

In order to ensure a connection to a properly configured database, setup a database using the TradeDB.sql file. Once the database is setup, point to it inside Webservice/appsettings.json inside the connection string in the following format

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Database": {
"ConnectionString": "Server = {hostname}; Port = 3306; Database = TradeDB; Uid = {username}; Pwd={password};"
}
}

The included appsettings.json file includes a connection to a temporary database which was used during the development process, and is configured with the current version of the SQL schema.

Dependencies

Uses Libraries available from NuGet.

  • Newtonsoft.JsonTradingDB and Webservice
  • MySQL.DataDatabaseLibrary
  • Microsoft.AspNetCore.Mvc.NewtonsoftJsonWebservice
  • Nest

For internal dependencies, right click Dependencies for a particular project and add the required dependencies.

  • DatabaseLibrary references TradingLibrary
  • WebService references DatabaseLibrary and TradingLibrary

Backend Information

The following section includes important information and general guidelines for contributing to this project's backend.

General Workflow For Implementing Entities

  1. Inside TradingLibrary.Models create a new model named [Entity (eg. Account)].cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties : All Attributes. Use JsonProperty as follows.
    [JsonProperty(PropertyName = "active")]
    public bool Active { get; set; }
    Methods : Relevant Methods.
    
  2. Inside DatabaseLibrary.Models create a new [Entity (eg. Account)]_db.cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties: All database attributes.
    
  3. Inside DatabaseLibrary.Helpers create a new [Entity (eg. Account)]Helper_db.cs

    This Helper should include relevant database entries and requirements for the class, and include the following:

     Add() method : returns a [Entity]_db object and takes in parameters for the object, to add a new instance.
    should do the following
    - Validate data (make sure values are defined)
    - Generate a new [Entity]_db instance
    - Add the row to the database
    - Return the instance upon success, null otherwise
    GetCollection() method : can be different filters based on specific needs of the entity, in general
    returns List<[Entity]_db> of queried objects from the database.
    
  4. Setup [Entity]Helper.cs inside Webservice.ControllerHelpers

  5. Inside Webservice.Controllers setup [Entity[s]]Controller.cs with all API endpoints.

Frontend Information

The following section includes important information and general guidelines for contributing to this project's frontend.

Providers Information

Currently implemented for a MySQL database with extensible support for other databases possible.

API Information

Following is sample API calls and basic documentation

ORDERS API

DELETE
https://localhost:7182/api/orders/DeleteOrder/{Id}
GET
https://localhost:7182/api/orders/GetOrders
https://localhost:7182/api/orders/GetOrdersByAccount/{AccountId}
POST
https://localhost:7182/api/orders/UpdateOrders
https://localhost:7182/api/orders/AddOrders
>> Use "Body->Raw->JSON" and following JSON Object
{
"accountref": 1,
"action": 3,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}
PUT
https://localhost:7182/api/orders/EditOrder/{Id}
{
"accountref": 3,
"action": 4,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}

ACCOUNT SUMMARY API

GET
https://localhost:7182/api/account_summary/GetAccount_Summary
https://localhost:7182/api/account_summary/GetAccount_Summary/{Id}
DELETE
https://localhost:7182/api/account_summary/DeleteAccount_Summary/{Id}
POST
https://localhost:7182/api/account_summary/AddAccount_Summary
{
"accountref": 3,
"availablefunds": 431.0,
"grosspositionvalue": 1.0,
}
PUT
https://localhost:7182/api/account_summary/EditAccountSummary/{Id}
{
"availablefunds": 10000000000,
"grosspositionvalue": 1.0,
}

BROKER API

GET
https://localhost:7182/api/brokers/GetBrokers
DELETE
https://localhost:7182/api/brokers/DeleteBroker
{
"name": "For Deletion"
}
POST
https://localhost:7182/api/brokers/AddBrokers
{
"name": "Test Broker",
"website": "https://www.testbrokerpostman.com/"
}

COMMISSIONS API

GET
https://localhost:7182/api/commissions/GetCommissions
DELETE
https://localhost:7182/api/commissions/DeleteCommission
{
"broker": "ASPX",
"type": 1
}
https://localhost:7182/api/commissions/DeleteByBroker
{
"broker": "ASPX"
}
POST
https://localhost:7182/api/commissions/AddCommission
{
"broker": "ASPX",
"type": 0,
"rate": 1.5
}

About

Basic Trading Data REST API

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

TradeAPI

Trading Data API and Web Interface Project.

To run the project, open TradingDB.sln inside Visual Studio 2022 (for compatibility with ASP.NET CORE 6). Press the continue buttons from the top to compile and run the program. A webpage will be available under https://localhost:7182 which links to the project. For API calls, direct them at the same URL. For instance https://localhost:7182/api/orders/GetOrders.

In order to ensure a connection to a properly configured database, setup a database using the TradeDB.sql file. Once the database is setup, point to it inside Webservice/appsettings.json inside the connection string in the following format

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Database": {
"ConnectionString": "Server = {hostname}; Port = 3306; Database = TradeDB; Uid = {username}; Pwd={password};"
}
}

The included appsettings.json file includes a connection to a temporary database which was used during the development process, and is configured with the current version of the SQL schema.

Dependencies

Uses Libraries available from NuGet.

  • Newtonsoft.JsonTradingDB and Webservice
  • MySQL.DataDatabaseLibrary
  • Microsoft.AspNetCore.Mvc.NewtonsoftJsonWebservice
  • Nest

For internal dependencies, right click Dependencies for a particular project and add the required dependencies.

  • DatabaseLibrary references TradingLibrary
  • WebService references DatabaseLibrary and TradingLibrary

Backend Information

The following section includes important information and general guidelines for contributing to this project's backend.

General Workflow For Implementing Entities

  1. Inside TradingLibrary.Models create a new model named [Entity (eg. Account)].cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties : All Attributes. Use JsonProperty as follows.
    [JsonProperty(PropertyName = "active")]
    public bool Active { get; set; }
    Methods : Relevant Methods.
    
  2. Inside DatabaseLibrary.Models create a new [Entity (eg. Account)]_db.cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties: All database attributes.
    
  3. Inside DatabaseLibrary.Helpers create a new [Entity (eg. Account)]Helper_db.cs

    This Helper should include relevant database entries and requirements for the class, and include the following:

     Add() method : returns a [Entity]_db object and takes in parameters for the object, to add a new instance.
    should do the following
    - Validate data (make sure values are defined)
    - Generate a new [Entity]_db instance
    - Add the row to the database
    - Return the instance upon success, null otherwise
    GetCollection() method : can be different filters based on specific needs of the entity, in general
    returns List<[Entity]_db> of queried objects from the database.
    
  4. Setup [Entity]Helper.cs inside Webservice.ControllerHelpers

  5. Inside Webservice.Controllers setup [Entity[s]]Controller.cs with all API endpoints.

Frontend Information

The following section includes important information and general guidelines for contributing to this project's frontend.

Providers Information

Currently implemented for a MySQL database with extensible support for other databases possible.

API Information

Following is sample API calls and basic documentation

ORDERS API

DELETE
https://localhost:7182/api/orders/DeleteOrder/{Id}
GET
https://localhost:7182/api/orders/GetOrders
https://localhost:7182/api/orders/GetOrdersByAccount/{AccountId}
POST
https://localhost:7182/api/orders/UpdateOrders
https://localhost:7182/api/orders/AddOrders
>> Use "Body->Raw->JSON" and following JSON Object
{
"accountref": 1,
"action": 3,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}
PUT
https://localhost:7182/api/orders/EditOrder/{Id}
{
"accountref": 3,
"action": 4,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}

ACCOUNT SUMMARY API

GET
https://localhost:7182/api/account_summary/GetAccount_Summary
https://localhost:7182/api/account_summary/GetAccount_Summary/{Id}
DELETE
https://localhost:7182/api/account_summary/DeleteAccount_Summary/{Id}
POST
https://localhost:7182/api/account_summary/AddAccount_Summary
{
"accountref": 3,
"availablefunds": 431.0,
"grosspositionvalue": 1.0,
}
PUT
https://localhost:7182/api/account_summary/EditAccountSummary/{Id}
{
"availablefunds": 10000000000,
"grosspositionvalue": 1.0,
}

BROKER API

GET
https://localhost:7182/api/brokers/GetBrokers
DELETE
https://localhost:7182/api/brokers/DeleteBroker
{
"name": "For Deletion"
}
POST
https://localhost:7182/api/brokers/AddBrokers
{
"name": "Test Broker",
"website": "https://www.testbrokerpostman.com/"
}

COMMISSIONS API

GET
https://localhost:7182/api/commissions/GetCommissions
DELETE
https://localhost:7182/api/commissions/DeleteCommission
{
"broker": "ASPX",
"type": 1
}
https://localhost:7182/api/commissions/DeleteByBroker
{
"broker": "ASPX"
}
POST
https://localhost:7182/api/commissions/AddCommission
{
"broker": "ASPX",
"type": 0,
"rate": 1.5
}

About

Basic Trading Data REST API

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TradeAPI

Trading Data API and Web Interface Project.

To run the project, open TradingDB.sln inside Visual Studio 2022 (for compatibility with ASP.NET CORE 6). Press the continue buttons from the top to compile and run the program. A webpage will be available under https://localhost:7182 which links to the project. For API calls, direct them at the same URL. For instance https://localhost:7182/api/orders/GetOrders.

In order to ensure a connection to a properly configured database, setup a database using the TradeDB.sql file. Once the database is setup, point to it inside Webservice/appsettings.json inside the connection string in the following format

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Database": {
"ConnectionString": "Server = {hostname}; Port = 3306; Database = TradeDB; Uid = {username}; Pwd={password};"
}
}

The included appsettings.json file includes a connection to a temporary database which was used during the development process, and is configured with the current version of the SQL schema.

Dependencies

Uses Libraries available from NuGet.

  • Newtonsoft.JsonTradingDB and Webservice
  • MySQL.DataDatabaseLibrary
  • Microsoft.AspNetCore.Mvc.NewtonsoftJsonWebservice
  • Nest

For internal dependencies, right click Dependencies for a particular project and add the required dependencies.

  • DatabaseLibrary references TradingLibrary
  • WebService references DatabaseLibrary and TradingLibrary

Backend Information

The following section includes important information and general guidelines for contributing to this project's backend.

General Workflow For Implementing Entities

  1. Inside TradingLibrary.Models create a new model named [Entity (eg. Account)].cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties : All Attributes. Use JsonProperty as follows.
    [JsonProperty(PropertyName = "active")]
    public bool Active { get; set; }
    Methods : Relevant Methods.
    
  2. Inside DatabaseLibrary.Models create a new [Entity (eg. Account)]_db.cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties: All database attributes.
    
  3. Inside DatabaseLibrary.Helpers create a new [Entity (eg. Account)]Helper_db.cs

    This Helper should include relevant database entries and requirements for the class, and include the following:

     Add() method : returns a [Entity]_db object and takes in parameters for the object, to add a new instance.
    should do the following
    - Validate data (make sure values are defined)
    - Generate a new [Entity]_db instance
    - Add the row to the database
    - Return the instance upon success, null otherwise
    GetCollection() method : can be different filters based on specific needs of the entity, in general
    returns List<[Entity]_db> of queried objects from the database.
    
  4. Setup [Entity]Helper.cs inside Webservice.ControllerHelpers

  5. Inside Webservice.Controllers setup [Entity[s]]Controller.cs with all API endpoints.

Frontend Information

The following section includes important information and general guidelines for contributing to this project's frontend.

Providers Information

Currently implemented for a MySQL database with extensible support for other databases possible.

API Information

Following is sample API calls and basic documentation

ORDERS API

DELETE
https://localhost:7182/api/orders/DeleteOrder/{Id}
GET
https://localhost:7182/api/orders/GetOrders
https://localhost:7182/api/orders/GetOrdersByAccount/{AccountId}
POST
https://localhost:7182/api/orders/UpdateOrders
https://localhost:7182/api/orders/AddOrders
>> Use "Body->Raw->JSON" and following JSON Object
{
"accountref": 1,
"action": 3,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}
PUT
https://localhost:7182/api/orders/EditOrder/{Id}
{
"accountref": 3,
"action": 4,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}

ACCOUNT SUMMARY API

GET
https://localhost:7182/api/account_summary/GetAccount_Summary
https://localhost:7182/api/account_summary/GetAccount_Summary/{Id}
DELETE
https://localhost:7182/api/account_summary/DeleteAccount_Summary/{Id}
POST
https://localhost:7182/api/account_summary/AddAccount_Summary
{
"accountref": 3,
"availablefunds": 431.0,
"grosspositionvalue": 1.0,
}
PUT
https://localhost:7182/api/account_summary/EditAccountSummary/{Id}
{
"availablefunds": 10000000000,
"grosspositionvalue": 1.0,
}

BROKER API

GET
https://localhost:7182/api/brokers/GetBrokers
DELETE
https://localhost:7182/api/brokers/DeleteBroker
{
"name": "For Deletion"
}
POST
https://localhost:7182/api/brokers/AddBrokers
{
"name": "Test Broker",
"website": "https://www.testbrokerpostman.com/"
}

COMMISSIONS API

GET
https://localhost:7182/api/commissions/GetCommissions
DELETE
https://localhost:7182/api/commissions/DeleteCommission
{
"broker": "ASPX",
"type": 1
}
https://localhost:7182/api/commissions/DeleteByBroker
{
"broker": "ASPX"
}
POST
https://localhost:7182/api/commissions/AddCommission
{
"broker": "ASPX",
"type": 0,
"rate": 1.5
}

About

Basic Trading Data REST API

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TradeAPI

Trading Data API and Web Interface Project.

To run the project, open TradingDB.sln inside Visual Studio 2022 (for compatibility with ASP.NET CORE 6). Press the continue buttons from the top to compile and run the program. A webpage will be available under https://localhost:7182 which links to the project. For API calls, direct them at the same URL. For instance https://localhost:7182/api/orders/GetOrders.

In order to ensure a connection to a properly configured database, setup a database using the TradeDB.sql file. Once the database is setup, point to it inside Webservice/appsettings.json inside the connection string in the following format

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Database": {
"ConnectionString": "Server = {hostname}; Port = 3306; Database = TradeDB; Uid = {username}; Pwd={password};"
}
}

The included appsettings.json file includes a connection to a temporary database which was used during the development process, and is configured with the current version of the SQL schema.

Dependencies

Uses Libraries available from NuGet.

  • Newtonsoft.JsonTradingDB and Webservice
  • MySQL.DataDatabaseLibrary
  • Microsoft.AspNetCore.Mvc.NewtonsoftJsonWebservice
  • Nest

For internal dependencies, right click Dependencies for a particular project and add the required dependencies.

  • DatabaseLibrary references TradingLibrary
  • WebService references DatabaseLibrary and TradingLibrary

Backend Information

The following section includes important information and general guidelines for contributing to this project's backend.

General Workflow For Implementing Entities

  1. Inside TradingLibrary.Models create a new model named [Entity (eg. Account)].cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties : All Attributes. Use JsonProperty as follows.
    [JsonProperty(PropertyName = "active")]
    public bool Active { get; set; }
    Methods : Relevant Methods.
    
  2. Inside DatabaseLibrary.Models create a new [Entity (eg. Account)]_db.cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties: All database attributes.
    
  3. Inside DatabaseLibrary.Helpers create a new [Entity (eg. Account)]Helper_db.cs

    This Helper should include relevant database entries and requirements for the class, and include the following:

     Add() method : returns a [Entity]_db object and takes in parameters for the object, to add a new instance.
    should do the following
    - Validate data (make sure values are defined)
    - Generate a new [Entity]_db instance
    - Add the row to the database
    - Return the instance upon success, null otherwise
    GetCollection() method : can be different filters based on specific needs of the entity, in general
    returns List<[Entity]_db> of queried objects from the database.
    
  4. Setup [Entity]Helper.cs inside Webservice.ControllerHelpers

  5. Inside Webservice.Controllers setup [Entity[s]]Controller.cs with all API endpoints.

Frontend Information

The following section includes important information and general guidelines for contributing to this project's frontend.

Providers Information

Currently implemented for a MySQL database with extensible support for other databases possible.

API Information

Following is sample API calls and basic documentation

ORDERS API

DELETE
https://localhost:7182/api/orders/DeleteOrder/{Id}
GET
https://localhost:7182/api/orders/GetOrders
https://localhost:7182/api/orders/GetOrdersByAccount/{AccountId}
POST
https://localhost:7182/api/orders/UpdateOrders
https://localhost:7182/api/orders/AddOrders
>> Use "Body->Raw->JSON" and following JSON Object
{
"accountref": 1,
"action": 3,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}
PUT
https://localhost:7182/api/orders/EditOrder/{Id}
{
"accountref": 3,
"action": 4,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}

ACCOUNT SUMMARY API

GET
https://localhost:7182/api/account_summary/GetAccount_Summary
https://localhost:7182/api/account_summary/GetAccount_Summary/{Id}
DELETE
https://localhost:7182/api/account_summary/DeleteAccount_Summary/{Id}
POST
https://localhost:7182/api/account_summary/AddAccount_Summary
{
"accountref": 3,
"availablefunds": 431.0,
"grosspositionvalue": 1.0,
}
PUT
https://localhost:7182/api/account_summary/EditAccountSummary/{Id}
{
"availablefunds": 10000000000,
"grosspositionvalue": 1.0,
}

BROKER API

GET
https://localhost:7182/api/brokers/GetBrokers
DELETE
https://localhost:7182/api/brokers/DeleteBroker
{
"name": "For Deletion"
}
POST
https://localhost:7182/api/brokers/AddBrokers
{
"name": "Test Broker",
"website": "https://www.testbrokerpostman.com/"
}

COMMISSIONS API

GET
https://localhost:7182/api/commissions/GetCommissions
DELETE
https://localhost:7182/api/commissions/DeleteCommission
{
"broker": "ASPX",
"type": 1
}
https://localhost:7182/api/commissions/DeleteByBroker
{
"broker": "ASPX"
}
POST
https://localhost:7182/api/commissions/AddCommission
{
"broker": "ASPX",
"type": 0,
"rate": 1.5
}

About

Basic Trading Data REST API

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

TradeAPI

Trading Data API and Web Interface Project.

To run the project, open TradingDB.sln inside Visual Studio 2022 (for compatibility with ASP.NET CORE 6). Press the continue buttons from the top to compile and run the program. A webpage will be available under https://localhost:7182 which links to the project. For API calls, direct them at the same URL. For instance https://localhost:7182/api/orders/GetOrders.

In order to ensure a connection to a properly configured database, setup a database using the TradeDB.sql file. Once the database is setup, point to it inside Webservice/appsettings.json inside the connection string in the following format

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Database": {
"ConnectionString": "Server = {hostname}; Port = 3306; Database = TradeDB; Uid = {username}; Pwd={password};"
}
}

The included appsettings.json file includes a connection to a temporary database which was used during the development process, and is configured with the current version of the SQL schema.

Dependencies

Uses Libraries available from NuGet.

  • Newtonsoft.JsonTradingDB and Webservice
  • MySQL.DataDatabaseLibrary
  • Microsoft.AspNetCore.Mvc.NewtonsoftJsonWebservice
  • Nest

For internal dependencies, right click Dependencies for a particular project and add the required dependencies.

  • DatabaseLibrary references TradingLibrary
  • WebService references DatabaseLibrary and TradingLibrary

Backend Information

The following section includes important information and general guidelines for contributing to this project's backend.

General Workflow For Implementing Entities

  1. Inside TradingLibrary.Models create a new model named [Entity (eg. Account)].cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties : All Attributes. Use JsonProperty as follows.
    [JsonProperty(PropertyName = "active")]
    public bool Active { get; set; }
    Methods : Relevant Methods.
    
  2. Inside DatabaseLibrary.Models create a new [Entity (eg. Account)]_db.cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties: All database attributes.
    
  3. Inside DatabaseLibrary.Helpers create a new [Entity (eg. Account)]Helper_db.cs

    This Helper should include relevant database entries and requirements for the class, and include the following:

     Add() method : returns a [Entity]_db object and takes in parameters for the object, to add a new instance.
    should do the following
    - Validate data (make sure values are defined)
    - Generate a new [Entity]_db instance
    - Add the row to the database
    - Return the instance upon success, null otherwise
    GetCollection() method : can be different filters based on specific needs of the entity, in general
    returns List<[Entity]_db> of queried objects from the database.
    
  4. Setup [Entity]Helper.cs inside Webservice.ControllerHelpers

  5. Inside Webservice.Controllers setup [Entity[s]]Controller.cs with all API endpoints.

Frontend Information

The following section includes important information and general guidelines for contributing to this project's frontend.

Providers Information

Currently implemented for a MySQL database with extensible support for other databases possible.

API Information

Following is sample API calls and basic documentation

ORDERS API

DELETE
https://localhost:7182/api/orders/DeleteOrder/{Id}
GET
https://localhost:7182/api/orders/GetOrders
https://localhost:7182/api/orders/GetOrdersByAccount/{AccountId}
POST
https://localhost:7182/api/orders/UpdateOrders
https://localhost:7182/api/orders/AddOrders
>> Use "Body->Raw->JSON" and following JSON Object
{
"accountref": 1,
"action": 3,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}
PUT
https://localhost:7182/api/orders/EditOrder/{Id}
{
"accountref": 3,
"action": 4,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}

ACCOUNT SUMMARY API

GET
https://localhost:7182/api/account_summary/GetAccount_Summary
https://localhost:7182/api/account_summary/GetAccount_Summary/{Id}
DELETE
https://localhost:7182/api/account_summary/DeleteAccount_Summary/{Id}
POST
https://localhost:7182/api/account_summary/AddAccount_Summary
{
"accountref": 3,
"availablefunds": 431.0,
"grosspositionvalue": 1.0,
}
PUT
https://localhost:7182/api/account_summary/EditAccountSummary/{Id}
{
"availablefunds": 10000000000,
"grosspositionvalue": 1.0,
}

BROKER API

GET
https://localhost:7182/api/brokers/GetBrokers
DELETE
https://localhost:7182/api/brokers/DeleteBroker
{
"name": "For Deletion"
}
POST
https://localhost:7182/api/brokers/AddBrokers
{
"name": "Test Broker",
"website": "https://www.testbrokerpostman.com/"
}

COMMISSIONS API

GET
https://localhost:7182/api/commissions/GetCommissions
DELETE
https://localhost:7182/api/commissions/DeleteCommission
{
"broker": "ASPX",
"type": 1
}
https://localhost:7182/api/commissions/DeleteByBroker
{
"broker": "ASPX"
}
POST
https://localhost:7182/api/commissions/AddCommission
{
"broker": "ASPX",
"type": 0,
"rate": 1.5
}

About

Basic Trading Data REST API

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TradeAPI

Trading Data API and Web Interface Project.

To run the project, open TradingDB.sln inside Visual Studio 2022 (for compatibility with ASP.NET CORE 6). Press the continue buttons from the top to compile and run the program. A webpage will be available under https://localhost:7182 which links to the project. For API calls, direct them at the same URL. For instance https://localhost:7182/api/orders/GetOrders.

In order to ensure a connection to a properly configured database, setup a database using the TradeDB.sql file. Once the database is setup, point to it inside Webservice/appsettings.json inside the connection string in the following format

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Database": {
"ConnectionString": "Server = {hostname}; Port = 3306; Database = TradeDB; Uid = {username}; Pwd={password};"
}
}

The included appsettings.json file includes a connection to a temporary database which was used during the development process, and is configured with the current version of the SQL schema.

Dependencies

Uses Libraries available from NuGet.

  • Newtonsoft.JsonTradingDB and Webservice
  • MySQL.DataDatabaseLibrary
  • Microsoft.AspNetCore.Mvc.NewtonsoftJsonWebservice
  • Nest

For internal dependencies, right click Dependencies for a particular project and add the required dependencies.

  • DatabaseLibrary references TradingLibrary
  • WebService references DatabaseLibrary and TradingLibrary

Backend Information

The following section includes important information and general guidelines for contributing to this project's backend.

General Workflow For Implementing Entities

  1. Inside TradingLibrary.Models create a new model named [Entity (eg. Account)].cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties : All Attributes. Use JsonProperty as follows.
    [JsonProperty(PropertyName = "active")]
    public bool Active { get; set; }
    Methods : Relevant Methods.
    
  2. Inside DatabaseLibrary.Models create a new [Entity (eg. Account)]_db.cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties: All database attributes.
    
  3. Inside DatabaseLibrary.Helpers create a new [Entity (eg. Account)]Helper_db.cs

    This Helper should include relevant database entries and requirements for the class, and include the following:

     Add() method : returns a [Entity]_db object and takes in parameters for the object, to add a new instance.
    should do the following
    - Validate data (make sure values are defined)
    - Generate a new [Entity]_db instance
    - Add the row to the database
    - Return the instance upon success, null otherwise
    GetCollection() method : can be different filters based on specific needs of the entity, in general
    returns List<[Entity]_db> of queried objects from the database.
    
  4. Setup [Entity]Helper.cs inside Webservice.ControllerHelpers

  5. Inside Webservice.Controllers setup [Entity[s]]Controller.cs with all API endpoints.

Frontend Information

The following section includes important information and general guidelines for contributing to this project's frontend.

Providers Information

Currently implemented for a MySQL database with extensible support for other databases possible.

API Information

Following is sample API calls and basic documentation

ORDERS API

DELETE
https://localhost:7182/api/orders/DeleteOrder/{Id}
GET
https://localhost:7182/api/orders/GetOrders
https://localhost:7182/api/orders/GetOrdersByAccount/{AccountId}
POST
https://localhost:7182/api/orders/UpdateOrders
https://localhost:7182/api/orders/AddOrders
>> Use "Body->Raw->JSON" and following JSON Object
{
"accountref": 1,
"action": 3,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}
PUT
https://localhost:7182/api/orders/EditOrder/{Id}
{
"accountref": 3,
"action": 4,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}

ACCOUNT SUMMARY API

GET
https://localhost:7182/api/account_summary/GetAccount_Summary
https://localhost:7182/api/account_summary/GetAccount_Summary/{Id}
DELETE
https://localhost:7182/api/account_summary/DeleteAccount_Summary/{Id}
POST
https://localhost:7182/api/account_summary/AddAccount_Summary
{
"accountref": 3,
"availablefunds": 431.0,
"grosspositionvalue": 1.0,
}
PUT
https://localhost:7182/api/account_summary/EditAccountSummary/{Id}
{
"availablefunds": 10000000000,
"grosspositionvalue": 1.0,
}

BROKER API

GET
https://localhost:7182/api/brokers/GetBrokers
DELETE
https://localhost:7182/api/brokers/DeleteBroker
{
"name": "For Deletion"
}
POST
https://localhost:7182/api/brokers/AddBrokers
{
"name": "Test Broker",
"website": "https://www.testbrokerpostman.com/"
}

COMMISSIONS API

GET
https://localhost:7182/api/commissions/GetCommissions
DELETE
https://localhost:7182/api/commissions/DeleteCommission
{
"broker": "ASPX",
"type": 1
}
https://localhost:7182/api/commissions/DeleteByBroker
{
"broker": "ASPX"
}
POST
https://localhost:7182/api/commissions/AddCommission
{
"broker": "ASPX",
"type": 0,
"rate": 1.5
}

About

Basic Trading Data REST API

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TradeAPI

Trading Data API and Web Interface Project.

To run the project, open TradingDB.sln inside Visual Studio 2022 (for compatibility with ASP.NET CORE 6). Press the continue buttons from the top to compile and run the program. A webpage will be available under https://localhost:7182 which links to the project. For API calls, direct them at the same URL. For instance https://localhost:7182/api/orders/GetOrders.

In order to ensure a connection to a properly configured database, setup a database using the TradeDB.sql file. Once the database is setup, point to it inside Webservice/appsettings.json inside the connection string in the following format

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Database": {
"ConnectionString": "Server = {hostname}; Port = 3306; Database = TradeDB; Uid = {username}; Pwd={password};"
}
}

The included appsettings.json file includes a connection to a temporary database which was used during the development process, and is configured with the current version of the SQL schema.

Dependencies

Uses Libraries available from NuGet.

  • Newtonsoft.JsonTradingDB and Webservice
  • MySQL.DataDatabaseLibrary
  • Microsoft.AspNetCore.Mvc.NewtonsoftJsonWebservice
  • Nest

For internal dependencies, right click Dependencies for a particular project and add the required dependencies.

  • DatabaseLibrary references TradingLibrary
  • WebService references DatabaseLibrary and TradingLibrary

Backend Information

The following section includes important information and general guidelines for contributing to this project's backend.

General Workflow For Implementing Entities

  1. Inside TradingLibrary.Models create a new model named [Entity (eg. Account)].cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties : All Attributes. Use JsonProperty as follows.
    [JsonProperty(PropertyName = "active")]
    public bool Active { get; set; }
    Methods : Relevant Methods.
    
  2. Inside DatabaseLibrary.Models create a new [Entity (eg. Account)]_db.cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties: All database attributes.
    
  3. Inside DatabaseLibrary.Helpers create a new [Entity (eg. Account)]Helper_db.cs

    This Helper should include relevant database entries and requirements for the class, and include the following:

     Add() method : returns a [Entity]_db object and takes in parameters for the object, to add a new instance.
    should do the following
    - Validate data (make sure values are defined)
    - Generate a new [Entity]_db instance
    - Add the row to the database
    - Return the instance upon success, null otherwise
    GetCollection() method : can be different filters based on specific needs of the entity, in general
    returns List<[Entity]_db> of queried objects from the database.
    
  4. Setup [Entity]Helper.cs inside Webservice.ControllerHelpers

  5. Inside Webservice.Controllers setup [Entity[s]]Controller.cs with all API endpoints.

Frontend Information

The following section includes important information and general guidelines for contributing to this project's frontend.

Providers Information

Currently implemented for a MySQL database with extensible support for other databases possible.

API Information

Following is sample API calls and basic documentation

ORDERS API

DELETE
https://localhost:7182/api/orders/DeleteOrder/{Id}
GET
https://localhost:7182/api/orders/GetOrders
https://localhost:7182/api/orders/GetOrdersByAccount/{AccountId}
POST
https://localhost:7182/api/orders/UpdateOrders
https://localhost:7182/api/orders/AddOrders
>> Use "Body->Raw->JSON" and following JSON Object
{
"accountref": 1,
"action": 3,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}
PUT
https://localhost:7182/api/orders/EditOrder/{Id}
{
"accountref": 3,
"action": 4,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}

ACCOUNT SUMMARY API

GET
https://localhost:7182/api/account_summary/GetAccount_Summary
https://localhost:7182/api/account_summary/GetAccount_Summary/{Id}
DELETE
https://localhost:7182/api/account_summary/DeleteAccount_Summary/{Id}
POST
https://localhost:7182/api/account_summary/AddAccount_Summary
{
"accountref": 3,
"availablefunds": 431.0,
"grosspositionvalue": 1.0,
}
PUT
https://localhost:7182/api/account_summary/EditAccountSummary/{Id}
{
"availablefunds": 10000000000,
"grosspositionvalue": 1.0,
}

BROKER API

GET
https://localhost:7182/api/brokers/GetBrokers
DELETE
https://localhost:7182/api/brokers/DeleteBroker
{
"name": "For Deletion"
}
POST
https://localhost:7182/api/brokers/AddBrokers
{
"name": "Test Broker",
"website": "https://www.testbrokerpostman.com/"
}

COMMISSIONS API

GET
https://localhost:7182/api/commissions/GetCommissions
DELETE
https://localhost:7182/api/commissions/DeleteCommission
{
"broker": "ASPX",
"type": 1
}
https://localhost:7182/api/commissions/DeleteByBroker
{
"broker": "ASPX"
}
POST
https://localhost:7182/api/commissions/AddCommission
{
"broker": "ASPX",
"type": 0,
"rate": 1.5
}

About

Basic Trading Data REST API

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

TradeAPI

Trading Data API and Web Interface Project.

To run the project, open TradingDB.sln inside Visual Studio 2022 (for compatibility with ASP.NET CORE 6). Press the continue buttons from the top to compile and run the program. A webpage will be available under https://localhost:7182 which links to the project. For API calls, direct them at the same URL. For instance https://localhost:7182/api/orders/GetOrders.

In order to ensure a connection to a properly configured database, setup a database using the TradeDB.sql file. Once the database is setup, point to it inside Webservice/appsettings.json inside the connection string in the following format

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Database": {
"ConnectionString": "Server = {hostname}; Port = 3306; Database = TradeDB; Uid = {username}; Pwd={password};"
}
}

The included appsettings.json file includes a connection to a temporary database which was used during the development process, and is configured with the current version of the SQL schema.

Dependencies

Uses Libraries available from NuGet.

  • Newtonsoft.JsonTradingDB and Webservice
  • MySQL.DataDatabaseLibrary
  • Microsoft.AspNetCore.Mvc.NewtonsoftJsonWebservice
  • Nest

For internal dependencies, right click Dependencies for a particular project and add the required dependencies.

  • DatabaseLibrary references TradingLibrary
  • WebService references DatabaseLibrary and TradingLibrary

Backend Information

The following section includes important information and general guidelines for contributing to this project's backend.

General Workflow For Implementing Entities

  1. Inside TradingLibrary.Models create a new model named [Entity (eg. Account)].cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties : All Attributes. Use JsonProperty as follows.
    [JsonProperty(PropertyName = "active")]
    public bool Active { get; set; }
    Methods : Relevant Methods.
    
  2. Inside DatabaseLibrary.Models create a new [Entity (eg. Account)]_db.cs

    This model should include regions:

     Constructors : Default, Parameterized
    Properties: All database attributes.
    
  3. Inside DatabaseLibrary.Helpers create a new [Entity (eg. Account)]Helper_db.cs

    This Helper should include relevant database entries and requirements for the class, and include the following:

     Add() method : returns a [Entity]_db object and takes in parameters for the object, to add a new instance.
    should do the following
    - Validate data (make sure values are defined)
    - Generate a new [Entity]_db instance
    - Add the row to the database
    - Return the instance upon success, null otherwise
    GetCollection() method : can be different filters based on specific needs of the entity, in general
    returns List<[Entity]_db> of queried objects from the database.
    
  4. Setup [Entity]Helper.cs inside Webservice.ControllerHelpers

  5. Inside Webservice.Controllers setup [Entity[s]]Controller.cs with all API endpoints.

Frontend Information

The following section includes important information and general guidelines for contributing to this project's frontend.

Providers Information

Currently implemented for a MySQL database with extensible support for other databases possible.

API Information

Following is sample API calls and basic documentation

ORDERS API

DELETE
https://localhost:7182/api/orders/DeleteOrder/{Id}
GET
https://localhost:7182/api/orders/GetOrders
https://localhost:7182/api/orders/GetOrdersByAccount/{AccountId}
POST
https://localhost:7182/api/orders/UpdateOrders
https://localhost:7182/api/orders/AddOrders
>> Use "Body->Raw->JSON" and following JSON Object
{
"accountref": 1,
"action": 3,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}
PUT
https://localhost:7182/api/orders/EditOrder/{Id}
{
"accountref": 3,
"action": 4,
"targetprice": 2.0,
"datecreated": "2021-12-09T17:38:26",
"quantity": 0,
"status": 1,
"symbol": "FB",
"broker": "IBKR"
}

ACCOUNT SUMMARY API

GET
https://localhost:7182/api/account_summary/GetAccount_Summary
https://localhost:7182/api/account_summary/GetAccount_Summary/{Id}
DELETE
https://localhost:7182/api/account_summary/DeleteAccount_Summary/{Id}
POST
https://localhost:7182/api/account_summary/AddAccount_Summary
{
"accountref": 3,
"availablefunds": 431.0,
"grosspositionvalue": 1.0,
}
PUT
https://localhost:7182/api/account_summary/EditAccountSummary/{Id}
{
"availablefunds": 10000000000,
"grosspositionvalue": 1.0,
}

BROKER API

GET
https://localhost:7182/api/brokers/GetBrokers
DELETE
https://localhost:7182/api/brokers/DeleteBroker
{
"name": "For Deletion"
}
POST
https://localhost:7182/api/brokers/AddBrokers
{
"name": "Test Broker",
"website": "https://www.testbrokerpostman.com/"
}

COMMISSIONS API

GET
https://localhost:7182/api/commissions/GetCommissions
DELETE
https://localhost:7182/api/commissions/DeleteCommission
{
"broker": "ASPX",
"type": 1
}
https://localhost:7182/api/commissions/DeleteByBroker
{
"broker": "ASPX"
}
POST
https://localhost:7182/api/commissions/AddCommission
{
"broker": "ASPX",
"type": 0,
"rate": 1.5
}

About

Basic Trading Data REST API

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages