//add this line to the using section of your strategy
using System.Net.Http;
private void sendTestSignal()
{
var loginData = new Dictionary<string, string>
{
{"secretKey", "YOUR-SECRETY-KEY" },
{"leaderUserName", "YOUR-TICKERTOCKER-USERNAME" },
{"leaderPassword", "YOUR-TICKERTOCKER-PW" }
};
var endpoint = "https://debug-prod-signals-api.tickertocker.com:443/signals/login";
var loginResponse = SendPost(endpoint, loginData).GetAwaiter().GetResult();
if (!string.IsNullOrEmpty(loginResponse))
{
//you can use your own json deserializer here but for a sample code not referencing any library, we can get the token from
//the json structured response string with a brute force search. Feel free to replace the parsing part with something like Newtonsoft json library
// dynamic loginResponceDynamic = JsonConvert.DeserializeObject(loginResponse);
// var token = (string)loginResponceDynamic.data.sessionToken;
var token = GetSessionTokenFromResponse(loginResponse);
Log("*** Token:{" + token + "}",LogLevel.Information);
var requestData = new Dictionary<string, string>
{
{ "StrategyUUID", "YOUR-UUID-HERE" },
{ "Symbol", "NFLX" },
{ "Quantity", "100" },
{ "OrderSide", "0" },
{ "OrderType", "1" },
{ "LimitPrice", "350.0" },
{ "TargetPrice", "370.0" },
{ "StopLossPrice", "349.0"},
{ "TimeInForce", "1" },
{ "Expiry", "2018-12-07T19:19:11.321Z" }
};
var signalsEndpoint = "https://prod-signals-api.tickertocker.com:443/signals/new";
var signalResponse = SendPost(signalsEndpoint, requestData, token).GetAwaiter().GetResult();
if (!string.IsNullOrEmpty(signalResponse))
{
if (!string.IsNullOrEmpty(signalResponse))
{
Log("*** New signal submission response from Ticker Tocker: " + signalResponse, LogLevel.Information);
}
}
} else
{
Log("*** Authorization to Ticker Tocker failed", LogLevel.Information);
}
}
private static async Task<string> SendPost(string url, Dictionary<string, string> data, string token = null)
{
try {
using (HttpClient client = new HttpClient())
{
var content = new FormUrlEncodedContent(data);
if (!string.IsNullOrEmpty(token)) AddHeaders(client, token);
var response = await client.PostAsync(url, content);
if (!response.IsSuccessStatusCode) return null;
return await response.Content.ReadAsStringAsync();
}
} catch (Exception ex) {
Log("*** Request to Ticker Tocker failed: " + ex.Message, LogLevel.Information);
return null;
}
}
private static void AddHeaders(HttpClient client, string token)
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Add("ContentType", "application/json");
}
private string GetSessionTokenFromResponse(string response)
{
int startPos = response.IndexOf("sessionToken");
startPos = response.IndexOf('"', "sessionToken".Length + startPos + 1);
int endPos = response.IndexOf('"', startPos + 1);
return response.Substring(startPos+1, endPos-startPos-1);
}
Comments
0 comments
Article is closed for comments.