Saturday, October 8, 2016

F # Trading Systems

Ek het gewerk vir 'n groot beleggingsbank 'n paar jaar gelede dat aangekondig dat hy beweeg al Quant modelle te F. Die doel agter die skakelaar was dat F is 'n funksionele programmeertaal en beskikbaar op, wat albei was wenslik kwaliteite vir hierdie spesifieke maatskappy. Ek verlaat voordat hulle begin het op die oorgang, so ek weet nie wat daarvan gekom nie. Soos vir die verwante OCaml, Jane Street gebruik beroemde dat. beantwoord 8 Februarie 11 van die 21:10 Daar was groot buzz oor F in die Stad en 'n paar banke / fondse probeer baie aggressief aan mense met F kennis en ervaring in finansies te huur. Byvoorbeeld, Luka Bolognese een van die F skrywers by Credit Suisse byna 2 jaar gelede. Ook Don Syme gebruik word om te besoek lesings te voer oor F en die moontlike aansoeke om finansiering in die Stad. beantwoord 8 Februarie 11 by 21:23 YOP is daar ook 'n paar verskansingsfondse loer vir F programmeerders in Genève uitvoering maak SRKX 9830 9 September 11 by 14:50 Enige updates vir 2015 ndash Nikos 8 Julie toe 15 09:23 Nie dat ek weet van , maar ek weet word soms gebruik as 'n platform deur (groter) batebestuur maatskappye, sodat F lyk na 'n goeie kandidaat om bestryk intensiewe werk paralleliseer. C39s benadering (en die objekgeoriënteerde benadering, in die algemeen) te hoë vlak wiskunde is asinine. Neem afgevaardigdes, 39callbacks39 en ontwerp patrone, byvoorbeeld. Dit is terme geslinger rondom OO sirkels soos hulle is super gevorderde towery, terwyl dit in werklikheid is hulle universeel as triviaal as verbygaande g (x) in f () (of, f (g (x))). Wanneer wiskunde mense loop in hierdie nonsens, dit is soos 'n siviele ingenieur stuit 'n wolkekrabber gebou uit speel-deeg, borrel-gom en Lincoln-logs. Hul gedagtes te breek, en engele sterf. â € bordeo 6 Desember 15 by 01:00 F is hoofsaaklik 'n funksionele taal nie, maar sy het ook ryk aan OO funksies. Dit maak dit baie geskik, byvoorbeeld, vir die skryf van 'n prys raamwerk en terselfdertyd maak skryfwerk Payoffs meer eenvoudig. In die lang termyn, dit spaar beslis 'n lang tyd skriftelik / ontfouting en die handhawing van models. Writing Gelyktydige Aansoeke Gebruik F Agente Gelyktydige aansoeke is programme wat verskeie take uit te voer op dieselfde tyd en hanteer die interaksie tussen hierdie take. Voorbeelde van konkurrente programme sluit ryk gebruikerkoppelvlakke, bedieners wat funksionaliteit bloot via netwerk, wolk-gebaseerde programme of handel stelsels. Soos bespreek in die vorige artikel. konkurrente programme hoef nie parallel wees. Die vereiste deurset kan dikwels verkry word net deur serializeren die versoeke deur 'n enkele draad, so lank as wat die primitiewe bedrywighede nie die draad vir 'n lang tyd te sluit (is asynchrone). Byvoorbeeld, gebruikers-koppelvlak gebruik dikwels die belangrikste GUI draad. Die ontwikkeling van programme wat verskeie interaksie take uit te voer gelyktydig moeilik wanneer die gebruik van die tradisionele opeenvolgende of-draad gebaseer argitektuur. Algemene probleme wat voortspruit uit hierdie benadering sluit lae scalability, dooiepunte of ras voorwaardes. In die vorige artikel. Ek bekendgestel F agente, wat gebruik kan word om 'n doeltreffende en skaalbare konkurrente stelsels te ontwikkel. Hierdie artikel kyk na-agent gebaseer argitektuur vir gelyktydige stelsels van 'n hoë-vlak perspektief. Dit wys hoe om agente omsluit in herbruikbare komponente en hoe om agente te komponeer 'n konkurrente te bou. In die laaste deel, sowel ook 'n paar patrone wat dikwels in konkurrente programme wat agente gebruik te verken. Bekendstelling Gelyktydige Argitektuur In teenstelling met sekwensiële of selfs parallelle stelsels, kan die kommunikasie patrone van 'n konkurrente stelsel wat gebaseer is op agente meer ingewikkeld wees. Jy kan die verskil in Figuur 1. Die sirkels stel voorwerpe of agente en pyle verteenwoordig 'n metode oproep of 'n boodskap te sien. 'N sekwensiële program het 'n enkele insette en produseer enkele uitset met net 'n enkele beheer vloei. 'N Parallelle program is soortgelyk, maar dit kan vurk en sluit aan by die beheer vloei. Aan die ander kant, kan-agent-gebaseerde stelsels ontwerp word om verskeie insette en uitsette het en 'n agent kan gekoppel word aan verskeie ander agente. Figuur 1. Die verskil tussen opeenvolgende, parallel en-agent gebaseer argitekture Soos die diagram toon, agente in 'n konkurrente stelsel word dikwels in verband met 'n groot aantal ander agente. As 'n agent direk verwys na ander agente en stuur boodskappe aan hulle, sou dit moeilik wees om te verstaan ​​hoe die stelsel werk, wat dit moeilik maak om te verander en in stand te hou. In plaas daarvan, is agente gewoonlik vervat in aktiewe voorwerpe. Die voorwerpe is geïnisialiseer en verbind later, hetsy direk of deur 'n konfigurasielêer. Skryf herbruikbare Agente Eerder as wat 'n volledige voorbeeld van 'n vasgevang agent in hierdie artikel, gaan om te fokus op die openbare koppelvlak van 'n enkele agent. Die ontwerp in so 'n manier om te demonstreer hoe verskillende soorte kommunikasie word in F. Daar is twee hoof voordele te vat agente in voorwerpe Dit maak die aansoek meer leesbare en meer onderhou. Ons kan 'n paar van die agente vir verskeie stelsels hergebruik. 'N gelyktydige stelsel moet gewoonlik agente dat sommige aansoek-spesifieke gedrag te implementeer (soos kommunikasie met die aandelebeurs of 'n berekening) en agente wat 'n paar algemene gedrag (soos toustaan ​​werk of groepering van items) te implementeer. Agente van die tweede soort is herbruikbare oor 'n wye verskeidenheid van toepassings. Lys 1 toon die publiek koppelvlak van 'n BlockingQueueAgent tipe wat 'n versameling soortgelyk aan die BlockingCollection implemente in 4. Die tou het 'n sekere kapasiteit en as dit vol is, dit blokke bellers wat probeer om meer elemente by te voeg. Wanneer die waglys is leeg, dit blokke bellers wat probeer om elemente van die tou te kry tot 'n paar elemente bygevoeg. Die belangrikste verskil tussen die F en weergawe is dat die agent gebaseer F oplossing is asynchrone en dus is dit nie eintlik blokkeer drade terwyl hulle wag vir 'n element om beskikbaar te wees. Die koppelvlak is 'n uitgebreide weergawe van 'n agent in Hoe om geïmplementeer: Skep herbruikbare Agente op MSDN en op die skrywers blog. Notering 1. Openbare koppelvlak van 'n-agent gebaseer blokkeer ry Die BlockingQueueAgent tipe ontbloot 'n enkele konstruktor en vier byvoorbeeld lede (F lid definisies lees van links na regs). Wanneer geskep, dit neem 'n aantal wat die kapasiteit van die versameling. Die koppelvlak toon die volgende drie soorte lede gemeen F agente: Asynchronous metodes (TInput - gt AsyncltTResultgt). Waarskynlik die mees algemene soort metode is 'n metode wat 'n asinchrone workflow soos AsyncEnqueue of AsyncDequeue terugkeer. Hierdie metodes stuur 'n boodskap aan die agent en dan wag totdat die agent antwoord (dit wil sê wanneer 'n element beskikbaar of wanneer dit by die tou). Hierdie metodes is tipies genoem van binne 'n asinkroniseer blok in F of die gebruik van die Taak voorwerp van C om seker te maak dat hulle nie 'n draad te sluit terwyl hulle wag. Sinchrone metodes (TInput - gt eenheid). Bedrywighede wat nie gevolg en kan onmiddellik afgehandel word blootgestel as sinchrone metodes wat eenheid terugkeer. In die voorbeeld hierbo, die Enqueue metode net stuur 'n versoek aan die agent, maar dit beteken nie wag totdat die element eintlik bygevoeg. Kennisgewings (IObservableltTValuegt). Kennisgewings van die agent wat berig word wanneer die toestand van die agent verander of wanneer 'n bewerking is voltooi kan word blootgestel as gebeure, verteenwoordig deur die IObservableltTValuegt tipe wat ook gebruik word deur Reaktiewe Uitbreidings (Rx) Raamwerk. In teenstelling met asynchrone metodes, is gebeure wat nie geaktiveer as 'n antwoord op 'n paar werking en hulle kan deur enige aantal kliënte hanteer. Herbruikbare agente soos BlockingQueueAgent en aansoek-spesifieke agente vervat as voorwerpe verskaf basiese boustene vir-agent gebaseer konkurrente programme. Die agente word gewoonlik verbind op 'n manier wat georganiseer volgens 'n paar algemene skema. - Agent gebaseer Aansoek Patrone n goed-geskrewe-agent-gebaseerde program nie die geval is nie tipies 'n ongeorganiseerde struktuur soos in die diagram in Figuur 1. Die struktuur is gewoonlik meer kompleks as in opeenvolgende of parallel programmering, omdat agente is meer buigsaam in hoe hulle kommunikeer. In hierdie afdeling kyk ons ​​na 'n paar algemene patrone vir die organisering van agente. Die patrone kan gebruik word as 'n riglyn vir die organisering van agente in die skryf van 'n sekere soort aansoeke. Die lys is geensins volledig nie, maar dit moet demonstreer hoe om te dink oor die organisering van agente in 'n konkurrente stelsel. 'N gelyktydige aansoek kan ook gekomponeer deur gebruik te maak van verskeie patrone (vir verskillende doeleindes) op dieselfde tyd. Werker Agent Die werker agent patroon (Figuur 2) is sinvol as die aansoek moet 'n paar Stateful berekeninge uit te voer op 'n gedeelde staat. Die gedeel staat beskerm word deur die agent en inkomende versoeke dat bedrywighede te roep oor die stand word outomaties serialized met behulp van die ingeboude buffer wat boodskappe afgelewer word by die agent slaan. Die werker agent kan ook veilig verkry word uit verskeie drade. Figuur 2. Werker Agente kommunikeer met ander agente onafhanklik Die werker agent gebruik kan word, byvoorbeeld wanneer 'n aansoek het 'n toestand wat verander met behulp van bevele van die gebruiker-koppelvlak, asook deur boodskappe aankom oor die netwerk. Die gebruiker-koppelvlak en netwerk komponente kan veilig opdragte aan die agent stuur (sonder blokkeer) en die agent updates die staat en snellers gebeure wat hanteer word deur die gebruiker-koppelvlak, ten einde die oog te werk. 'N Eenvoudige voorbeeld van die werker agent patroon kan gevind word in die MSDN handleiding wat wys hoe om 'n eenvoudige chat server implementeer. Die aansoek skep 'n agent wat 'n kletskamer verteenwoordig en stuur al opdragte wat verband hou met die kletskamer die agent. Gelaagde Agente Die lae agente patroon (Figuur 3) is nuttig wanneer ons dit nodig om 'n paar pre-verwerking of keur uit te voer voordat hy 'n ander agent om die eintlike werk byvoorbeeld doen, om die kas resultate of hanteer mislukkings. In hierdie patroon, die program kommunikeer met die eerste laag van agente, wat dan stuur instruksies aan die tweede laag van agente om verdere werk (en so aan tot die derde / vierde ens lae soos vereis) doen. Figuur 3. Gelaagde agente pre-proses kommunikasie van ander agente gebruik van hierdie patroon dan, wanneer die hantering van mislukkings: Die agente van die eerste laag sal werk na die agente in die tweede laag. Wanneer 'n antwoord nie in 'n redelike tyd ontvang word, kan die agent van die eerste laag nuwe agent kuit in die tweede laag, of dit kan probeer stuur die werk na 'n ander agent van die tweede laag. Net so, wanneer die uitvoering van die kas, die agente in die eerste laag kan 'n paar versoeke Hanteer die gebruik van 'n kas gevolg Bel die agente in die tweede laag om 'n uitslag te bereken indien die kas is ongeldig of nie die geval bevat nog die gevolg. Pyplyn Processing Die pyplyn verwerking patroon (Figuur 4) is handig wanneer jy wil data in verskeie stappe te verwerk. Die idee agter die patroon is wat insette tot die eerste agent van die pyplyn is gestuur. Die eerste agent doen die eerste stap van die verwerking en stuur die resultaat van die tweede agent in die pyplyn, en so aan totdat 'n finale uitslag bereken word. Figuur 4. Die pyplyn verwerking patroon gebruik verskeie agente om 'n finale uitslag Die pyplyn verwerking patroon geïmplementeer kan word met behulp van die sluit van versamelings (byvoorbeeld die BlockingQueueAgent ons gebruik as 'n voorbeeld vroeër) en, soos jy kan verwag bereken deur bewerkings wat kan neem 'n werk item uit 'n vorige tou van die pyplyn, voer die berekening en sit die werk item na die volgende ry. In hierdie vorm, kan die patroon gebruik word om die data-verwerking paralleliseer, maar die bedrag van parallelisme te beperk tot 'n redelike vlak. Toe hardloop, is al die stappe van die pyplyn uitgevoer in parallel, maar elke stap is die verwerking van hoogstens een insette op 'n slag. A blokkeer versameling beperk dan die aantal items wat aan die pyplyn en dit blokke van die oproeper wat insette stuur om die pyplyn kan bygevoeg word. Die voorbeeld pyplyn verwerking is miskien die mees komplekse van die patrone wat tot dusver bespreek, so dit is die moeite werd om te kyk na 'n struktuur van 'n moontlike beton implementering. Soos gewoonlik met patrone, kan die implementering van verskeie verskillende vorme het, so dit is net een moontlike benadering. Ek sal nie wys jou 'n volledige bronkode, maar die voorbeeld moet genoeg wees om te demonstreer hoe die patroon werk wees. Die implementering gebruik die BlockingQueueAgent bespreek in die vorige afdeling as 'n intermediêre buffer tussen die stappe van die pyplyn. Die aanbieding 2 toon 'n voorbeeld pyplyn met drie stappe. Aanbieding 2. pyplyn verwerking patroon geïmplementeer met behulp van agent gebaseer blokkeer ry Die eerste stap vragte data van 'n paar insette en die laaste berigte die verwerkte data om 'n paar uitset, so daar is slegs 'n enkele computational verwerking stap. Maar al die stappe kan 'n geruime tyd nodig om te voltooi. Beide laai en verslagdoening van data kan gedoen word met behulp van 'n paar duur I / O. Die brokkie initialisatie eerste twee toue wat gebruik word om die stappe te sluit. Die eerste stap is geïmplementeer deur die loadData workflow. Dit verkry die insette en dan asynchroon voeg dit by die tou. As die tou is 'n blok ry, kan die oproep blokkeer as die pyplyn nog al die voorheen gelaai insette verwerk. Die tweede stap (proses grootheden) verkry waarde van die vorige stap en dan noem processStep1 sommige asynchrone berekening uit te voer. Die resultaat word dan gestoor om die Stap1 tou. Die laaste stap (reportResults) tel dan die resultaat van die tou en slaan dit in 'n lêer of verslae dit met behulp van die reportResult funksie om die gebruiker-koppelvlak. Pyplyn Processing in Praktyk Die grootste voordeel van die pyplyn verwerking patroon is dat dit 'n baie eenvoudige manier om die nadeel tussen té opeenvolgende verwerking en té parallelle verwerking (wat groot oorhoofse mag hê) (wat prestasie kan verminder) te balanseer. Die individuele stappe van die pyplyn kan hardloop net vir die vorige stap bied insette en die volgende stap is gereed om meer insette te aanvaar. Elke stap is die verwerking van slegs 'n enkele insette op 'n tyd, so die aantal take wat in parallel is beperk deur die aantal stappe in die pyplyn. Die voorbeeld in Listing 2 is gebaseer op 'n-agent gebaseer beeldverwerking pyplyn, wat kan gevind word op die skrywers blog. In die werklike wêreld, het dieselfde patroon is ook gebruik in 'n analise van die mark stelsel vir energie verhandel teen E. ON. Proxy agent Die volmag agent patroon (Figuur 5) is sinvol as die werklike agent wat implemente die funksie kan nie direk verkry word of moet een of ander manier te beskerm. Die idee van die patroon is dat boodskappe om 'n gevolmagtigde agent in plaas van die werklike agent gestuur. Die twee agente het dieselfde koppelvlak (aanvaar dieselfde tipe boodskappe) en die volmag agent net stuur die boodskap aan die werklike agent, en stuur kennisgewings van die werklike agent terug na die oproeper. Hierdie patroon kan nuttig byvoorbeeld wanneer die implementering van die agent-gebaseerde kommunikasie oor die netwerk. Dit word nie ondersteun in die basis F biblioteek, maar 'n mens kan maklik implementeer 'n gevolmagtigde agent wat boodskappe sal afleveringen en stuur hulle na die werklike agent met behulp van TCP voetstukke of die gebruik van Windows Communication Foundation. Nog 'n moontlike aansoek aan te teken alle boodskappe wat na die agent is gestuur of die opsporing van 'n paar teenstrydighede in die kommunikasie. In reaksie op 'n anomalie, kan die volmag agent besluit om die werklike agent herlaai. Figuur 5. Inter-agent kommunikasie in die volmag agent patroon. Opsomming Gelyktydige aansoeke moet tipies verskeie insette te hanteer of uit te voer verskeie take op dieselfde tyd. Die tipiese vereistes sluit in sekere deurset, die vermoë om altyd te aanvaar meer insette en fail-veiligheid. Die bereiking van hierdie doelwitte met behulp van tradisionele benadering wat gebaseer is op eksplisiete threading is moeilik en fout sensitiewe. In hierdie artikel, het ons gekyk na die samestelling van gelyklopende stelsels met draad-veilige agente in F. Wanneer gekombineer met onveranderlike boodskappe, dit gee 'n makliker manier om gelyktydige stelsels te bou sonder ras voorwaardes en dooiepunte. Aansoeke gewoonlik bestaan ​​uit verskeie herbruikbare agente (te implementeer, byvoorbeeld, buffer) en aansoek-spesifieke agente (berekeninge te implementeer ens). Dit kan op baie maniere geïmplementeer, maar hulle gewoonlik met mekaar kommunikeer in 'n handvol van die algemene duidelike maniere: in die tweede helfte van hierdie artikel, het ons gekyk na vier van hierdie baie algemene kommunikasie patrone. Jy kan ook like. WIN 1000 na 'n MultiCharts Lifetime Lisensie Sommige makelaars bied 'n beter pryse, en 'n paar data voed verskaf meer historiese data. Kies dié wat jou behoeftes te pas. Selfs met 'n wen-strategie, kan net 'n kort vertraging in die uitvoering orde al die verskil maak. Outomatiese handel is 'n baie vinniger as 'n mens. Bekend as 'n quotscreenerquot, of ldquoquote boardrdquo, kan hierdie instrument wat jy monitor duisende mark simbole in 'n venster om winsgewende geleenthede te vind. EasyLanguage is 'n industrie standaard taal vir ontwikkeling strategieë en aanwysers. Dit is spesifiek gemaak vir handelaars grootste voordeel is jy kan begin in minute. Back testing is die toepassing van 'n strategie om historiese data te sien ldquohow jy donerdquo sou hê. Portefeulje back testing kan jy ontwerp en toets strategieë op verskeie simbole. 2012 t2w Members39 Choice Award Beste sagteware vir Meganiese stelsel Handelaars Beste Tegniese analise sagteware 2011 t2w Members39 Choice Award Beste Professionele Trading Platform Beste sagteware vir Intra-Dag Handelaars 2013 tegniese ontleding van aandele en kommoditeite Readers39 Choice Award semifinalis Standalone Analitiese sagteware 1000 en Bo 2012 BMT Beste van die saak toekenning Trading platform van die Jaar Futures Trading platform die YearThe Terug toets Biblioteek vir Professionele Trading Strategie Ontwikkelaars Terug toets is die proses van toetsing handel strategieë wat gebaseer is op historiese data mark te probeer om na te boots hoe 'n handel stelsel kan voer in in die toekoms. Terug toets is om handel strategie ontwikkeling wat navorsing en gehalte te verbeter is om die gesondheidsorg en vervoer bedrywe. Wie wil om te probeer om 'n ongetoetste hartmonitor of motor Niemand. Dieselfde geld vir die finansiële handel strategieë. Alle handel strategieë moet terug getoets word, new, en bekragtig voordat live gaan met die regte geld. Byna enige tegniese ontleding handel strategie getoets kan word. Terwyl dit waar is dat baie intermediêre vlak handel aansoeke te verskaf script tale wat toelaat dat handelaars om te ontwikkel en terug toets handel strategieë, het ons gevind dat daar was geen terug toets biblioteke beskikbaar vir gevorderde handel stelsel ontwikkelaars wat verkies om hul handel strategieë in 'n lae-vlak programmeertaal program tale soos C, C, en Java. So het ons 'n terug te toets enjin vir gevorderde stelsel ontwikkelaars. Nou ontwikkelaars kan strategieë te skep in 'n programmeertaal, dan weer toets en te optimaliseer die strategieë om prestasie te verbeter. BackTestLib laat ontwikkelaars terug hul handel stelsels te toets in C, C, VB, F, R, IronPython, of enige ander taal, die gebruik van tik of bar data. Dit maak nie net saak hoe jou handel stelsel is geskryf. Al wat jy hoef te doen is voorsien van 'n lys van ambagte, en die agterste toets biblioteek doen die res vir jou. BackTestLib kan jou handel stelsel prestasie met behulp van twee dosyn risiko metings insluitend Sharpe verhouding, Calmar verhouding, Sortino verhouding, maksimum Trek Down, Monte Carlo Teken Down, Total PL, Risiko om verhouding, Grootste Wins, Grootste nederlaag, Gemiddelde aantal ambagte Beloning bereken / Maand, Handel Logs en nog baie meer. Ideaal vir Strategie Optimization professionele handelaars weet alle goeie dinge kom tot 'n einde. Selfs die beste handel stelsels uiteindelik val in die verlies van tydperke, wat optimalisering of handel stelsel aftrede. Redes wissel, insluitend veranderinge in likiditeit, wisselvalligheid en onderliggende dinamika mark, sowel as ander faktore. Die BackTestLib uitgange resultate wat 'n verskeidenheid van metings gebaseer op die winsgewendheid en risiko van jou handel stelsel verteenwoordig wanneer getoets met die data waarmee dit verskaf. Kode Voorbeeld // Skep 'n paar gesimuleerde ambagte Lys Dit handel GT ambagte nuwe lys LT Handel GT () trades. Add (nuwe Handel (Datum tyd. Parse (quot1 / 1/2014 9: 30: 45,422 AMquot), SignalType. Buy, 24) ) trades. Add (nuwe Handel (Datum tyd. Parse (quot1 / 1/2014 9: 32: 33,891 AMquot), SignalType. ExitLong, 24,09)) trades. Add (nuwe Handel (Datum tyd. Parse (quot1 / 1/2014 9: 37: 12,839 AMquot), SignalType. Sell, 24,07)) trades. Add (nuwe Handel (Datum tyd. Parse (quot1 / 1/2014 9: 48: 27,488 AMquot), SignalType. Exit, 24,19)) trades. Add (nuwe Handel (Datum tyd. Parse (quot1 / 1/2014 9: 49: 16,415 AMquot), SignalType. Buy, 24)) trades. Add (nuwe Handel (Datum tyd. Parse (quot1 / 1/2014 9: 50: 45,512 AMquot), SignalType. Exit, 24,09)) trades. Add (nuwe Handel (Datum tyd. Parse (quot1 / 1/2014 9: 51: 14,212 AMquot), SignalType. Buy, 24,01)) // Begin die backtest dubbel lastPrice 24.03 BacktestResults resultate Backtester. Backtest (ambagte, lastPrice) // Uitgawe die resultate Console. WriteLine (quotTotal aantal ambagte: quot results. TotalNumberOfTrades.) Console. WriteLine (quotAverage aantal ambagte per maand: quot. results. AverageTradesPerMonth) Console. WriteLine (quotTotal aantal winsgewende bedrywe: quot results. NumberOfProfitableTrades) Console. WriteLine (quotTotal aantal verloor ambagte. quot results. NumberOfLosingTrades) Console. WriteLine (quotTotal wins. quot results. TotalProfit) Console..WriteLine (quotTotal verlies. quot results. TotalLoss) Console. WriteLine (quotPercent winsgewende bedrywe: quot results. PercentProfit.) Console. WriteLine (quotPercent winsgewende bedrywe: quot results. PercentProfit.) Console. WriteLine (quotLargest wins. quot resultate. LargestProfit) Console. WriteLine (quotLargest verlies. quot results. LargestLoss) Console. WriteLine (quotMaximum drawdown. quot results. MaximumDrawDown) Console. WriteLine (quotMaximum drawdown Monte Carlo. quot results. MaximumDrawDownMonteCarlo) Console. WriteLine (quotStandard afwyking :. quot results. StandardDeviation) Console. WriteLine (quotStandard afwyking jaargrondslag. quot results. StandardDeviationAnnualized) Console. WriteLine (quotDownside afwyking (10 Maart): quot. results. DownsideDeviationMar10) Console. WriteLine (quotValue Toegevoegde Maandeliks indeks (VAMI):. quot results. ValueAddedMonthlyIndex) Console. WriteLine (quotSharpe verhouding:. quot results. SharpeRatio) Console. WriteLine (quotSortino verhouding:. quot results. SortinoRatioMAR5) Console. WriteLine (quotAnnualized Sortino verhouding:. quot results. AnnualizedSortinoRatioMAR5) Console. WriteLine (quotSterling verhouding:. quot results. SterlingRatioMAR5) Console. WriteLine (quotCalmar verhouding:. quot results. CalmarRatio) Console. WriteLine (quotRisk om verhouding te beloon: quot resultate..RiskRewardRatio) // Wys die handel log foreach (handel handel in results. Trades) Console. WriteLine (trade. Date quot; quot trade. Signal. ToString () quot by quot trade. Price. ToString ()) F vir Trading Opsomming Phil Trelford beskryf en demonstreer gebiede waar F blink, soos domein modellering, berekening en samelopendheid. Bio Phil Trelford is 'n sagteware argitek by 'n ISV verskaffing real-time elektroniese handel sagteware. Sy loopbaan strek tot dusver meer as 20 jaar, met ondervinding in die video speletjies, ontspanning, kleinhandel en finansiële sektore. Phils onlangse kommersiële ontwikkeling werk is met C, C, SQL, JavaScript, en sluit meer as 5 jaar die ontwikkeling van F aansoeke. Vreemd Loop is 'n multi-dissiplinêre konferensie wat daarop gemik is om die ontwikkelaars en denkers bou ketting tegnologie in gebiede soos ontluikende tale, alternatiewe databasisse, concurrency, verspreide stelsels, mobiele ontwikkeling, en die web bymekaar te bring. Vreemd Loop geskep in 2009 deur sagteware ontwikkelaar Alex Miller en is nou gelei deur 'n span van St Louis-gebaseerde vriende en ontwikkelaars onder vreemde Loop LLC, 'n vir-winsgewende, maar nie besonder winsgewende onderneming. Personas onderwerpe wat verband hou Vendor inhoud Bespreek Vertel ons wat jy dink 0 Gemeenskap kommentaar Hallo vreemdeling Jy moet 'n InfoQ rekening te registreer of aanteken om kommentaar te lewer. Maar Theres soveel meer agter geregistreer. Kry die meeste uit van die InfoQ ervaring. InfoQ Weeklikse Nuusbrief Teken in op ons weeklikse e-pos nuusbrief aan al die nuwe inhoud op InfoQ Handige skakels InfoQ en al die inhoud kopiereg 169 2006-2016 C4Media Inc. InfoQ aangebied by Contegix volg. die beste ISP weve al ooit gewerk met. Privaatheidsbeleid Update profiel wat jy sal 'n e-pos aan die nuwe e-pos adres te bevestig gestuur. Dit pop-up sal self sluit in 'n paar oomblikke.


No comments:

Post a Comment