-
Notifications
You must be signed in to change notification settings - Fork 0
/
GetHistoryMacro.cs
148 lines (129 loc) · 7.57 KB
/
GetHistoryMacro.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/*
*THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT
*WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
*INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
*OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
*PURPOSE.
*/
namespace PerSecurity_Dotnet
{
/*
* GetHistoryMacro - This class submits a gethistory request by specifying the instruments as macros and fields
* for the request parameters. This is followed by retrieve GetHistory request, to get the values
* for the fields. This class also illustrates the case when an incorrect macro is passed in the request.
*/
using System;
using System.Collections.Generic;
using System.Text;
using PerSecurity_Dotnet.PerSecurityWSDL;
internal class GetHistoryMacro
{
public void run(PerSecurity_Dotnet.PerSecurityWSDL.PerSecurityWS ps)
{
// Setting request headers
GetHistoryHeaders getHistHeaders = new GetHistoryHeaders();
DateRange dtRange = new DateRange();
Duration duration = new Duration();
duration.days = 3;
dtRange.duration = duration;
getHistHeaders.daterange = dtRange;
// Setting instruments
Instruments instrs = new Instruments();
instrs.macro = new Macro[2];
instrs.macro[0] = new Macro();
instrs.macro[0].primaryQualifier = new PrimaryQualifier();
instrs.macro[0].primaryQualifier.primaryQualifierType = MacroType.SECTYP;
instrs.macro[0].primaryQualifier.primaryQualifierValue = "OPT_CHAIN";
instrs.macro[0].secondaryQualifier = new SecondaryQualifier[1];
instrs.macro[0].secondaryQualifier[0] = new SecondaryQualifier();
instrs.macro[0].secondaryQualifier[0].secondaryQualifierOperator = SecondaryQualifierOperator.Equals;
instrs.macro[0].secondaryQualifier[0].secondaryQualifierType = SecondaryQualifierType.TICKER;
instrs.macro[0].secondaryQualifier[0].secondaryQualifierValue = "AMZN US Equity";
// A sample of incorrect macro
instrs.macro[1] = new Macro();
instrs.macro[1].primaryQualifier = new PrimaryQualifier();
instrs.macro[1].primaryQualifier.primaryQualifierType = MacroType.SECTYP;
instrs.macro[1].primaryQualifier.primaryQualifierValue = "converts_err";
instrs.macro[1].secondaryQualifier = new SecondaryQualifier[1];
instrs.macro[1].secondaryQualifier[0] = new SecondaryQualifier();
instrs.macro[1].secondaryQualifier[0].secondaryQualifierOperator = SecondaryQualifierOperator.Equals;
instrs.macro[1].secondaryQualifier[0].secondaryQualifierType = SecondaryQualifierType.TICKER;
instrs.macro[1].secondaryQualifier[0].secondaryQualifierValue = "F";
// Setting GetHistory request parameters
string[] fields = new string[] { "PX_LAST" };
SubmitGetHistoryRequest sbmtGtHistReq = new SubmitGetHistoryRequest();
sbmtGtHistReq.headers = getHistHeaders;
sbmtGtHistReq.instruments = instrs;
sbmtGtHistReq.fields = fields;
try
{
Console.WriteLine("Submit gethistory request");
submitGetHistoryRequestRequest sbmtGtHistReqReq = new submitGetHistoryRequestRequest(sbmtGtHistReq);
submitGetHistoryRequestResponse sbmtGtHistRespResp = ps.submitGetHistoryRequest(sbmtGtHistReqReq);
SubmitGetHistoryResponse sbmtGtHistResp = sbmtGtHistRespResp.submitGetHistoryResponse;
System.Console.WriteLine("status " + sbmtGtHistResp.statusCode.description);
System.Console.WriteLine("Submit gethistory request - response ID = " + sbmtGtHistResp.responseId);
Console.WriteLine("Retrieve gethistory request");
RetrieveGetHistoryRequest rtrvGtHistReq = new RetrieveGetHistoryRequest();
rtrvGtHistReq.responseId = sbmtGtHistResp.responseId;
retrieveGetHistoryResponseRequest rtrvGtHistRespReq = new retrieveGetHistoryResponseRequest(rtrvGtHistReq);
retrieveGetHistoryResponseResponse rtrvGtHistRespResp;
RetrieveGetHistoryResponse rtrvGtHistResp;
// keep polling until data becomes available
do
{
System.Threading.Thread.Sleep(PerSecurity.PollInterval);
rtrvGtHistRespResp = ps.retrieveGetHistoryResponse(rtrvGtHistRespReq);
rtrvGtHistResp = rtrvGtHistRespResp.retrieveGetHistoryResponse;
}
while (rtrvGtHistResp.statusCode.code == PerSecurity.DataNotAvailable);
// Displaying data
if (rtrvGtHistResp.statusCode.code == PerSecurity.Success)
{
for (int i = 0; i < rtrvGtHistResp.instrumentDatas.Length; i++)
{
if (rtrvGtHistResp.instrumentDatas[i].code.Equals("0"))
{
System.Console.WriteLine("Data for :" + rtrvGtHistResp.instrumentDatas[i].instrument.id +
" " + rtrvGtHistResp.instrumentDatas[i].instrument.yellowkey);
Console.WriteLine(rtrvGtHistResp.instrumentDatas[i].date.ToString());
for (int j = 0; j < rtrvGtHistResp.instrumentDatas[i].data.Length; j++)
{
Console.WriteLine(sbmtGtHistReq.fields[j] + " : " + rtrvGtHistResp.
instrumentDatas[i].data[j].value);
}
}
else
{
System.Console.WriteLine("\nError Code " + rtrvGtHistResp.instrumentDatas[i].code + ": incorrect macro. The Macro object is as follows:");
Console.WriteLine("Primary Qualifier - ");
Console.WriteLine("Primary Qualifier type:" + rtrvGtHistResp.instrumentDatas[i].
macro.primaryQualifier.primaryQualifierType);
Console.WriteLine("Primary Qualifier value:" + rtrvGtHistResp.instrumentDatas[i].
macro.primaryQualifier.primaryQualifierValue);
Console.WriteLine("Secondary Qualifier -");
for (int l = 0; l < rtrvGtHistResp.instrumentDatas[i].macro.secondaryQualifier.
Length; l++)
{
Console.WriteLine("Secondary Qualifier type :" + rtrvGtHistResp.instrumentDatas[i].
macro.secondaryQualifier[l].secondaryQualifierType);
Console.WriteLine("Secondary Qualifier Value :" + rtrvGtHistResp.instrumentDatas[i]
.macro.secondaryQualifier[l].secondaryQualifierValue);
Console.WriteLine("Secondary Qualifier Operator :" + rtrvGtHistResp.instrumentDatas[i]
.macro.secondaryQualifier[l].secondaryQualifierOperator);
}
}
}
}
else if (rtrvGtHistResp.statusCode.code == PerSecurity.RequestError)
{
Console.WriteLine("Error in the submitted request");
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}