usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingOEC.API;namespaceGF.OptionsLookup{classProgram{privatestaticint_request=-1;privatestaticContract_parentContract;privateconststringUUID="9e61a8bc-0a31-4542-ad85-33ebab0e4e86";privateconststringSymbol="ESZ6";staticvoidMain(string[]args){Console.WriteLine("Press Ctrl-C to exit");varapi=newOECClient{UUID=UUID};api.Connect("api.gainfutures.com",9200,"vic","vic",true);Console.Write("Connecting...");api.OnLoginComplete+=()=>{Console.WriteLine("Connected");Console.WriteLine($"Request symbol {Symbol}");Console.WriteLine();_request=api.SymbolLookup(Symbol).ID;//Simple contract request};api.OnLoginFailed+=reason=>Console.WriteLine($"Login failed: {reason}");api.OnSymbolLookupReceived+=(criteria,contracts)=>{if(criteria.ID==_request){_request=-1;Console.WriteLine($"First lookup done. Count: {contracts.Count}; ");if(contracts.Count<1){Console.WriteLine($"Contract {Symbol} is not available");return;}_parentContract=contracts.First;//parent contract contains options but they are not available on a client yetConsole.WriteLine($"{_parentContract}: HasOptions({_parentContract.HasOptions}), Options Count({_parentContract.Options.Count})");//Second lookup for optionsapi.SymbolLookup(newSymbolLookupCriteria{SearchText="*",ParentContract=_parentContract});Console.WriteLine();}else{//contracts contains the lookup result; //at this moment you can get the options from _parentContract.OptionsConsole.WriteLine($"Second lookup done. Count: {contracts.Count}; ");Console.WriteLine($"{_parentContract}: HasOptions({_parentContract.HasOptions}), Options Count({_parentContract.Options.Count})");Console.WriteLine();Console.WriteLine("Options: ");foreach(varcontractincontracts/*ParentContract.Options*/)Console.WriteLine(contract);}};System.Windows.Forms.Application.Run();}}}
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.