Collective2 API Documentation
Introduction
Collective2 exposes several APIs to programmers. Our goal is to allow you to customize and run many aspects of C2 functionality via your own software.
Which context: "World" or "Private Platform?"
There are two ways to use the APIs described here. We call these "contexts."
In "World Context" you will access the API as a single user, with rights to control only your own account.
Example You run a trading strategy on Collective2. Using your single-user access rights (the standard "World Context"), you can use the API to submit new trading signals to your system.
Example You use the API to subscribe yourself to a strategy. Then you use the API to request real-time buy/sell signal information for that strategy.
The "Private Platform Context" allows you to access other users' accounts. Essentially, the Private Platform allows you to run your own private instance of Collective2.
Example You can use the API to create, delete, and modify user accounts; create new trading strategies (and assign them to users of your Private Platform); manage billing for your users; turn on / stop / and modify AutoTrading for your users.
We provide documentation here for the Private Platform context of API usage, but in order to use the Private Platform, you'll need a special API key designed for Private Platform developers. Please contact our Help Desk and let us know that you'd like more information on creating a Private Platform and accessing it via the API.
Acquiring an API Key
Whether you want to use the API in World Context or Private Platform Context, you'll need an API key.
You can acquire a world-access API key instantly, for free, by following the instructions below. (If you'd like a Private Platform-enabled API key, you'll need to contact our Help Desk.)
To acquire an API Key, go to your Account Management screen:
And select the API Key tab.
Then request your key.
Using the API
Communication to and from C2 uses well-formed JSON. HTTPS must be used. You can use either GET or POST.
The endpoint format to use depends on whether you are using World or Private Platform context.
WORLD https://api.collective2.com/world/apiv3/COMMAND
PRIVATE https://api.collective2.com/platform/apiv3/PLATFORMID/COMMAND
Platform ID is only used in the Private Platform context. Your Platform ID will be assigned to you when you acquire your API Key. (Remember: To enable Private Platform API use, you need to contact us.) Regular "World" customers will not need a Private Platform ID, nor do they need to contact us before beginning to use the API.
In the API Reference below, you'll see the following notation. Here's what it means:
Rate Limits
Please try to be a good API citizen. Don't bang relentlessly on our servers. Don't slurp gigabytes of data. Don't poll the same information again and again.
We track all API usage. We're still in the process of developing a formal rate-limit policy, but a good rule of thumb is to pause a second between requests.
We reserve the right to suspend, throttle, or terminate API access if usage impacts other customers.
Acceptable Use
We want to encourage software development on the C2 Platform, not restrict it. But we also need to maintain the C2 core business.
A good rule of thumb is: If you're doing something with our API that will make it hard for us to pay our personal mortgages, we probably look unfavorably upon it. If in doubt, please contact us. We'll try to figure something out so that we can work together.
How to get support
Try the C2 Software Development Forum first. At a minimum, the answer to your question might already be there. If not, posting publicly allows other developers to benefit from your heartache. Finally: remember not to post your API key in a public message.
Alternately, contact our Help Desk. You can save a lot of time if you try to be very specific about the problem you face. If appropriate, include detailed logs of exactly what you send, and how the API responds, and why the behavior you see is not what you expect.
Using curl to test
When developing or testing new API functionality, it is often convenient to be able to POST JSON requests directly to C2's servers from a command line (linux, mac, windows). You can use the command-line program curl to do this. Here is an example of how I post the data above using curl:
In the example above, I am telling curl to send the data (everything following the -d) using application/JSON encoding. This document isn't meant to serve as a tutorial for curl, but there are a lot of good ones online. Here is one that I found helpful.
API Reference
Strategy Access API
getSystemRoster
WorldParameters
Required
Type
Min
Max
filter
string
active [default], recently_active
|
Example request
POST https://api.collective2.com/world/apiv3/getSystemRoster
{ "apikey" : "aPkNwYEInOfbN1BfNb" "filter" : "active" }
Example response
{ "ok": "1", "response": [ { "system_id": "98728140", "ownerpersonid": "55716615", "trades_stocks": "1", "trades_stocks_short": "0", "trades_options_short": "0", "minimum_portfolio_size_required": "25000", "freeTrialPeriodDays": "30", "owner_screenname": "GertjanOonk", "trades_options": "0", "created_when": "2015-12-10", "system_name": "Trade Master General", "recently_inactive_since": "0", "equitycurve_startingcapital": "25000", "monthlyFee": "10", "trades_forex": "0", "isAlive": "1", "trades_futures": "0" }, { "system_id": "97652834", "ownerpersonid": "57955364", "trades_stocks": "0", "trades_stocks_short": "0", "trades_options_short": "0", "minimum_portfolio_size_required": "10000", "freeTrialPeriodDays": "14", "owner_screenname": "jurjen_damste", "trades_options": "0", "created_when": "2015-10-07", "system_name": "PMG Trade Love", "recently_inactive_since": "0", "equitycurve_startingcapital": "10000", "monthlyFee": "149", "trades_forex": "0", "isAlive": "1", "trades_futures": "1" } ] }
getListSubscribers
Private Platform WorldParameters
Required
Type
Min
Max
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/getListSubscribers
POST https://api.collective2.com/world/apiv3/getListSubscribers
{ "systemid" : 98885884, "apikey" : "aPkNwYEInOfbN1BfNb" }
Example response
{ "ok" : "1", "response" : { "listSubscribers" : [ { "custom_subscription_guid" : null, "recurring_billing_num_failed_transacts" : null, "privateSubManagement_subscription_is_expired" : 0, "custom_subscription_amount" : null, "platform_subscription_ends_when" : "2016-03-03", "subscription_status" : "current", "subscription_started_date" : "20151230", "isPrivateSubManagement" : "1", "subscriber_country" : "United States", "custom_subscription_num_bill_periods_remaining" : null, "subscriber_personid" : "98867966", "recurring_next_billing_amount_default" : null, "systemid" : "98885884", "privateSubManagement_subscription_started_when" : "20151230", "platform_subscription_is_expired" : 0, "subscriber_email" : "AeTLv@1a85d.com", "subscription_guid" : "98972362", "custom_subscription_good_until_time" : null, "recurring_billing_turned_off_when" : null, "subscriber_first_name" : "James", "subscription_ended" : "", "subscriber_countrycode" : "us", "privateSubManagement_subscription_ends_when" : "20160303", "subscriber_last_name" : "Stewart", "subscription_schedule_guid" : null } ] } }
unsubscribeFromStrategy
Private Platform WorldParameters
Required
Type
Min
Max
actionType
List Member
autoTradePositionsAndOrders
List Member
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/unsubscribeFromStrategy
POST https://api.collective2.com/world/apiv3/unsubscribeFromStrategy
{ "actionType" : "unsubscribe_immediate", "systemid" : "78921278", "personid" : "100", "apikey" : "7vtD6enAIKvD2qHPac" }
Example response
{ "success" : { "subscription_guid" : "99124415" }, "ok" : "1" }
getSystemDetails
Private Platform WorldParameters
Required
Type
Min
Max
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/getSystemDetails
POST https://api.collective2.com/world/apiv3/getSystemDetails
{ "systemid" : 93600791, "apikey" : "RuO9yC9bw9_RMP6Cxx" }
Example response
{ "ok" : "1", "response" : { "longDescription" : null, "system_id" : "93600791", "statistics" : { "Maximum" : { "metainfo" : { "bunch" : "assuming Pareto losses only (using partial moments from Sortino statistics)", "dataset" : "Analysis based on DAILY values, last 6 months only", "group" : "DRAW DOWN STATISTICS", "suffix" : null, "helpText" : null, "category" : "Quartiles of draw downs", "precision" : "5", "prefix" : null, "multiplier" : "1.000000" }, "value" : "0" }, "avgDollarPosWinners" : { "value" : "0" }, "VaR(95%) (regression method)" : { "metainfo" : { "bunch" : "assuming Pareto losses only (using partial moments from Sortino statistics)", "dataset" : "Analysis based on DAILY values, last 6 months only", "group" : "DRAW DOWN STATISTICS", "suffix" : null, "helpText" : null, "category" : "Risk estimates based on draw downs (based on Extreme Value T", "precision" : "5", "prefix" : null, "multiplier" : "1.000000" }, "value" : "0" }, "sumDollarPosLosers" : { "value" : "0" }, "Calmar Ratio" : { "metainfo" : { "bunch" : null, "dataset" : null, "group" : "CALMAR STATISTICS", "suffix" : null, "helpText" : "A comparison of the average annual compounded rate of return and the maximum drawdown risk of commodity trading advisors and hedge funds", "category" : null, "precision" : "3", "prefix" : null, "multiplier" : "1.000000" }, "value" : null }, "Popularity (today)" : { "value" : "0" }, "avgptsfutures" : { "value" : null } }, "trades_stocks" : null, "ownerpersonid" : "98765", "test_system" : "0", "shorts_stocks" : null, "trades_own_system_certified" : "0", "creditSystemTimeUntil_epochSecs" : "1522432136", "freeTrialPeriodDays" : "21", "minimum_portfolio_size_required" : "25000", "owner_screenname" : "MatthewKlein", "trades_own_system_scaling" : "0", "trades_options" : null, "shorts_options" : null, "systemName" : "Strata Test", "equitycurve_startingcapital" : "25000", "trades_forex" : null, "createdWhen" : "2015-03-31 13:48:56", "monthlyFee" : "0", "isAlive" : "1", "marginEquityData" : { "buyPower" : 25000, "modelAccountValue" : 25000, "marginUsed" : 0, "equity" : 0, "updatedLastTimeET" : "2016-01-10 14:35:35", "cash" : 25000, "systemid" : "93600791" }, "trades_own_system_percent_followed" : "0", "trades_futures" : null, "shortDescription" : "", "trades_own_system_number_signals" : "0", "creditSystemTimeUntil_clock" : "2018-03-30 13:48:56" } }
getDesiredPositions
Private Platform WorldParameters
Required
Type
Min
Max
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/getDesiredPositions
POST https://api.collective2.com/world/apiv3/getDesiredPositions
{ "systemid" : 93059035, "apikey" : "OslqjI8mni9_ngFAQG" }
Example response
{ "ok" : "1", "response" : [ { "underlying" : null, "symbol" : "MSFT", "strike" : null, "putcall" : null, "typeofsymbol" : "stock", "quant" : "-30", "expir" : null }, { "underlying" : null, "symbol" : "@ESH6", "strike" : null, "putcall" : null, "typeofsymbol" : "future", "quant" : "1", "expir" : null } ] }
retrieveSignalsWorking
Private Platform World SubscriberParameters
Required
Type
Min
Max
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/retrieveSignalsWorking
POST https://api.collective2.com/world/apiv3/retrieveSignalsWorking
{ "systemid" : 94001001, "apikey" : "GdT9AAJUVzq2zOaEKf" }
Example response
{ "ok" : "1", "response" : [ { "isLimitOrder" : "50.439999", "strike" : "0", "status" : "working", "underlying" : "", "isMarketOrder" : "0", "tif" : "GTC", "putcall" : "", "expiration" : "", "quant" : "107", "symbol" : "WFM", "name" : "WHOLE FOODS MARKET", "instrument" : "stock", "isStopOrder" : "0", "posted_time_unix" : "1429213465", "action" : "STC", "signal_id" : "94001239", "posted_time" : "2015-04-16 15:44:25" }, { "isLimitOrder" : "35.790001", "strike" : "0", "status" : "working", "underlying" : "", "isMarketOrder" : "0", "tif" : "GTC", "putcall" : "", "expiration" : "", "quant" : "120", "symbol" : "MDLZ", "name" : "MONDELEZ INTERNATIONAL", "instrument" : "stock", "isStopOrder" : "0", "posted_time_unix" : "1429667374", "action" : "BTO", "signal_id" : "94001254", "posted_time" : "2015-04-21 21:49:34" }, { "isLimitOrder" : "0", "strike" : "0", "status" : "working", "underlying" : "", "isMarketOrder" : "1", "tif" : "GTC", "putcall" : "", "expiration" : "", "quant" : "107", "symbol" : "WFM", "name" : "WHOLE FOODS MARKET", "instrument" : "stock", "isStopOrder" : "0", "posted_time_unix" : "1429233823", "action" : "STC", "signal_id" : "94001241", "posted_time" : "2015-04-16 21:23:43" } ] }
retrieveSignalsAll
Private Platform World SubscriberParameters
Required
Type
Min
Max
systemid
integer
filter_type
List Member
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/retrieveSignalsAll
POST https://api.collective2.com/world/apiv3/retrieveSignalsAll
{ "filter_date_time_start" : "2015-03-01 00:00:00", "filter_date_time_end" : "2015-04-28 00:00:00", "filter_type" : "time_posted", "systemid" : 94001001, "apikey" : "LxABTY8eJTv2DF_uMV" }
Example response
{ "ok" : "1", "response" : [ { "isLimitOrder" : "0", "canceled_time_unix" : "0", "strike" : "0", "expired_time_unix" : "0", "status" : "traded", "expired_time" : "0", "traded_time" : "2015-03-26 10:37:50", "underlying" : "", "isMarketOrder" : "1", "tif" : "DAY", "putcall" : "", "expiration" : "", "quant" : "75", "canceled_time" : "", "symbol" : "DISH", "name" : "DISH NETWORK", "isStopOrder" : "0", "instrument" : "stock", "posted_time_unix" : "1427380670", "trade_id_closing" : "94001182", "traded_price" : "70.089996", "trade_id_opening" : "", "action" : "STC", "traded_time_unix" : "1427380670", "signal_id" : "94001184", "posted_time" : "2015-03-26 10:37:50" }, { "isLimitOrder" : "0", "canceled_time_unix" : "0", "strike" : "0", "expired_time_unix" : "0", "status" : "traded", "expired_time" : "0", "traded_time" : "2015-04-08 09:48:30", "underlying" : "", "isMarketOrder" : "1", "tif" : "GTC", "putcall" : "", "expiration" : "", "quant" : "41", "canceled_time" : "", "symbol" : "AVGO", "name" : "AVAGO TECHNOLOGIES", "isStopOrder" : "0", "instrument" : "stock", "posted_time_unix" : "1428500908", "trade_id_closing" : "94001206", "traded_price" : "126.410004", "trade_id_opening" : "", "action" : "STC", "traded_time_unix" : "1428500910", "signal_id" : "94001208", "posted_time" : "2015-04-08 09:48:28" }, { "isLimitOrder" : "0", "canceled_time_unix" : "0", "strike" : "0", "expired_time_unix" : "0", "status" : "traded", "expired_time" : "0", "traded_time" : "2015-03-03 12:41:40", "underlying" : "", "isMarketOrder" : "1", "tif" : "GTC", "putcall" : "", "expiration" : "", "quant" : "124", "canceled_time" : "", "symbol" : "FAST", "name" : "FASTENAL", "isStopOrder" : "0", "instrument" : "stock", "posted_time_unix" : "1425404485", "trade_id_closing" : "94001101", "traded_price" : "41.209999", "trade_id_opening" : "", "action" : "STC", "traded_time_unix" : "1425404500", "signal_id" : "94001103", "posted_time" : "2015-03-03 12:41:25" } ] }
requestMarginEquity
Private Platform WorldParameters
Required
Type
Min
Max
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/requestMarginEquity
POST https://api.collective2.com/world/apiv3/requestMarginEquity
{ "systemid" : 1234, "apikey" : "EJE7xgFCHgE3MqwCEz" }
Example response
{ "ok" : "0", "error" : { "title" : "Unable to access this systemid", "message" : "Credentials provided do not allow access to this systemid" } }
createNewSystem
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
longDescription
string
char
8000 char
startingcapital
integer
1000
10000000
ownerpersonid
integer
|
Optional
Type
Min
Max
site_visibility_status
integer
0
1
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/createNewSystem
{ "site_visibility_status" : 1, "startingcapital" : 25000, "ownerpersonid" : 98867966, "name" : "API System 300", "creditSystemTimeInSeconds" : 86400, "apikey" : "Y3yoRTnQ9nLUbyvXrG" }
Example response
{ "success" : { "NewSystemID" : "99124408" }, "ok" : "1" }
createNewSystem
Private Platform WorldParameters
Required
Type
Min
Max
longDescription
string
char
8000 char
startingcapital
integer
1000
10000000
ownerpersonid
integer
|
Optional
Type
Min
Max
site_visibility_status
integer
0
1
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/createNewSystem
POST https://api.collective2.com/world/apiv3/createNewSystem
{ "site_visibility_status" : 1, "startingcapital" : 25000, "ownerpersonid" : 98867966, "name" : "API System 300", "creditSystemTimeInSeconds" : 86400, "apikey" : "_XZBc7OdTDWTOuTthk" }
Example response
{ "success" : { "NewSystemID" : "99124411" }, "ok" : "1" }
changeSystemAttribute
Private Platform WorldParameters
Required
Type
Min
Max
systemid
integer
systemid
integer
name
string
3 char
40 char
longDescription
string
char
8000 char
shortDescription
string
char
255 char
ownerpersonid
integer
equitycurve_startingcapital
integer
1000
10000000
monthlyfee
integer
trialdays
integer
creditSystemTimeInSeconds
integer
0
86400*365*20
freeSignalEntryCredits
integer
0
9999999999
test_system
integer
0
1
isAlive
integer
0
1
|
Optional
Type
Min
Max
minimum_portfolio_size_required
integer
1000
10000000
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/changeSystemAttribute
POST https://api.collective2.com/world/apiv3/changeSystemAttribute
{ "minimum_portfolio_size_required" : 12345, "name" : "API System 666", "systemid" : 98885884, "apikey" : "HZh4yEk4ebqwle7T6p" }
Example response
{ "success" : { "changes" : [ "name updated", "minimum_portfolio_size_required updated" ] }, "ok" : "1" }
requestAllTrades_overview
Private Platform World SubscriberIntroduction
Without any additional params, requestAllTrades_overview returns all trades (i.e. positions) ever opened by the strategy. For older strategies, this can be a lot of data.
Use the following optional params to filter the trades (i.e. positions) returned:
openTrades: 0/1 - show only those trades still open
closedTrades: 0/1 - show only those trades completely closed out
Parameters
Required
Type
Min
Max
systemid
integer
|
Optional
Type
Min
Max
show_component_signals
integer
openTrades
integer
closedTrades
integer
onlyClosedTrades
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/requestAllTrades_overview
POST https://api.collective2.com/world/apiv3/requestAllTrades_overview
{ "systemid" : 1234, "apikey" : "QhI_63z953YmlEkbj0", "show_component_signals": 1 }
Example response
{ "ok": "1", "response": [ { "closeVWAP_timestamp": "1454074721", "strike": "44", "open_or_closed": "closed", "expir": "Dec15", "openVWAP_timestamp": "1454074721", "underlying": "APA", "closing_price_VWAP": "0.00000", "putcall": "call", "component_signals": [ { "symbol": "APA1518L44.0000", "signalid": "99996488", "action": "STO", "quant": "1", "instrument": "option", "tradeprice": "0.520000", "tradedwhen": "2015-12-14 11:25:23" }, { "symbol": "APA1518L44.0000", "signalid": "99996543", "action": "BTC", "quant": "1", "instrument": "option", "tradeprice": "0.000000", "tradedwhen": "2015-12-18 16:20:00" } ], "quant_closed": "1", "markToMarket_time": "", "opening_price_VWAP": "0.52000", "trade_id": "99996489", "symbol": "APA1518L44.0000", "quant_opened": "1", "closedWhen": "2015-12-18 16:20:00", "instrument": "option", "ptValue": "100", "PL": "52", "closedWhenUnixTimeStamp": "1450473600", "openedWhen": "2015-12-14 11:25:23", "long_or_short": "short", "symbol_description": null }, { "closeVWAP_timestamp": "1454074721", "strike": "33", "open_or_closed": "closed", "expir": "Nov15", "openVWAP_timestamp": "1454074721", "underlying": "MOS", "closing_price_VWAP": "0.00000", "putcall": "call", "component_signals": [ { "symbol": "MOS1513K33.0000", "signalid": "99996187", "action": "STO", "quant": "1", "instrument": "option", "tradeprice": "0.360000", "tradedwhen": "2015-11-09 09:53:43" }, { "symbol": "MOS1513K33.0000", "signalid": "99996259", "action": "BTC", "quant": "1", "instrument": "option", "tradeprice": "0.000000", "tradedwhen": "2015-11-13 16:20:00" } ], "quant_closed": "1", "markToMarket_time": "", "opening_price_VWAP": "0.36000", "trade_id": "99996188", "symbol": "MOS1513K33.0000", "quant_opened": "1", "closedWhen": "2015-11-13 16:20:00", "instrument": "option", "ptValue": "100", "PL": "36", "closedWhenUnixTimeStamp": "1447449600", "openedWhen": "2015-11-09 09:53:43", "long_or_short": "short", "symbol_description": null }, { "closeVWAP_timestamp": "1454074721", "strike": "33", "open_or_closed": "closed", "expir": "Nov15", "openVWAP_timestamp": "1454074721", "underlying": "MOS", "closing_price_VWAP": "0.00000", "putcall": "put", "component_signals": [ { "symbol": "MOS1506W33.0000", "signalid": "99996097", "action": "STO", "quant": "1", "instrument": "option", "tradeprice": "0.230000", "tradedwhen": "2015-11-02 14:20:21" }, { "symbol": "MOS1506W33.0000", "signalid": "99996186", "action": "BTC", "quant": "1", "instrument": "option", "tradeprice": "0.000000", "tradedwhen": "2015-11-06 00:00:00" } ], "quant_closed": "1", "markToMarket_time": "", "opening_price_VWAP": "0.23000", "trade_id": "99996098", "symbol": "MOS1506W33.0000", "quant_opened": "1", "closedWhen": "2015-11-06 00:00:00", "instrument": "option", "ptValue": "100", "PL": "23", "closedWhenUnixTimeStamp": "1446786000", "openedWhen": "2015-11-02 14:20:21", "long_or_short": "short", "symbol_description": null }, { "closeVWAP_timestamp": "1454074721", "strike": "56.5", "open_or_closed": "closed", "expir": "Dec15", "openVWAP_timestamp": "1454074721", "underlying": "FSLR", "closing_price_VWAP": "0.00000", "putcall": "call", "component_signals": [ { "symbol": "FSLR1504L56.500", "signalid": "99996391", "action": "STO", "quant": "1", "instrument": "option", "tradeprice": "1.300000", "tradedwhen": "2015-11-30 11:24:10" }, { "symbol": "FSLR1504L56.500", "signalid": "99996432", "action": "BTC", "quant": "1", "instrument": "option", "tradeprice": "0.000000", "tradedwhen": "2015-12-04 00:00:00" } ], "quant_closed": "1", "markToMarket_time": "", "opening_price_VWAP": "1.30000", "trade_id": "99996392", "symbol": "FSLR1504L56.500", "quant_opened": "1", "closedWhen": "2015-12-04 00:00:00", "instrument": "option", "ptValue": "100", "PL": "130", "closedWhenUnixTimeStamp": "1449205200", "openedWhen": "2015-11-30 11:24:10", "long_or_short": "short", "symbol_description": null }, { "closeVWAP_timestamp": "1454074721", "strike": "52", "open_or_closed": "closed", "expir": "Oct15", "openVWAP_timestamp": "1454074721", "underlying": "LULU", "closing_price_VWAP": "0.00000", "putcall": "put", "component_signals": [ { "symbol": "LULU1523V52.000", "signalid": "99995974", "action": "STO", "quant": "1", "instrument": "option", "tradeprice": "0.400000", "tradedwhen": "2015-10-19 11:14:30" }, { "symbol": "LULU1523V52.000", "signalid": "99996031", "action": "BTC", "quant": "1", "instrument": "option", "tradeprice": "0.000000", "tradedwhen": "2015-10-23 16:20:00" } ], "quant_closed": "1", "markToMarket_time": "", "opening_price_VWAP": "0.40000", "trade_id": "99995975", "symbol": "LULU1523V52.000", "quant_opened": "1", "closedWhen": "2015-10-23 16:20:00", "instrument": "option", "ptValue": "100", "PL": "40", "closedWhenUnixTimeStamp": "1445631600", "openedWhen": "2015-10-19 11:14:30", "long_or_short": "short", "symbol_description": null }, { "closeVWAP_timestamp": "1454074721", "strike": "15", "open_or_closed": "closed", "expir": "Dec15", "openVWAP_timestamp": "1454074721", "underlying": "SODA", "closing_price_VWAP": "0.00000", "putcall": "call", "component_signals": [ { "symbol": "SODA1504L15.000", "signalid": "99996366", "action": "STO", "quant": "1", "instrument": "option", "tradeprice": "0.180000", "tradedwhen": "2015-11-23 14:07:27" }, { "symbol": "SODA1504L15.000", "signalid": "99996457", "action": "BTC", "quant": "1", "instrument": "option", "tradeprice": "0.000000", "tradedwhen": "2015-12-04 16:20:00" } ], "quant_closed": "1", "markToMarket_time": "", "opening_price_VWAP": "0.18000", "trade_id": "99996367", "symbol": "SODA1504L15.000", "quant_opened": "1", "closedWhen": "2015-12-04 16:20:00", "instrument": "option", "ptValue": "100", "PL": "18", "closedWhenUnixTimeStamp": "1449264000", "openedWhen": "2015-11-23 14:07:27", "long_or_short": "short", "symbol_description": null }, { "closeVWAP_timestamp": "1454074721", "strike": "41.5", "open_or_closed": "closed", "expir": "Dec15", "openVWAP_timestamp": "1454074721", "underlying": "CF", "closing_price_VWAP": "0.00000", "putcall": "put", "component_signals": [ { "symbol": "CF1511X41.5000", "signalid": "99996427", "action": "STO", "quant": "1", "instrument": "option", "tradeprice": "0.370000", "tradedwhen": "2015-12-07 11:58:03" }, { "symbol": "CF1511X41.5000", "signalid": "99996490", "action": "BTC", "quant": "1", "instrument": "option", "tradeprice": "0.000000", "tradedwhen": "2015-12-11 00:00:00" } ], "quant_closed": "1", "markToMarket_time": "", "opening_price_VWAP": "0.37000", "trade_id": "99996428", "symbol": "CF1511X41.5000", "quant_opened": "1", "closedWhen": "2015-12-11 00:00:00", "instrument": "option", "ptValue": "100", "PL": "37", "closedWhenUnixTimeStamp": "1449810000", "openedWhen": "2015-12-07 11:58:03", "long_or_short": "short", "symbol_description": null } ] }
subscribeToStrategy
Private Platform WorldExample request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/subscribeToStrategy
POST https://api.collective2.com/world/apiv3/subscribeToStrategy
{ "systemid" : "78921278", "personid" : "100", "apikey" : "4j_xGU2epAqRN6uUki" }
Example response
{ "success" : { "subscription_guid" : "99124415" }, "ok" : "1" }
setDesiredPositions
Private Platform WorldIntroduction
This command (and its sibling, getDesiredPositions) are useful if you want to control your Model Account by specifying an exact portfolio, rather than issuing individual buys and sells.
C2 will continuously adjust your Model Account by reducing or increasing positions as needed. All trades are market orders. You can setDesiredPositions at any time, but of course C2 will be unable to adjust positions of instruments when its respective market is closed.
When this mode is in use, other signal-entry methods (API, WebTrader) will be disengaged. You can turn off this mode by sending a special portfolio of symbol=stop and typeofsymbol= stop. Also, you can manually turn off this mode through the WebTrader screen.
Parameters
Required
Type
Min
Max
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/setDesiredPositions
POST https://api.collective2.com/world/apiv3/setDesiredPositions
{ "positions" : [ { "symbol" : "MSFT", "typeofsymbol" : "stock", "quant" : -30 }, { "symbol" : "@ESH6", "typeofsymbol" : "future", "quant" : 1 } ], "systemid" : 93059035, "apikey" : "w8u0t3TIBRUk8eVSjD" }
Example response
{ "ok" : "1", "response" : [ { "underlying" : null, "symbol" : "MSFT", "strike" : null, "putcall" : null, "typeofsymbol" : "stock", "quant" : "-30", "expir" : null }, { "underlying" : null, "symbol" : "@ESH6", "strike" : null, "putcall" : null, "typeofsymbol" : "future", "quant" : "1", "expir" : null } ] }
Other information
setDesiredPositions also has two special "modes." You can force a completely flat portfolio by setting symbol='flat' and typeofsymbol='flat'. Alternately, you can turn off setDesiredPositions mode entirely by sending symbol and typeofsymbol as 'stop'. Note that this will NOT flatten your current strategy holdings. It will leave them intact and allow you to manage the Model Account either through the API or WebTrader. You can re-engage setDesiredPositions again at any time.
retrieveSystemEquity
Private Platform World SubscriberParameters
Required
Type
Min
Max
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/retrieveSystemEquity
POST https://api.collective2.com/world/apiv3/retrieveSystemEquity
{ "commission_plan" : "default", "systemid" : 46106678, "apikey" : "rjQpoGZf2SZQzDLnMi" }
Example response
{ "systemname" : "BOB DYLAN SP500", "equity_data" : [ { "strategy_with_cost" : 10000, "index_price" : "1126.20", "unix_timestamp" : "1262122832", "YYYYMMDD" : "20091229", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1126.42", "unix_timestamp" : "1262155376", "YYYYMMDD" : "20091230", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1126.42", "unix_timestamp" : "1262155376", "YYYYMMDD" : "20091230", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1115.10", "unix_timestamp" : "1262238138", "YYYYMMDD" : "20091231", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1115.10", "unix_timestamp" : "1262326942", "YYYYMMDD" : "20100101", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1115.10", "unix_timestamp" : "1262462695", "YYYYMMDD" : "20100102", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1115.10", "unix_timestamp" : "1262531936", "YYYYMMDD" : "20100103", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1115.10", "unix_timestamp" : "1262600549", "YYYYMMDD" : "20100104", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1115.10", "unix_timestamp" : "1262600549", "YYYYMMDD" : "20100104", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1115.10", "unix_timestamp" : "1262681320", "YYYYMMDD" : "20100105", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1115.10", "unix_timestamp" : "1262681320", "YYYYMMDD" : "20100105", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1136.99", "unix_timestamp" : "1262816547", "YYYYMMDD" : "20100106", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1141.48", "unix_timestamp" : "1262884829", "YYYYMMDD" : "20100107", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1144.70", "unix_timestamp" : "1262953314", "YYYYMMDD" : "20100108", "strategy_raw" : 10000 }, { "strategy_with_cost" : 10000, "index_price" : "1144.70", "unix_timestamp" : "1262953314", "YYYYMMDD" : "20100108", "strategy_raw" : 10000 } ], "ok" : "1", "initial_index_to_equity_scaling_factor" : "8.87941751021133", "systemid" : 46106678 }
Signal Entry API
Basic submitsignal format
Private PlatformWorldAll requests to the Signal API require an API key, and also a system id number. (You can find your trading system's ID number beside the system's name on the main system page.)
Here is an example API request. It tells C2 to SELL SHORT 5 contracts of the June 2015 E-Mini S&P futures contract, at 2099.25 limit. The order is a DAY order:
{ "apikey": "1kuBw5575981fsghHuA65756wy8HuAshe", "systemid": "89959688", "signal":{ "action": "SSHORT", "quant": 2, "symbol": "@ESM5", "typeofsymbol": "future", "limit": 2099.25, "duration": "DAY" } }
All C2 responses are well-formed JSON. The response I receive for the example above is:
{ "ok" : 1, "signal" : { "market" : "0", "signalid" : "94956394", "stoploss" : "", "comments" : null, "day" : "1", "systemid" : "89959688", "parkUntilYYYYMMDDHHMM" : null, "symbol" : "@ESM5", "conditionalupon" : null, "duration" : "DAY", "description" : "E-MINI S&P 500 [CME Chicago Mercantile Exchange]", "targetocagroupid" : null, "decimalprecision" : "2", "expiresat" : "1434057300", "pointvalue" : "50", "parkUntilSecs" : null, "typeofsymbol" : "future", "currency" : "USD", "quant" : "2", "limit" : "2099.25", "gtc" : "0", "profittarget" : "", "action" : "SSHORT", "ocaid" : null }, "signalid" : "94956394", "elapsed_time" : "0.6114" }
There are a few important things to notice about the C2 response.
First, C2 tells me whether the API request I made triggered any sort of error, or if it was ok. In this case, the signal request was accepted, because ok was 1.
Notice also that C2 returned a signalid number for me (94956394). This is useful because with this number I can refer to the signal in subsequent calls. For example, I can cancel-replace the order (i.e. change the limit price from 2099.25 to some other value), or cancel it completely. In a later section of this document, I will show you how to use your own signal id numbering scheme, if you choose not to use C2's signal ids.
Finally, notice that C2 echoed back to me in JSON format the signal I created. C2 filled in for my convenience a bunch of information I didn't bother to supply when I created the signal originally (the symbol description, for example, or the point value.)
Variations on submitsignal
Private PlatformWorldYou can submit market orders, limit orders, or stop orders. Here I submit a market order to buy to open (BTO) 2 shares of IBM stock at the market. The following is a DAY order.
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "89959688", "signal":{ "action": "BTO", "quant": 2, "symbol": "IBM", "typeofsymbol": "stock", "market": 1, "duration": "DAY" } }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/submitSignal'
Here is an order to buy at limit price 12.22, good til cancel (GTC).
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "89959688", "signal":{ "action": "BTO", "quant": 2, "symbol": "IBM", "typeofsymbol": "stock", "limit": 12.22, "duration": "GTC" } }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/submitSignal'
Summary of submitSignal parameters
The two examples above show us some of the parameters you can use when sending signals to C2. However, there are many others:
parameter | possible values | explanation |
---|---|---|
action | BTO STO SSHORT BTC STC | BTO = Buy to Open (establish long position) STO = Sell to Open (establish short position) SSHORT = Sell Short (generally used for stocks, but STO and SSHORT can be used interchangeably) BTC = Buy to Cover a short position STC = Sell to Close a long position |
typeofsymbol | stock option future forex | instruments like ETFs and mutual funds should be treated as a "stock" Click here for C2 Symbols Help |
duration | DAY GTC | |
stop | stop price | |
limit | limit price | |
market | 1 | Set to 1 to declare this is a market order. If you do not supply limit or stop parameters, order will be assumed to be a market order. |
profittarget | price | Used when submitting an position-entry order. Automatically create a conditional order to close the position at this limit price. When used in conjunction with stoploss, a One-Cancels-All group is created. |
stoploss | price | Used when submitting an position-entry order. Automatically create a conditional order to close the position at this stop price. When used in conjunction with profittarget, a One-Cancels-All group is created. |
conditionalupon | signalid | Do not allow this order to start "working" unless the parent order is filled (parent order has signalid = conditionalupon) |
conditionalUponSignal | JSON signal hash | Same as above, but instead of supplying already-determined signalid, you can provide nested JSON containing entire signal hash |
xreplace | signalid | Cancel the signalid specified, and if the cancel is successful, submit this new order to replace it |
Using your own signalids
Private PlatformWorldC2 creates a signalid each time you create a new buy/sell signal. It reports back to you the signalid it created, so that you can refer to the signal again.
However, some programmers might prefer to use their own signalid numbering scheme, and submit a signalid to C2 along with the signal. In these cases, C2 still assigns a global signalid to your signal, but you will be able to refer back to the signal created with either the "local" id you submitted, or the global number C2 creates.
If you use your own signalid numbering scheme, be aware that signalids must be unique for each systemid across all time. For instance, if you create signalid 100 for system id #12345, you may never again use signalid 100 for system #12345, no matter what happened to signalid 100.
Here is an example of what happens when you use your own signal numbering scheme. Remember, it is completely optional to assign your own signalid numbers. Most programmers will probably want to use the signalids automatically assigned by C2.
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "89959688", "signal":{ "action": "BTO", "quant": 2, "symbol": "GOLD", "typeofsymbol": "stock", "limit": 31.05, "duration": "GTC", "signalid":1011 } }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/submitSignal'
Here is what C2 returns to the above:
{ "ok" : 1, "signal" : { "market" : "0", "localsignalid" : "1011", "stoploss" : "", "signalid" : "94958342", "comments" : null, "day" : "0", "systemid" : "89959688", "parkUntilYYYYMMDDHHMM" : null, "symbol" : "GOLD", "conditionalupon" : null, "duration" : "GTC", "targetocagroupid" : null, "expiresat" : "2147483640", "pointvalue" : 1, "parkUntilSecs" : null, "typeofsymbol" : "stock", "currency" : "USD", "quant" : "2", "limit" : "31.05", "gtc" : "1", "profittarget" : "", "action" : "BTO", "ocaid" : null }, "signalid" : "1011", "elapsed_time" : "0.5497" }
Conditional Orders
Private PlatformWorldOnce you know a signalid, either by supplying it to C2, or by parsing it out from the JSON C2 returns, it is easy to make a conditional order. A conditional order is an order that becomes valid only once the original (parent) order is traded.
To create a conditional order, include a parameter: conditionalupon. Like this:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "89959688", "signal":{ "action": "STC", "quant": 2, "symbol": "GOLD", "typeofsymbol": "stock", "limit": 39.99, "duration": "GTC", "conditionalupon":1011 } }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/submitSignal'
You can construct conditional orders in this way -- that is by referring to a parent order's signalid within the conditionalupon parameter.
There is an alternate way to create conditionals which might please programmers. You can deliver a set of nested JSON, linking parent to child with the conditionalUponSignal parameter. Like this:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "89959688", "signal":{ "action": "STC", "quant": 2, "symbol": "SWY", "typeofsymbol": "stock", "limit": 150, "duration": "DAY", "conditionalUponSignal": { "action": "BTO", "quant": 2, "symbol": "SWY", "typeofsymbol": "stock", "limit": 22.22, "duration": "DAY" } } }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/submitSignal'
Notice what we did in the example above. We told C2 to create a Sell-to-close order, but make it conditional upon a Buy-to-open.
Bracket Orders (Entry + Stop Loss + Profit Target)
Private PlatformWorldIt's a pain in the ass to create an entry order as a "parent," then two separate conditional child orders: a stop-loss and a profit target. Why not do it all in one swoop? Like this:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "89959688", "signal":{ "action": "BTO", "quant": 2, "symbol": "ANN", "typeofsymbol": "stock", "market": 1, "duration": "GTC", "profittarget": "49.25", "stoploss": "40.00" } }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/submitSignal'
The response to the example above looks like this:
{ "ok" : 1, "signal" : { "market" : "1", "profittargetsignalid" : "94958589", "signalid" : "94958587", "stoploss" : "40.00", "comments" : null, "day" : "0", "systemid" : "89959688", "parkUntilYYYYMMDDHHMM" : null, "symbol" : "ANN", "conditionalupon" : null, "duration" : "GTC", "targetocagroupid" : "94958588", "expiresat" : "2147483640", "pointvalue" : 1, "parkUntilSecs" : null, "typeofsymbol" : "stock", "stoplosssignalid" : "94958591", "currency" : "USD", "ticktime" : "14:46:56t", "quant" : "2", "gtc" : "1", "profittarget" : "49.25", "action" : "BTO", "ocaid" : null }, "signalid" : "94958587", "elapsed_time" : "0.0465" }
A few things to notice about the response above.
The stop loss and profit target are each assigned a separate signalid by C2 (94958589 and 94958591 respectively), and thus can be referred to later. (For example, perhaps you will want to adjust your stop loss?)
You will also notice C2 created a One-Cancels-All (OCA) group(targetocagroupid = 94958588). The profit target and stop loss are both part of the same OCA group. This means that when one is canceled, expired, or traded, the other is canceled.
You can always create your own OCA groups by adding the following parameter to your signal package submitted to C2:
ocaid
Alternately, if you don't want C2 to automatically group your bracket orders into an OCA group, just include the following parameter in your signal packet:
"forcenooca": 1
When assigning your own OCA group id numbers, the same warning applies as when assigning your own signalids. OCA ID numbers must be unique within each trading system across all time. You cannot use an OCA ID that was already used as a signal ID, or vice-versa.
Cancel Orders
Private PlatformWorldCancel orders like this:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "89959688", "signalid": "94958591" }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/cancelSignal'
Notice the URL has changed from submitSignal to cancelSignal.
Here C2 tells us our request to cancel was processed successfully:
{ "ok" : 1, "signal" : { "market" : "0", "strike" : null, "signalid" : "94958591", "expir" : null, "personid" : "3", "underlying" : null, "day" : "0", "killedwhen" : "0", "tradeprice" : "0", "expiredwhen" : "0", "systemid" : "89959688", "symbol" : null, "islimit" : "0", "tradedwhen" : "0", "typeofsymbol" : null, "putcall" : null, "guid" : "94958591", "quant" : "2", "gtc" : "1", "stop" : "40", "postedwhen" : "1434048449", "signalexpiresat" : "1528656449", "action" : "STC" }, "signalid" : "94958591", "title" : "Signal canceled", "elapsed_time" : "0.2656", "message" : "Signal 94958591 successfully canceled" }
Here is an example of a cancel request that was not successful:
{ "ok" : 0, "signal" : { "market" : "1", "strike" : null, "signalid" : "94958587", "expir" : null, "personid" : "3", "underlying" : null, "day" : "0", "killedwhen" : "0", "tradeprice" : "47.56", "expiredwhen" : "0", "systemid" : "89959688", "symbol" : null, "islimit" : null, "tradedwhen" : "1434048449", "typeofsymbol" : "stock", "putcall" : null, "guid" : "94958587", "quant" : "2", "gtc" : "1", "stop" : null, "postedwhen" : "1434048449", "signalexpiresat" : "2147483640", "action" : "BTO" }, "signalid" : "94958587", "title" : "Signal was traded", "elapsed_time" : "0.0032", "message" : "Signal could not be canceled" }
Cancel-and-Replace (xreplace) orders
Private PlatformWorldIt is common to change a working order's price. For instance, you might want to change the limit price of your profit target, which has not yet been reached; or the stop price of not-yet-triggered stop loss. Rather than requiring two steps to achieve this (by first, canceling a specific signal; and second, submitting a replacement order), you can achieve the same functionality in one step, by using the parameter called cancel-and-replace, or xreplace. Like this:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "89959688", "signal":{ "action": "STC", "quant": 2, "symbol": "GM", "typeofsymbol": "stock", "limit": 46.99, "duration": "GTC", "xreplace": 94932375, "leave_oca_intact": 1 } }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/submitSignal'
This call returns:
{ "ok" : 1, "signal" : { "market" : "0", "signalid" : "94959254", "stoploss" : "", "comments" : null, "day" : "0", "systemid" : "89959688", "parkUntilYYYYMMDDHHMM" : null, "symbol" : "GM", "conditionalupon" : null, "duration" : "GTC", "targetocagroupid" : null, "expiresat" : "2147483640", "pointvalue" : 1, "parkUntilSecs" : null, "typeofsymbol" : "stock", "currency" : "USD", "xreplace" : "94932375", "quant" : "2", "limit" : "46.99", "gtc" : "1", "profittarget" : "", "action" : "STC", "ocaid" : null }, "signalid" : "94959254", "elapsed_time" : "0.8412" }
Notice the leave_oca_intact parameter. This is optional. If provided, it should be 0 or 1. When set to 1, this tells C2 that, if you are xreplacing a member of an One-Cancels-Another (OCA) group, you should leave the group intact (i.e. do not automatically cancel the sibling order in the OCA group.)
If the signal you are xreplacing is not part of an OCA group, this parameter is ignored.
Retrieve list of all strategies with real-time access
Private PlatformWorldYou can retrieve a list of all strategies for which the API key has real-time access. (This typically means systems you have subscribed to, or which you own.)
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe" }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/listAllSystems'
A typical response might look like this:
{ "response" : [ { "longDescription" : "And here is my Long description.\n\nI love carriage returns.\n\n", "system_id" : "83186981", "systemName" : "Your Trading System", "monthlyFee" : "11", "createdWhen" : "2013-09-26 16:19:23", "isAlive" : "1", "shortDescription" : "This is my so called \"short\" description, complete with umlaût.", "freeTrialPeriodDays" : "22", "creatorScreenName" : "MatthewKlein" }, { "longDescription" : "Clone of system 84690231 as of Thu Jun 11 08:03:29 2015 ET", "system_id" : "94946805", "systemName" : "Clone of system 84690231", "monthlyFee" : "50", "createdWhen" : "2014-01-15 05:13:17", "isAlive" : "1", "shortDescription" : "Clone of system 84690231 as of Thu Jun 11 08:03:29 2015 ET", "freeTrialPeriodDays" : "10", "creatorScreenName" : "MatthewKlein" }, { "longDescription" : "Zeus takes a position in stocks with the goal of achieving a 5%-10% return within a few days or weeks. All trades have a profits targets posted once the position is open.\nHowever, if you can assume a little more risk than most systems, the system can provide good returns over time.", "system_id" : "87753456", "systemName" : "ZeusTrade", "monthlyFee" : "0", "createdWhen" : "2014-05-26 06:50:45", "isAlive" : "1", "shortDescription" : "Zues specializing in trading stocks and ETFs. ", "freeTrialPeriodDays" : "0", "creatorScreenName" : "NirKertis2" }, { "longDescription" : "This system generates a random trade every minute for futures, stocks, and forex. Use it for testing C2 connectivity or for your own software development purposes. Do not trade it with real money.", "system_id" : "1234", "systemName" : "C2 Test System (Random)", "monthlyFee" : "0", "createdWhen" : "2015-06-11 16:22:22", "isAlive" : "1", "shortDescription" : "This system generates a random trade every minute for futures, stocks, and forex. Use it for testing C2 connectivity or for your own software development purposes. Do not trade it with real money.", "freeTrialPeriodDays" : "0", "creatorScreenName" : "RandomNumberGenera" }, { "longDescription" : null, "system_id" : "86425852", "systemName" : "Yo Yo Ma", "monthlyFee" : "0", "createdWhen" : "2014-03-12 10:28:15", "isAlive" : "1", "shortDescription" : "", "freeTrialPeriodDays" : "0", "creatorScreenName" : "MatthewKlein" } ] }
Retrieving open and closed position information
Private PlatformWorldYou can retrieve position information about a system like this:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "94959200" }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/requestTrades'
Alternately to request only open positions, use this:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "94959200" }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/requestTradesOpen'
The response to either will look something like this:
{ "response" : [ { "closeVWAP_timestamp" : "1434055203", "strike" : "0", "open_or_closed" : "closed", "expir" : "", "openVWAP_timestamp" : "1434055203", "underlying" : "", "closing_price_VWAP" : "45.00000", "putcall" : "", "quant_closed" : "80", "long_or_short" : "long", "markToMarket_time" : "", "trade_id" : "91826329", "symbol" : "GPRO", "opening_price_VWAP" : "56.49000", "quant_opened" : "80", "closedWhen" : "2015-02-09 10:40:08", "instrument" : "stock", "ptValue" : "1", "PL" : "-919", "closedWhenUnixTimeStamp" : "1423496408", "openedWhen" : "2015-01-13 09:48:37", "symbol_description" : "GOPRO INC. CLASS A COMMON STOS" }, { "closeVWAP_timestamp" : "1434055203", "strike" : "0", "open_or_closed" : "closed", "expir" : "", "openVWAP_timestamp" : "1434055203", "underlying" : "", "closing_price_VWAP" : "52.74000", "putcall" : "", "long_or_short" : "short", "quant_closed" : "200", "markToMarket_time" : "", "trade_id" : "90607847", "symbol" : "EVR", "opening_price_VWAP" : "50.60000", "quant_opened" : "200", "closedWhen" : "2014-11-18 10:10:41", "instrument" : "stock", "ptValue" : "1", "PL" : "428", "closedWhenUnixTimeStamp" : "1416323441", "openedWhen" : "2014-11-04 12:06:29", "symbol_description" : "EVERCORE PARTNERS" }, { "closeVWAP_timestamp" : "1434055203", "strike" : "0", "open_or_closed" : "open", "expir" : "", "openVWAP_timestamp" : "1434055203", "underlying" : "", "closing_price_VWAP" : "56.43", "putcall" : "", "long_or_short" : "long", "quant_closed" : "150", "markToMarket_time" : "2015-06-11 16:40:03", "trade_id" : "94369671", "symbol" : "EWY", "opening_price_VWAP" : "58.23390", "quant_opened" : "250", "closedWhen" : "", "instrument" : "stock", "ptValue" : "1", "PL" : "-451", "closedWhenUnixTimeStamp" : "", "openedWhen" : "2015-05-12 09:38:19", "symbol_description" : "ISHARES MSCI KOREA CAPPED IND" }, { "closeVWAP_timestamp" : "1434055204", "strike" : "0", "open_or_closed" : "closed", "expir" : "", "openVWAP_timestamp" : "1434055204", "underlying" : "", "closing_price_VWAP" : "149.30000", "putcall" : "", "long_or_short" : "long", "quant_closed" : "40", "markToMarket_time" : "", "trade_id" : "92028409", "symbol" : "UVXY", "opening_price_VWAP" : "128.01250", "quant_opened" : "40", "closedWhen" : "2015-01-29 10:16:56", "instrument" : "stock", "ptValue" : "1", "PL" : "852", "closedWhenUnixTimeStamp" : "1422544616", "openedWhen" : "2015-01-22 09:30:06", "symbol_description" : "PROSHARES ULTRA VIX SHORT-TERM" } ] }
Retrieving working signals
Private PlatformWorldYou can retrieve all working signals (i.e. signals that have not yet traded, been canceled, or expired) within a system like this:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "94959200" }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/retrieveSignalsWorking'
A typical response might look like this:
{ "response" : [ { "isLimitOrder" : "150", "symbol" : "SWY", "strike" : null, "status" : "working", "name" : "SAFEWAY", "isStopOrder" : null, "instrument" : "stock", "posted_time_unix" : "1434114076", "underlying" : null, "isMarketOrder" : "0", "tif" : "DAY", "putcall" : null, "action" : "BTO", "expiration" : null, "quant" : "1", "signal_id" : "94974799", "posted_time" : "2015-06-12 09:01:16" }, { "isLimitOrder" : "22.22", "symbol" : "SWY", "strike" : null, "status" : "working", "name" : "SAFEWAY", "isStopOrder" : null, "instrument" : "stock", "posted_time_unix" : "1434114075", "underlying" : null, "isMarketOrder" : "0", "tif" : "DAY", "putcall" : null, "action" : "BTO", "expiration" : null, "quant" : "2", "signal_id" : "94974798", "posted_time" : "2015-06-12 09:01:15" }, { "isLimitOrder" : "39.99", "symbol" : "GOLD", "strike" : null, "status" : "working", "name" : "RANDGOLD RESOURCES", "isStopOrder" : null, "instrument" : "stock", "posted_time_unix" : "1434047839", "underlying" : null, "isMarketOrder" : "0", "tif" : "GTC", "putcall" : null, "action" : "STC", "expiration" : null, "quant" : "2", "signal_id" : "94958448", "posted_time" : "2015-06-11 14:37:19" } ] }
Retrieving all signals (with filtering)
Private PlatformWorldYou can retrieve all historical signals ever submitted within a system. Because the response can be quite large, you should filter your request using a time-based filter parameter, like this:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "89959688", "filter_type": "time_posted", "filter_date_time_start": "2015-06-11 00:00:00", "filter_date_time_end": "2015-06-13 11:00:00" }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/retrieveSignalsAll'
Available filter_type values are: time_posted, time_traded, time_expired, time_canceled.
All times are New York time, regardless of the location of the exchange where the instrument is traded.
A typical response might look like this:
{ "response" : [ { "canceled_time_unix" : "0", "isLimitOrder" : "150", "strike" : null, "status" : "working", "expired_time_unix" : "0", "traded_time" : "", "expired_time" : "0", "underlying" : null, "isMarketOrder" : "0", "putcall" : null, "tif" : "DAY", "expiration" : null, "quant" : "1", "canceled_time" : "", "symbol" : "SWY", "name" : "SAFEWAY", "isStopOrder" : null, "instrument" : "stock", "posted_time_unix" : "1434114076", "action" : "BTO", "traded_time_unix" : "0", "signal_id" : "94974799", "posted_time" : "2015-06-12 09:01:16" }, { "canceled_time_unix" : "0", "isLimitOrder" : "22.22", "strike" : null, "status" : "working", "expired_time_unix" : "0", "traded_time" : "", "expired_time" : "0", "underlying" : null, "isMarketOrder" : "0", "putcall" : null, "tif" : "DAY", "expiration" : null, "quant" : "2", "canceled_time" : "", "symbol" : "SWY", "name" : "SAFEWAY", "isStopOrder" : null, "instrument" : "stock", "posted_time_unix" : "1434114075", "action" : "BTO", "traded_time_unix" : "0", "signal_id" : "94974798", "posted_time" : "2015-06-12 09:01:15" } ] }
Automatic Position Maintenance
Private PlatformWorldDepending on your trading goals, it may be simpler to tell Collective2 which symbols you want to hold in your C2 Model Account portfolio, and how large to make each position, rather than delivering specific buy and sell "signals."
If you use our Position Maintenance API, Collective2 will be responsible for placing whatever individual buy and sell signals are required to make your Model Account have only the positions you desire. C2 will use market orders -- only when relevant markets are open -- to achieve the position goals you set. See below for examples of how you can set (and get) your system's desired positions.
setDesiredPositions
Private PlatformWorldEach call to setDesiredPositions must include a list of hash elements (i.e. a list of associative arrays). Each hash element contains: symbol, typeofsymbol, and quant. Positive quantities are long positions. Negative quantities are short positions. (Note the exception, below: a special type of element denoting an empty portfolio with no positions whatsoever.)
Here is an example of how you can call setDesiredPositions:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "94679653", "positions": [ { "symbol" : "@ESM5", "typeofsymbol" : "future", "quant" : "-4" }, { "symbol" : "EURUSD", "typeofsymbol" : "forex", "quant" : "-3" }, { "symbol" : "AAPL", "typeofsymbol" : "stock", "quant" : "211" } ] }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/setDesiredPositions'
This call returns:
{ "response": [ { "underlying": null, "symbol": "EURUSD", "putcall": null, "strike": null, "typeofsymbol": "forex", "quant": "-3", "expir": null }, { "underlying": null, "symbol": "@ESM5", "putcall": null, "strike": null, "typeofsymbol": "future", "quant": "-4", "expir": null }, { "underlying": null, "symbol": "AAPL", "putcall": null, "strike": null, "typeofsymbol": "stock", "quant": "211", "expir": null } ] }
Here is how you tell setDesiredPositions that you want no positions within a strategy:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "94679653", "positions": [ { "symbol" : "flat", "typeofsymbol" : "flat", "quant" : "0" } ] }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/setDesiredPositions'
Here is how you tell setDesiredPositions to stop automatically maintaining positions. Note that this is different than telling C2 to maintain a flat position.
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "94679653", "positions": [ { "symbol" : "stop", "typeofsymbol" : "stop", "quant" : "0" } ] }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/setDesiredPositions'
getDesiredPositions
Private PlatformWorldYou can query your strategy's desired positions. Note that the information returned here will be whichever data you most recently sent via setDesiredPositions. This does not necessarily return a strategy's current positions. For that, see Retrieving open and closed position information.
Here is an example of how you can call getDesiredPositions:
curl -d '{ "apikey": "1kuBwZmJpHHHgJAHFSYGYFSYGHf1nvOV4hSGPWVwy8HuAshe", "systemid": "94679653" }' -H "Content-Type: application/json" 'https://collective2.com/world/apiv3/getDesiredPositions'
This call returns:
{ "response": [ { "underlying": null, "symbol": "EURUSD", "putcall": null, "strike": null, "typeofsymbol": "forex", "quant": "-3", "expir": null }, { "underlying": null, "symbol": "@ESM5", "putcall": null, "strike": null, "typeofsymbol": "future", "quant": "-4", "expir": null }, { "underlying": null, "symbol": "AAPL", "putcall": null, "strike": null, "typeofsymbol": "stock", "quant": "211", "expir": null } ] }
Additional Signal API Examples:
cancelSignal
Private Platform WorldParameters
Required
Type
Min
Max
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/cancelSignal
POST https://api.collective2.com/world/apiv3/cancelSignal
{ "signalid" : 99058927, "systemid" : 98885884, "apikey" : "XT3z0xJ9m8bwz31cta" }
Example response
{ "ok" : "0", "signal" : { "market" : "0", "strike" : null, "typeofsymbol" : "stock", "signalid" : "99058927", "expir" : null, "personid" : "3", "underlying" : null, "putcall" : null, "day" : "1", "gtc" : "0", "quant" : "2", "guid" : "99058927", "expiredwhen" : "0", "tradeprice" : null, "killedwhen" : "1452112519", "systemid" : "98885884", "symbol" : null, "islimit" : "99.990000", "postedwhen" : "1452112474", "stop" : "0.000000", "action" : "BTO", "signalexpiresat" : "1452114300", "tradedwhen" : "0" }, "signalid" : "99058927", "error" : { "title" : "Signal already canceled", "message" : "Signal could not be canceled" }, "elapsed_time" : "0.0010" }
submitSignal
Private Platform WorldParameters
Required
Type
Min
Max
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/submitSignal
POST https://api.collective2.com/world/apiv3/submitSignal
{ "signal" : { "market" : 1, "symbol" : "AAPL", "typeofsymbol" : "stock", "action" : "BTO", "limit" : "99.99", "duration" : "DAY", "quant" : 2 }, "systemid" : 98885884, "apikey" : "cFbmqTygmtS8RL3YYS" }
Example response
{ "ok" : "1", "signal" : { "market" : "0", "parkUntilSecs" : null, "typeofsymbol" : "stock", "stoploss" : "", "signalid" : "99124414", "comments" : null, "currency" : "USD", "day" : "1", "gtc" : "0", "quant" : "2", "limit" : "99.99", "systemid" : "98885884", "parkUntilYYYYMMDDHHMM" : null, "symbol" : "AAPL", "stop" : "0", "conditionalupon" : null, "duration" : "DAY", "targetocagroupid" : null, "expiresat" : "1452546300", "profittarget" : "", "action" : "BTO", "pointvalue" : 1, "ocaid" : null }, "signalid" : "99124414", "elapsed_time" : "0.2832" }
AutoTrade Management API
getListAvailableBrokers
Private Platform WorldParameters
Optional
Type
Min
Max
trade_forex
integer
0
1
trade_futures
integer
0
1
trade_stocks
integer
0
1
trade_options
integer
0
1
allow_short_options
integer
0
1
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/getListAvailableBrokers
POST https://api.collective2.com/world/apiv3/getListAvailableBrokers
{ "systemid" : "78921278", "personid" : "100", "apikey" : "ucOMNu5mUU9Rg8N9PA" }
Example response
{ "success" : { "parameters_in" : { "options" : null, "stocks" : null, "countrycode" : "us", "personid" : "100", "show_simulated_broker" : 1, "forex" : null, "allow_short_options" : null, "wlSiteID" : null, "futures" : null, "systemid" : "78921278" }, "brokers_available" : [ { "brokerClassImageURL" : "/images/brokers/c2LogoAutoTrade.png", "brokerClassName" : "Simulated Broker", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "Simulated Brokerage Account", "manual_trading_allowed" : "0", "broker_trades_options" : "1", "broker_trades_stocks" : "1", "personid_is_trading_here_broker_account_guid" : "42869", "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "C2DEMO", "needAccountPW" : 0, "broker_trades_forex" : "1" } ] }, { "brokerClassImageURL" : "/images/brokers/amp_160_160.png", "brokerClassName" : "AMP Clearing", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "AMP Clearing (CQG)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "AMPCQG", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "AMP Clearing (CQG, server 2)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : "AMPCQG", "broker_trades_futures" : "1", "brokercode" : "AMPCQGB", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "AMP Clearing (Rithmic, server 2)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : "AMP_RITHMIC", "broker_trades_futures" : "1", "brokercode" : "AMP_RITHMICB", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "AMP Clearing (Rithmic)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "AMP_RITHMIC", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/cqglogo160x160.png", "brokerClassName" : "CQG", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "Dorman - CQG (Futures)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "CQGDORMAN", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/danielsLogo160x160.png", "brokerClassName" : "Daniels Trading", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "CTS Daniels Trading (RJO)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "CTSDANIELRJO", "textlabel_for_broker_userid" : "User ID", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "Daniels Trading (Forex)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "0", "brokercode" : "DANIELSFX", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "1" }, { "brokername" : "Daniels Trading (OEC)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "DANIELS", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/dorman160x160.png", "brokerClassName" : "Dorman Trading", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "Dorman - CQG (Futures)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "DORMANCQG", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "Dorman Trading (CTS)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "DORMAN", "textlabel_for_broker_userid" : "User ID", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "Dorman Trading - Rithmic", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "DORMANRITHM", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "Dorman Trading CTS (server 2)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : "DORMAN", "broker_trades_futures" : "1", "brokercode" : "DORMANB", "textlabel_for_broker_userid" : "User ID", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/fxcm_large2.png", "brokerClassName" : "FXCM", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "FXCM-NY-USD", "manual_trading_allowed" : "0", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "0", "brokercode" : "FXCMLIVE", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "1" }, { "brokername" : "FXCM-UK-GBP", "manual_trading_allowed" : "0", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "0", "brokercode" : "FXCMLIVEUK", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "1" }, { "brokername" : "FXCM-UK-GBP (server 2)", "manual_trading_allowed" : "0", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : "FXCMLIVEUK", "broker_trades_futures" : "0", "brokercode" : "FXCMLIVEUKB", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "1" } ] }, { "brokerClassImageURL" : "/images/brokers/gain_large.png", "brokerClassName" : "Gain Capital", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "Gain Capital (Forex)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "0", "brokercode" : "OECLIVEFX", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "1" }, { "brokername" : "Gain Capital (Futures)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "OEC", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "The Fox Group (Gain Capital)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "FOXGRP", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "Gain Capital (Forex, Server 2)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : "OECLIVEFX", "broker_trades_futures" : "0", "brokercode" : "OECLIVEFXB", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "1" }, { "brokername" : "Gain Capital (Futures, Server 2)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : "OEC", "broker_trades_futures" : "1", "brokercode" : "OECB", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/highRidge160x160.png", "brokerClassName" : "High Ridge Futures", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "High Ridge Futures - CGQ (Futures)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "CQG_LIVE", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "High Ridge Futures - CTS (Futures)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "VISIONCTS", "textlabel_for_broker_userid" : "User ID", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "High Ridge Futures - Rithmic (ADM)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "VISIONRITH", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/ib_large.png", "brokerClassName" : "Interactive Brokers", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "Interactive Brokers (Direct Connection) (server 2)", "manual_trading_allowed" : "1", "broker_trades_options" : "1", "broker_trades_stocks" : "1", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : "IB_LIVE", "broker_trades_futures" : "1", "brokercode" : "IB_LIVEB", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "1" }, { "brokername" : "Interactive Brokers (Direct Connection)", "manual_trading_allowed" : "1", "broker_trades_options" : "1", "broker_trades_stocks" : "1", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "IB_LIVE", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "1" } ] }, { "brokerClassImageURL" : "/images/brokers/mb_large.png", "brokerClassName" : "MB Trading", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "MBTrading (Futures)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "MBTUSFUT", "textlabel_for_broker_userid" : "User name", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "MBTrading (Stocks, Options)", "manual_trading_allowed" : "1", "broker_trades_options" : "1", "broker_trades_stocks" : "1", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "MBTUSLIVE2", "textlabel_for_broker_userid" : "User name", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "MBTrading USA (Forex)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "0", "brokercode" : "MBTUSLIVE", "textlabel_for_broker_userid" : "User name", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "1" }, { "brokername" : "MBTrading (Stocks, Options) (server 2)", "manual_trading_allowed" : "1", "broker_trades_options" : "1", "broker_trades_stocks" : "1", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : "MBTUSLIVE2", "broker_trades_futures" : "1", "brokercode" : "MBTUSLIVE2B", "textlabel_for_broker_userid" : "User name", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/ninjatrader_160_160.png", "brokerClassName" : "NinjaTrader Brokerage", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "NinjaTrader Broker (CQG)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "NINJACQG", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "NinjaTrader Brokerage (CTS/Dorman)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "MIRUS", "textlabel_for_broker_userid" : "User ID", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/optimus160x160.png", "brokerClassName" : "Optimus Futures", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "Optimus Futures (ADM/Rithmic)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "OPTIMUSR", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/optionshouse_logo_160_160.png", "brokerClassName" : "OptionsHouse", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "OptionsHouse", "manual_trading_allowed" : "1", "broker_trades_options" : "1", "broker_trades_stocks" : "1", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "0", "brokercode" : "TM_LIVE", "textlabel_for_broker_userid" : "User ID #", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "OptionsHouse (server 2)", "manual_trading_allowed" : "1", "broker_trades_options" : "1", "broker_trades_stocks" : "1", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : "TM_LIVE", "broker_trades_futures" : "0", "brokercode" : "TM_LIVEB", "textlabel_for_broker_userid" : "User ID #", "needAccountPW" : 1, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] }, { "brokerClassImageURL" : "/images/brokers/tradepro160x160b.png", "brokerClassName" : "Trade Pro Futures", "is_c2_preferred" : 0, "brokerChoicesForThisParentClass" : [ { "brokername" : "Trade Pro Futures (ADM/Rithmic)", "manual_trading_allowed" : "1", "broker_trades_options" : "1", "broker_trades_stocks" : "1", "personid_is_trading_here_broker_account_guid" : 0, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "TPROADMRITH", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" }, { "brokername" : "Trade Pro Futures (Dorman/Rithmic)", "manual_trading_allowed" : "1", "broker_trades_options" : "0", "broker_trades_stocks" : "0", "personid_is_trading_here_broker_account_guid" : 0, "need_broker_userid" : 1, "onlynonusacustomers" : 0, "this_is_secondary_choice_available_only_if_brokercode_used" : null, "broker_trades_futures" : "1", "brokercode" : "TPRODORRITH", "textlabel_for_broker_userid" : "User ID", "needAccountPW" : 0, "needAccountNum" : 1, "broker_trades_forex" : "0" } ] } ] }, "ok" : "1" }
changeAutoTrade
Private Platform World SubscriberParameters
Required
Type
Min
Max
systemid
integer
|
Optional
Type
Min
Max
scalingPercentage
integer
1
max_units_futures
integer
1
max_units_forex
integer
1
max_units_options
integer
1
max_dollars_stocks
integer
100
enable_futures
integer
0
1
enable_forex
integer
0
1
enable_options
integer
0
1
enable_stocks
integer
0
1
allow_short_options
integer
0
1
stopLossDollarsPerPosition
integer
100
ignore_manual_trades_in_account
integer
0
1
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/changeAutoTrade
POST https://api.collective2.com/world/apiv3/changeAutoTrade
{ "enable_forex" : 1, "scalingPercentage" : 68, "personid" : "100", "stopLossDollarsPerPosition" : 550, "brokercode" : "C2DEMO", "max_dollars_stocks" : 15000, "max_units_forex" : 5, "apikey" : "vHsKY4ebygLiSiM32t", "systemid" : "1234" }
Example response
{ "success" : { "broker_account_guid" : "42869" }, "ok" : "1" }
stopAutoTrade
Private Platform World SubscriberParameters
Required
Type
Min
Max
systemid
integer
leavePositionsAndOrdersUntouched
integer
0
1
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/stopAutoTrade
POST https://api.collective2.com/world/apiv3/stopAutoTrade
{ "leavePositionsAndOrdersUntouched" : 0, "brokercode" : "C2DEMO", "systemid" : 1234, "personid" : "100", "apikey" : "klU2e8aWxo8ErJSC7R" }
Example response
{ "success" : { "status" : { "visiblePositionsLeftUntouched" : [] } }, "ok" : "1" }
startAutoTrade
Private Platform World SubscriberParameters
Required
Type
Min
Max
systemid
integer
broker_accountnum
string
4 char
30 char
scalingPercentage
integer
1
allow_short_options
integer
0
1
ignore_manual_trades_in_account
integer
0
1
join_trades_in_progress
integer
0
1
broker_userid
string
4 char
30 char
broker_password
string
4 char
30 char
|
Optional
Type
Min
Max
enable_futures
integer
0
1
enable_forex
integer
0
1
enable_options
integer
0
1
enable_stocks
integer
0
1
max_units_futures
integer
1
max_units_forex
integer
1
max_units_options
integer
1
max_dollars_stocks
integer
100
join_trades_in_progress
integer
0
1
stopLossDollarsPerPosition
integer
100
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/startAutoTrade
POST https://api.collective2.com/world/apiv3/startAutoTrade
{ "join_trades_in_progress" : 1, "enable_futures" : 1, "brokercode" : "C2DEMO", "scalingPercentage" : 50, "systemid" : "1234", "personid" : "100", "apikey" : "QNFKAMTpMjvBqp9XdL" }
Example response
{ "success" : { "broker_account_guid" : "42869" }, "ok" : "1" }
change_software_license_status
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
license_id
integer
|
Optional
Type
Min
Max
recurring_billing_status
integer
0
1
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/change_software_license_status
{ "payment_method" : "platform_master_account", "license_id" : "7678", "apikey" : "PK_J3uGNVcXP_RSny3" }
Example response
{ "ok" : "0", "error" : { "errors" : [ "No current license with this license_id controlled by this platform" ], "title" : "Unable to change_software_license_status", "message" : "There were problems with your request." } }
create_software_license_record_platform
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
personid
integer
license_type_requested
List Member
ui_description
string
char
30 char
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/create_software_license_record_platform
{ "payment_method" : "platform_master_account", "license_type_requested" : "autotrade_monthly", "personid" : 98867966, "apikey" : "XnY9f2nPPmQRdrka7w" }
Example response
{ "success" : { "license_id" : "7762" }, "ok" : "1" }
Private-Branded Platform API
deleteUser
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/deleteUser
{ "personid" : "99058649", "apikey" : "wxn6uhFzD8ptCwr9DZ" }
Example response
{ "ok" : "0", "error" : { "errors" : [ "Person already deleted" ], "title" : "Unable to delete user", "message" : "There were problems with your request to delete the user." } }
listAllPeople
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/listAllPeople
{ "apikey" : "rPeo9dz0z5NVcIRXCs" }
Example response
{ "ok" : "1", "people" : [ { "firstName" : "John", "current_software_license_list" : [], "person_id" : "99058649", "deleted" : "2016-01-06 15:24:05", "current_strategy_subscription_list" : [], "created" : "2016-01-06 15:23:15", "email" : "matthew@collective2.com", "LastName" : "Doe", "current_strategies_owned_list" : [], "screenName" : "newUserManChild" }, { "firstName" : "Sam", "current_software_license_list" : [ { "ends_when" : "2016-02-10 02:16", "amount_paid_for_current_period" : "99.00", "amount_to_pay_next_period" : "99.00", "license_id" : "7761", "starts_when" : "2016-01-10 02:16", "payment_method_for_next_period" : "credit_card", "payment_method_for_current_period" : "platform_master_account", "current_billing_failed_attempts" : null, "licensed_to_personid" : "98867966", "license_type_requested" : "autotrade_monthly", "recurring_billing_status" : "1" } ], "person_id" : "98867966", "deleted" : "", "current_strategy_subscription_list" : [ { "systemname" : "API System 666", "listPaymentRecords" : [], "subscription_guid" : "98972362", "started_when" : "2015-12-30 04:34", "system_id" : "98885884", "ended_when" : null } ], "created" : "2015-12-21 13:52:54", "email" : "moe@moeville.com", "LastName" : "Moe", "current_strategies_owned_list" : [ { "systemname" : "API System 300", "is_alive" : "1", "credits_status" : { "signal_credits_remaining" : "0", "time_credit_remaining_until" : "2016-01-11 02:35", "requires_credits" : 0 }, "created_when" : "2016-01-10 02:35", "is_trade_leader_strategy" : "0", "systemid" : "99124411", "transactions_list" : [] }, { "systemname" : "API System 300", "is_alive" : "1", "credits_status" : { "signal_credits_remaining" : "0", "time_credit_remaining_until" : "2016-01-11 02:35", "requires_credits" : 0 }, "created_when" : "2016-01-10 02:35", "is_trade_leader_strategy" : "0", "systemid" : "99124408", "transactions_list" : [] }, { "systemname" : "API System 300", "is_alive" : "1", "credits_status" : { "signal_credits_remaining" : "0", "time_credit_remaining_until" : "2016-01-11 02:16", "requires_credits" : 0 }, "created_when" : "2016-01-10 02:16", "is_trade_leader_strategy" : "0", "systemid" : "99124397", "transactions_list" : [] } ], "screenName" : "MoeMan2" } ] }
changePersonAttribute
Private Platform WorldParameters
Required
Type
Min
Max
firstname
string
1 char
40 char
lastname
string
1 char
40 char
password
string
6 char
30 char
email
string
1 char
60 char
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/changePersonAttribute
POST https://api.collective2.com/world/apiv3/changePersonAttribute
{ "email" : "moe@moeville.com", "firstname" : "Sam", "password" : "c2xyz0192837432sgsh", "screenname" : "MoeMan2", "lastname" : "Moe", "personid" : "98867966", "apikey" : "PByEsGpAhFP3ZQv1mW" }
Example response
{ "success" : { "changes" : [ "screenname updated", "password updated", "firstname updated", "firstname updated", "email updated" ] }, "ok" : "1" }
privateSubManagement_endSubscription
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
subscription_guid
integer
systemid
integer
systemid
integer
personid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/privateSubManagement_endSubscription
{ "subscription_guid" : 98972362, "unsubAtYYYYMMDDhhmm" : "2016-03-03 09:30", "apikey" : "YQjZoK6ggDgdP9bZdh" }
Example response
{ "success" : { "subscription_guid" : "98972362" }, "ok" : "1" }
createNewUser
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
screenname
string
4 char
20 char
firstname
string
1 char
40 char
lastname
string
1 char
40 char
password
string
6 char
30 char
email
string
1 char
60 char
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/createNewUser
{ "email" : "test1452454478@collective2.com", "firstname" : "John", "password" : "c2xyz0192837432sgsh", "lastname" : "Doe", "screenname" : "newUserManChild", "apikey" : "w0hr8mU1NS5quBVZhC" }
Example response
{ "success" : { "NewPersonID" : "99124407" }, "ok" : "1" }
privateSubManagement_createSubscription
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
systemid
integer
systemid
integer
personid
integer
|
Optional
Type
Min
Max
untilDaysFromNow
integer
1
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/privateSubManagement_createSubscription
{ "untilDaysFromNow" : 10, "systemid" : "98885884", "personid" : "98867966", "apikey" : "bPWvFsNCZd7ZRf7LqO" }
Example response
{ "success" : { "subscription_guid" : "98972362" }, "ok" : "1" }
listAllSystems
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/listAllSystems
{ "apikey" : "xPoyuXhUUYx4iXET6X" }
Example response
{ "ok" : "1", "response" : [ { "longDescription" : null, "system_id" : "99119906", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452454348", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-09 14:32:28", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-10 14:32:28" }, { "longDescription" : null, "system_id" : "99119747", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452450015", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-09 13:20:15", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-10 13:20:15" }, { "longDescription" : null, "system_id" : "99122953", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452530278", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-10 11:37:58", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-11 11:37:58" }, { "longDescription" : null, "system_id" : "99122751", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452522914", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-10 09:35:14", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-11 09:35:14" }, { "longDescription" : null, "system_id" : "99122883", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452529185", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-10 11:19:45", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-11 11:19:45" } ] }
getPersonRecord
Private Platform WorldExample request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/getPersonRecord
POST https://api.collective2.com/world/apiv3/getPersonRecord
{ "personid" : "100", "apikey" : "Zb9Z_wOLk_5izxnilm" }
Example response
{ "ok" : "1", "people" : [ { "firstName" : "Matthew", "all_strategy_subscription_list" : [ { "systemname" : "ETF Tri", "listPaymentRecords" : [], "subscription_guid" : "99124415", "started_when" : "2016-01-10 02:35", "system_id" : "78921278", "ended_when" : "2016-01-10 02:35" }, { "systemname" : "ETF Tri", "listPaymentRecords" : [], "subscription_guid" : "99124401", "started_when" : "2016-01-10 02:16", "system_id" : "78921278", "ended_when" : "2016-01-10 02:16" }, { "systemname" : "ETF Tri", "listPaymentRecords" : [], "subscription_guid" : "99122993", "started_when" : "2016-01-10 11:46", "system_id" : "78921278", "ended_when" : "2016-01-10 11:46" }, { "systemname" : "ETF Tri", "listPaymentRecords" : [], "subscription_guid" : "99122978", "started_when" : "2016-01-10 11:42", "system_id" : "78921278", "ended_when" : "2016-01-10 11:42" }, { "systemname" : "ETF Tri", "listPaymentRecords" : [], "subscription_guid" : "99122967", "started_when" : "2016-01-10 11:39", "system_id" : "78921278", "ended_when" : "2016-01-10 11:39" } ], "person_id" : "100", "autotrading_status_list" : [ { "broker_account_guid" : "42869", "scalingPercentage" : "100", "systemname" : "Volatility Factor", "stopLossDollarsPerPosition" : null, "broker_class_name" : "Simulated Broker Account", "enabled_options" : 1, "max_units_forex" : null, "autotrade_system_guid" : "96466", "systemid" : "84556311", "enabled_futures" : 1, "broker_connection_name" : "Simulated Brokerage Account", "max_units_options" : null, "broker_accountnum" : "SIM100", "max_units_futures" : null, "enabled_forex" : 1, "brokercode" : "C2DEMO", "max_dollars_stocks" : null, "allow_short_options" : 1, "enabled_stocks" : 1 } ], "created" : "2001-01-01 00:00:00", "email" : "MLK@matthewklein.org", "LastName" : "Klein", "all_software_license_list" : [ { "ends_when" : "2015-07-12 01:52", "amount_paid_for_current_period" : "99.00", "amount_to_pay_next_period" : null, "license_id" : "6763", "starts_when" : "2015-06-11 01:52", "payment_method_for_next_period" : null, "payment_method_for_current_period" : "credit_card", "current_billing_failed_attempts" : null, "licensed_to_personid" : "100", "license_type_requested" : "autotrade_monthly", "recurring_billing_status" : "0" }, { "ends_when" : "2015-05-28 01:03", "amount_paid_for_current_period" : "99.00", "amount_to_pay_next_period" : null, "license_id" : "6598", "starts_when" : "2015-04-28 01:03", "payment_method_for_next_period" : null, "payment_method_for_current_period" : "credit_card", "current_billing_failed_attempts" : null, "licensed_to_personid" : "100", "license_type_requested" : "autotrade_monthly", "recurring_billing_status" : "0" }, { "ends_when" : "2015-04-28 10:03", "amount_paid_for_current_period" : "99.00", "amount_to_pay_next_period" : "99.00", "license_id" : "6495", "starts_when" : "2015-03-29 10:03", "payment_method_for_next_period" : null, "payment_method_for_current_period" : "credit_card", "current_billing_failed_attempts" : null, "licensed_to_personid" : "100", "license_type_requested" : "autotrade_monthly", "recurring_billing_status" : "1" } ], "all_strategies_owned_list" : [ { "systemname" : "Testycular", "is_alive" : "1", "credits_status" : { "signal_credits_remaining" : "5", "time_credit_remaining_until" : null, "requires_credits" : 0 }, "created_when" : "2015-12-27 01:30", "is_trade_leader_strategy" : "0", "systemid" : "98927357", "transactions_list" : [] }, { "systemname" : "Musculature", "is_alive" : "1", "credits_status" : { "signal_credits_remaining" : "5", "time_credit_remaining_until" : null, "requires_credits" : 0 }, "created_when" : "2015-12-23 04:13", "is_trade_leader_strategy" : "0", "systemid" : "98906178", "transactions_list" : [] }, { "systemname" : "API Tester", "is_alive" : "1", "credits_status" : { "signal_credits_remaining" : "0", "time_credit_remaining_until" : "2018-06-15 03:40", "requires_credits" : 0 }, "created_when" : "2015-12-16 02:22", "is_trade_leader_strategy" : "0", "systemid" : "95056111", "transactions_list" : [] } ], "screenName" : "MatthewKlein" } ] }
toggleSystemVisibility
Private Platform WorldParameters
Required
Type
Min
Max
systemid
integer
site_visibility_status
integer
0
1
systemid
integer
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/toggleSystemVisibility
POST https://api.collective2.com/world/apiv3/toggleSystemVisibility
{ "site_visibility_status" : 0, "systemid" : 98885311, "apikey" : "oAWprecMQ7pNx5KIN9" }
Example response
{ "success" : { "newVisibilityStatus" : 0 }, "ok" : "1" }
privateSubManagement_changeSubscriptionEndTime
Private PlatformParameters
Required
Type
Min
Max
platformid
integer
subscription_guid
integer
|
Optional
Type
Min
Max
add_days_to_current_term
integer
1
|
Example request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/privateSubManagement_changeSubscriptionEndTime
{ "subscription_guid" : 98972362, "end_date_YYYYMMDD" : "2016-06-07", "apikey" : "vcI91QUXZxIM15VNZ1" }
Example response
{ "success" : { "changes" : [ "subscriptionEndTime updated" ] }, "ok" : "1" }
listAllSystems
Private Platform WorldExample request
POST https://api.collective2.com/platform/apiv3/[PLATFORMID]/listAllSystems
POST https://api.collective2.com/world/apiv3/listAllSystems
{ "apikey" : "M7URNlgk2VkmJLppO5" }
Example response
{ "ok" : "1", "response" : [ { "longDescription" : null, "system_id" : "99119906", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452454348", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-09 14:32:28", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-10 14:32:28" }, { "longDescription" : null, "system_id" : "99119747", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452450015", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-09 13:20:15", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-10 13:20:15" }, { "longDescription" : null, "system_id" : "99122953", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452530278", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-10 11:37:58", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-11 11:37:58" }, { "longDescription" : null, "system_id" : "99122751", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452522914", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-10 09:35:14", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-11 09:35:14" }, { "longDescription" : null, "system_id" : "99122883", "trades_stocks" : "0", "ownerpersonid" : "98867966", "owner_email" : "moe@moeville.com", "owner_lastname" : "Moe", "test_system" : "0", "shorts_stocks" : "0", "creditSystemTimeUntil_epochSecs" : "1452529185", "freeTrialPeriodDays" : "0", "minimum_portfolio_size_required" : "25000", "freeSignalEntryCredits" : "0", "owner_screenname" : "MoeMan2", "owner_firstname" : "Sam", "trades_options" : "0", "shorts_options" : "0", "systemName" : "API System 300", "equitycurve_startingcapital" : "25000", "trades_forex" : "0", "createdWhen" : "2016-01-10 11:19:45", "monthlyFee" : "0", "isAlive" : "1", "trades_futures" : "0", "shortDescription" : null, "site_visibility_status" : "1", "creditSystemTimeUntil_clock" : "2016-01-11 11:19:45" } ] }