Trading Systems: Design Your System - Del 1 13 Den forrige delen av denne opplæringen så på elementene som utgjør et handelssystem og diskuterte fordelene og ulempene ved å bruke et slikt system i et levende handelsmiljø. I denne delen bygger vi på den kunnskapen ved å undersøke hvilke markeder som er spesielt velegnet til systemhandel. Vi vil da ta en mer grundig titt på de ulike sjangrene av handelssystemer. Handel i ulike markeder Aksjemarkeder Aksjemarkedet er trolig det vanligste markedet for handel, særlig blant nybegynnere. I denne arena dominerer store spillere som Warren Buffett og Merrill Lynch, og tradisjonelle verdier og vekststrategier er langt den vanligste. Likevel har mange institusjoner investert betydelig i design, utvikling og implementering av handelssystemer. Individuelle investorer er med i denne trenden, men sakte. Her er noen viktige faktorer å huske på når du bruker handelssystemer i aksjemarkedene: 13 Den store mengden aksjer som er tilgjengelig, tillater handelsmenn å teste systemer på mange forskjellige typer aksjer - alt fra ekstremt volatile over-the-counter (OTC) aksjer til ikke-flyktige blå sjetonger. Effektiviteten av handelssystemer kan begrenses av den lave likviditeten til enkelte aksjer, spesielt OTC og rosa arkproblemer. Provisjoner kan spise i fortjeneste generert av vellykkede handler, og kan øke tap. OTC og rosa ark aksjer ofte pådrar ytterligere provisjon avgifter. De viktigste handelssystemene som brukes, er de som ser etter verdi - det vil si systemer som bruker forskjellige parametere for å avgjøre om en sikkerhet er undervurdert i forhold til tidligere prestasjoner, sine jevnaldrende eller markedet generelt. Valutamarkeder Valutamarkedet, eller forex. er det største og mest flytende markedet i verden. Verdens regjeringer, banker og andre store institusjoner handler trillioner dollar på valutamarkedet hver dag. De fleste institusjonelle handelsmenn på forexen er avhengige av handelssystemer. Det samme gjelder for enkeltpersoner på forexen, men noen handel basert på økonomiske rapporter eller rentebetalinger. Her er noen viktige faktorer å huske på når du bruker handelssystemer i forexmarkedet: Likviditeten i dette markedet - på grunn av det store volumet - gjør handelssystemene mer nøyaktige og effektive. Det er ingen provisjoner i dette markedet, bare sprer seg. Derfor er det mye lettere å foreta mange transaksjoner uten å øke kostnadene. Sammenlignet med mengden aksjer eller råvarer tilgjengelig, er antall valutaer som skal handles begrenset. Men på grunn av tilgjengeligheten av eksotiske valutapar - det vil si valutaer fra mindre land - er volatilitetsområdet ikke nødvendigvis begrenset. De viktigste handelssystemene som brukes i forex er de som følger trender (et populært ordtak i markedet er trenden er din venn), eller systemer som kjøper eller selger på breakouts. Dette skyldes at økonomiske indikatorer ofte forårsaker store prisbevegelser på en gang. Futures Equity, forex og råvaremarkeder tilbyr alle futures trading. Dette er et populært kjøretøy for systemhandel på grunn av økt utnyttbar utnyttelse og økt likviditet og volatilitet. Disse faktorene kan imidlertid kutte begge veier: de kan enten forstørre gevinstene dine eller forsterke tapene dine. Av denne grunn er bruken av futures vanligvis reservert for avanserte individuelle og institusjonelle systemhandlere. Dette skyldes at handelssystemer som kan kapitalisere på futures markedet krever mye større tilpasning, bruk mer avanserte indikatorer og ta mye lenger tid å utvikle. Så, hva er best Det er opp til den enkelte investor å bestemme hvilket marked som passer best til systemhandel - hver har sine egne fordeler og ulemper. De fleste er mer kjent med aksjemarkedene, og denne kjennskapen gjør det enklere å utvikle et handelssystem. Forex er imidlertid ofte antatt å være den overlegne plattformen for å drive handelssystemer - spesielt blant mer erfarne forhandlere. Videre, hvis en næringsdrivende bestemmer seg for å kapitalisere på økt løftestang og volatilitet, er futuresalternativet alltid åpent. Til slutt ligger valget i hendene til systemutvikleren. Typer av handelssystemer Trend-Følgende systemer Den vanligste metoden for systemhandel er trend-følgesystemet. I sin mest grunnleggende form venter dette systemet bare på en betydelig prisbevegelse, og kjøper eller selger i den retningen. Denne typen system banker på håp om at disse prisbevegelsene vil holde trenden. Flytte gjennomsnittlige systemer Ofte brukt i teknisk analyse. et glidende gjennomsnitt er en indikator som bare viser gjennomsnittsprisen på en aksje over en tidsperiode. Essensen av trender er avledet av denne måling. Den vanligste måten å bestemme inn - og utreise er en crossover. Logikken bak dette er enkel: en ny trend er etablert når prisen faller over eller under dens historiske pris gjennomsnitt (trend). Her er et diagram som tegner både prisen (blå linje) og IBMs 20-dagers røde linje: Breakout Systems Det grunnleggende konseptet bak denne typen system ligner på et glidende gjennomsnittssystem. Tanken er at når en ny høy eller lav er etablert, er prisbevegelsen mest sannsynlig å fortsette i retning av breakout. En indikator som kan brukes til å bestemme breakouts er et enkelt Bollinger Band overlegg. Bollinger Bands viser gjennomsnitt av høye og lave priser, og breakouts oppstår når prisen møter kantene på bandene. Her er et diagram som plots pris (blå linje) og Bollinger Bands (grå linjer) av Microsoft: Ulemper med Trend-Følgende systemer: Empirical Decision-Making Required - Ved bestemmelse av trender er det alltid et empirisk element å vurdere: Varigheten av den historiske trenden. For eksempel kan det bevegelige gjennomsnittet være de siste 20 dagene eller de siste fem årene, så utvikleren må bestemme hvilken som er best for systemet. Andre faktorer som skal bestemmes er de gjennomsnittlige høyder og nedturer i breakout-systemer. Lagging Nature - Flytte gjennomsnitt og breakout systemer vil alltid ligge. Med andre ord, de kan aldri slå den eksakte toppen eller bunnen av en trend. Dette resulterer uunngåelig i en fortabelse av potensiell fortjeneste, noe som noen ganger kan være betydelig. Whipsaw Effect - Blant markedskreftene som er skadelige for suksessen til trend-følgende systemer, er dette en av de vanligste. Whipsaw-effekten oppstår når det bevegelige gjennomsnittet genererer et falsk signal - det vil si når gjennomsnittet faller like i området, så reverserer plutselig retningen. Dette kan føre til store tap, med mindre effektive stopp-tap og risikostyringsteknikker er ansatt. Sideways Markets - Trend-følgende systemer er, av natur, i stand til å tjene penger bare i markeder som faktisk gjør trend. Men markeder flytter også sidelengs. holde seg innenfor et visst område for en lengre periode. Ekstrem volatilitet kan forekomme - Noen ganger kan trend-følgende systemer oppleve ekstrem volatilitet, men handelsmannen må holde seg til sitt system. Manglende evne til å gjøre det vil resultere i sikret fiasko. Countertrend Systems I utgangspunktet er målet med countertrend-systemet å kjøpe på laveste laveste og selge på høyeste høyde. Hovedforskjellen mellom dette og trend-etter-systemet er at motstrømsystemet ikke er selvkorrigerende. Med andre ord er det ikke satt tid for å gå ut av posisjoner, og dette resulterer i et ubegrenset ulemper potensial. Typer Countertrend Systems Mange forskjellige typer systemer betraktes som countertrend-systemer. Ideen her er å kjøpe når momentum i en retning begynner å falme. Dette beregnes oftest ved hjelp av oscillatorer. For eksempel kan et signal genereres når stokastikk eller andre relative styrkeindikatorer faller under bestemte punkter. Det finnes andre typer motstridshandelssystemer, men alle deler samme grunnleggende mål - å kjøpe lavt og selge høyt. Ulemper ved å motvirke følgende systemer: E mpirisk beslutningsprosess påkrevd - For eksempel er en av faktorene som systemutvikleren må bestemme seg for, hvilke punkter som relativstyrkeindikatorene taper. Ekstern volatilitet kan forekomme - Disse systemene kan også oppleve ekstrem volatilitet, og en manglende evne til å holde fast i systemet til tross for denne volatiliteten, vil resultere i sikret feil. Ubegrenset ulempe - Som tidligere nevnt er det ubegrenset ulemper, fordi systemet ikke er selvkorrigerende (det er ingen angitt tid for å gå ut av posisjoner). Konklusjon Hovedmarkedene som handelssystemer egner seg for, er aksje-, valuta - og futuresmarkedet. Hvert av disse markedene har sine fordeler og ulemper. De to viktigste sjangrene av handelssystemer er trend-follow og countertrend-systemene. Til tross for forskjellene deres krever begge typer systemer, i deres utviklingsstadier, empirisk beslutningsprosesser fra utviklerens side. Også disse systemene er utsatt for ekstrem volatilitet, og dette kan kreve noe utholdenhet - det er viktig at systemhandleren holder fast i systemet hans i disse tider. I neste avdrag, velg nærmere på hvordan du designer et handelssystem og diskutere noe av programvaren som systemhandlere bruker for å gjøre livet enklere. Dette er en bok om bedriftsintegrasjon ved hjelp av meldinger. Det dokumenterer ingen spesiell teknologi eller produkt. Snarere er den designet for utviklere og integratorer ved hjelp av en rekke meldingsprodukter og - teknologier, som for eksempel MOM-meldinger og integreringspakker som tilbys av leverandører som IBM (WebSphere MQ Family), Microsoft (BizTalk), TIBCO , WebMethods, SeeBeyond, Vitria og andre Java Message Service (JMS) implementeringer inkorporert i kommersielle og åpne J2EE applikasjonsservere samt frittstående produkter Microsofts Message Queuing (MSMQ), tilgjengelig gjennom flere APIer, inkludert System. Messaging-biblioteker i Microsoft Emerging Web Services-standarder som støtter asynkrone webtjenester (for eksempel WS-ReliableMessaging) og tilhørende APIer som Suns Java API for XML Messaging (JAXM) eller Microsofts Web Services Extensions (WSE). Bedriftsintegrasjon går utover å skape et enkelt program med en distribuert n-tier-arkitektur, som gjør at et enkelt program kan distribueres på flere datamaskiner. Mens en tier i en distribuert applikasjon ikke kan kjøre av seg selv, er integrerte applikasjoner uavhengige programmer som hver kan kjøre av seg selv, men den funksjonen ved å koordinere med hverandre på en løst koblet måte. Meldinger gjør at data eller kommandoer kan sendes over nettverket ved hjelp av en send og glem-tilnærming der den som ringer sender informasjonen og deretter fortsetter med annet arbeid mens informasjonen overføres av meldingssystemet. Eventuelt kan innringeren senere bli varslet om resultatet gjennom tilbakeringing. Asynkrone samtaler og tilbakeringinger kan gjøre et design mer komplekst enn en synkron tilnærming, men et asynkront anrop kan tilbakestilles til det lykkes, noe som gjør kommunikasjonen mye mer pålitelig. Asynkron beskjed muliggjør også flere andre fordeler som for eksempel smøring av forespørsler og lastbalansering. Hvem skal lese denne boken Denne boken er utviklet for å hjelpe applikasjonsutviklere og systemintegratorer til å koble til applikasjoner ved hjelp av meldingsorienterte mellomvareprodukter: Programarkitekter og utviklere som designer og bygger komplekse bedriftsapplikasjoner som må integreres med andre applikasjoner. Vi antar at du utvikler dine applikasjoner ved hjelp av en moderne bedriftsapplikasjonsplattform som Java 2-plattformen, Enterprise Edition (J2EE) eller Microsoft-rammen. Denne boken hjelper deg å koble programmet til et meldingslag og utveksle informasjon med andre applikasjoner. Denne boken fokuserer på integrering av applikasjoner, ikke på byggeprogrammer for det, vi henviser deg til mønstre av Enterprise Application Architecture av Martin Fowler. Integrasjonsarkitekter og utviklere som designer og bygger integrasjonsløsninger som forbinder pakkede eller tilpassede applikasjoner. De fleste lesere i denne gruppen vil ha erfaring med et av de mange kommersielle integrasjonsverktøyene som IBM WebSphere MQ, TIBCO, WebMethods, SeeBeyond, Vitria, etc. Mange av disse verktøyene inneholder mønstrene som presenteres i denne boken. Denne boken hjelper leserne til å forstå de underliggende konseptene og ta trygge designbeslutninger ved hjelp av et leverandøravhengig ordforråd. Bedriftsarkitekter må opprettholde det store bildevisningen av programvaren og maskinvarevaren i et foretak. Denne boken presenterer et konsekvent språk for å beskrive omfattende integreringsløsninger som kan spredes over mange teknologier eller punktløsninger. Dette språket er også en viktig enabler for effektiv kommunikasjon mellom bedriftsarkitekten og integrasjons - og applikasjonsarkitekter og - utviklere. Hva du vil lære Denne boken forsøker ikke å gjøre forretningsmessige tilfeller for bedriftsapplikasjonsintegrering, fokuset er på hvordan man får det til å fungere. Lesere av denne boken vil lære å integrere bedriftsapplikasjoner ved å forstå: Fordelene og begrensningene i meldingen i forhold til andre integreringsteknikker. Hvordan finne ut hvilke meldekanaler dine applikasjoner trenger, hvordan du kontrollerer om flere forbrukere kan motta samme melding, og hvordan å håndtere ugyldige meldinger Når du skal sende en melding, hva den skal inneholde, og hvordan du bruker spesialmeldingsegenskaper Slik sender du en melding til det endelige målet, selv når avsenderen ikke vet hvor det er. Slik konverterer du meldinger når avsenderen og mottakeren er ikke enig i et felles format Hvordan utforme koden som knytter et program til meldingssystemet Hvordan administrere og overvåke et meldingssystem når det er i bruk som en del av bedriften Selv lesere som er kjent med disse rutinene vil ha fordel av å ha dem dokumentert og kunne bruke dem til å lette kommunikasjonen med sine kolleger. Hva denne boken ikke dekker Vi tror at enhver bok som sportsvirksomheten ordet i tittelen sannsynligvis vil falle inn i en av tre kategorier. Enten forsøker den å dekke hele bredden av emnet og vil bli tvunget til å slutte med detaljert veiledning om hvordan man implementerer virkelige løsninger. Eller boken vil gi spesifikk praktisk veiledning om utviklingen av faktiske løsninger, men er tvunget til å begrense omfanget av fagområdet det adresserer. Til slutt vil bøker som forsøker å gjøre begge, sannsynligvis aldri bli ferdig eller publiseres så sent som å være irrelevante. Vi valgte det andre valget og forhåpentligvis opprettet en bok som hjelper folk med å skape bedre integrasjonsløsninger, selv om vi måtte begrense omfanget av boka. Emner som vi ville elsket å diskutere, men måtte ekskludere for ikke å falle inn i kategorien tre feller, inkluderer sikkerhet, kompleks datakartlegging, arbeidsflyt, regelmotorer, skalerbarhet og robusthet og distribuert transaksjonsbehandling (XA, smoking og lignende) . Vi valgte asynkron messaging som vekt på denne boken fordi den er full av interessante designproblemer og avvik og gir en ren abstraksjon fra den mange implementeringen som tilbys av ulike integrasjonsleverandører. Denne boken er heller ikke en veiledning på en bestemt messaging eller middleware-teknologi. Du finner eksempler basert på en rekke forskjellige teknologier i denne boken, for eksempel JMS, MSMQ, TIBCO, Microsoft BizTalk, XSL etc. Vi inkluderte disse eksemplene for illustrative formål for å vise leserne hvordan mønsteret kunne oversettes til en faktisk implementering. Hvis du er interessert i å lære mer om noen av disse spesifikke teknologiene, kan du se en av bøkene som er referert til i bibliografien eller en av de mange online ressursene. Hvordan denne boken er organisert Kjernen i boken inneholder 65 mønstre som danner et mønster språk. Bøker som Design Patterns. Mønsterorientert programvarearkitektur. Core J2EE Patterns. og mønstre av Enterprise Application Architecture har popularisert tanken på å bruke mønstre for å dokumentere dataprogrammeringsteknikker. Konseptet med mønstre og mønster språk ble opprinnelig brukt til by og bygningsarkitektur av Christopher Alexander i hans seminalverk Et mønster språk og en tidløs måte å bygge på. For å hjelpe leseren til å designe en integrasjonsløsning, representerer hvert mønster en beslutning som leseren må gjøre, forklarer overvejelsene som påvirker beslutningen, og presenterer en velansatt løsning for å lede beslutningen. Et mønster språk er en web av relaterte mønstre der hvert mønster fører til andre, veileder leseren gjennom beslutningsprosessen. Denne tilnærmingen er en kraftig teknikk for å dokumentere ekspertviten, slik at den lett kan forstås og brukes av ikke-eksperter. Et mønster språk lærer leseren hvordan man løser et ubegrenset utvalg av problemer innenfor et begrenset problemrom. Fordi det samlede problemet som blir løst, er annerledes hver gang, banen gjennom mønstrene og hvordan de brukes, er også unik. På denne måten ble denne boken skrevet for alle som bruker meldings - eller integrasjonsverktøy for noe formål, men kan brukes spesielt for deg og den spesifikke bruken av meldinger du står overfor. Mønstre beskriver ofte aksepterte løsninger på gjentatte problemer, så hvis du er en erfaren utvikler av meldingsorienterte integrasjonsløsninger, vil mange av disse mønstrene virke kjent for deg. Likevel, selv om du allerede kjenner igjen de fleste av disse mønstrene, er det fortsatt verdi i å gjennomgå denne boken. Denne boken bør validere din hardt opptjente forståelse av hvordan du bruker meldinger. Det gir deg en konsolidert referanse for å hjelpe deg med å formidle din kunnskap effektivt til mindre erfarne kolleger. Det dokumenterer også detaljer om løsninger og forhold mellom dem som du kanskje ikke har vært oppmerksom på. Endelig gir mønsternavnet deg et felles ordforråd for effektivt å diskutere integrasjonsdesignalternativer med dine kolleger. Bekreftelser Som de fleste bøker har Enterprise Integration Patterns vært en lang tid i å gjøre. Ideen om å skrive om meldingsbaserte integrasjonsmønstre går tilbake til sommeren 2001 da Martin jobbet på mønstre av Enterprise Application Architecture. På den tiden slo det Kyle at mens P av EAA snakket mye om hvordan man oppretter applikasjoner, berører det bare kort om hvordan man integrerer dem. Denne ideen var utgangspunktet for en rekke møter mellom Martin og Kyle som også inkluderte Rachel Reinitz og John Crupi. Bobby sluttet seg til disse diskusjonene høsten 2001, etterfulgt av Gregor i begynnelsen av 2002. Den følgende sommeren sendte konsernet to papirer for gjennomgang på møtet Språkprogrammer (PLoP) konferanse, en forfatter i fellesskap av Bobby og Kyle og den andre av Gregor . Etter konferansen fokuserte Kyle og Martin på egne bokprosjekter mens Gregor og Bobby fusjonerte sine papirer for å danne grunnlaget for boka. Samtidig gikk enterpriseintegrationpatterns nettsted for å tillate integrasjonsarkitekter og utviklere over hele verden å delta i den raske utviklingen av innholdet. Da de jobbet på boken, inviterte Gregor og Bobby bidragsytere til å hjelpe ut med bøker innholdet. Omtrent to år etter Kyles opprinnelige ide, kom det endelige manuskriptet til utgiveren. Denne boken ville ikke vært mulig uten hjelp fra en lang liste over bidragsytere. Navn her. Om Cover Picture Det vanlige temaet for bøker i Martin Fowler Signature Series er et bilde av en bro. På en eller annen måte lyktes det, fordi temaet ville skape en bedre kamp for en bok om integrasjon. For tusenvis av år har broer bidratt til å koble folk fra forskjellige kyster, fjell eller sider av veien. Vi valgte et bilde av Taiko-bashi-broen på Sumiyoshi-taisha-helligdommen i Osaka, Japan for sin enkle eleganse og skjønnhet. Som en Shinto-helligdommen dedikert til vaktgudinnen for sjømenn, ble den opprinnelig oppført ved siden av vannet. Interessant har landutvinning presset vannet bort, slik at helligdommen i dag står nesten tre miles inn i landet. Noen 3 millioner mennesker besøker dette helligdommen i begynnelsen av et nytt år. Vil du holde deg oppdatert Følg min blogg. Ønsker å lese mer i dybden Sjekk ut artiklene mine. Ønsker å se meg live Se hvor jeg snakker neste. Finn den fulle beskrivelsen av dette mønsteret i: Enterprise Integration Patterns Gregor Hohpe og Bobby Woolf ISBN 0321200683 650 sider Addison-Wesley Fra Enterprise Integration til Enterprise Transformation: Min nye bok beskriver hvordan arkitekter kan spille en kritisk rolle i IT-transformasjon ved å bruke sine tekniske, kommunikasjon og organisatoriske ferdigheter med 37 episoder fra storskala enterprise IT. Deler av denne siden er gjort tilgjengelig under Creative Commons Attribution-lisensen. Du kan gjenbruke mønsterikonet, mønsternavnet, problemet og løsningsoppgavene (i fet skrift) og skissen under denne lisensen. Andre deler av teksten, som teksttekster eller fulltekstteksten, er beskyttet av copyright. Real-time applikasjoner krever deterministisk ytelse, som utelukker Java og andre søppeloppsamlede språk. C og C er de språkene du velger for sanntidssystemer. Jeg tror at når du refererer til algoritmisk handel, betyr du faktisk høyfrekvent handel (HFT). Kombinasjon av sanntids - og ytelsessystemer: Solid grunnleggende arkitektur HW-overveielse Profilering og datastyrt optimalisering Grunnarkitektur Grunnleggende arkitektur omfatter å bruke kunnskap om stor-O-ytelse, og forstå dataskalaen på forskjellige punkter i programmet. Hvor mange kjerner Hva er cachekonsensensituasjonen Er NUMA involvert Hvor viktig er prosessoraffinitet Vis meg flytdiagrammer og skjul tabeller, og jeg skal fortsette å bli mystified. Vis meg dine bord, og jeg vant039t trenger vanligvis flytdiagrammer de er helt åpenbare. Fred Brooks, The Mythical Man Month Du må få dine datastrukturer og grensesnitt rett. Uten de riktige datastrukturene, er programmet ditt dømt til ytelse helvete. Du må ta tilstrekkelig tid og omsorg med grensesnittene dine, slik at du kan variere implementeringen uten å påvirke klientene. Kode i hast, angre på fritid. For eksempel, under kode gjennomgang av et klientmeldingsgrensesnitt, fant vi at det var utilsiktet to forløp over meldingene, en nestet inne i den andre. Kodevurderingen ble utløst fordi under ugunstige forhold forverret behandlingstiden fra 1 til 10 ms. Utviklerne var overbevist om at siden behandlingen av en enkelt melding tok 1us, måtte 10ms være et problem andre steder. Hva er det største antallet meldinger du ser i meldingskøen 100, vi begrenser det hardt til 100 meldinger. Du har en O (N2) prosessering, noe som betyr at med 100 meldinger du er 10010010.000X bremser det en enkelt melding. Hva er 1us 10.000 10ms Endre algoritmen slik at hver melding ble vurdert bare når forbedret worst case-ytelse til betydelig mindre enn 1ms. Corner Cases Matter I et annet tilfelle brukte vi svakt i tilbakekallingsmetodene for asynkron IO. Så lenge systemene var i steady state, kunne vi komme seg bort med å være lat og bruke sharedptr overalt. Imidlertid forhindret denne bruken av sharedptr ren avslutning med asynkron IO. Bruken av svakt, som observerer sharedptr og kan bare fremmes til brukbar sharedptr så lenge den refererte ressursen fortsatt eksisterer, var kritisk for å rydde ned. Noen lagmedlemmer hevdet at vi aldri slår av strømmen bare. Ved å fikse problemer som forhindret ren avstenging, adresserte vi imidlertid de vanskelige å reprodusere feilene som skjedde da en asynkron IO-forespørsel ble trukket tilbake. Vanlige designmønstre Producer-Forbruker med en tråd-sikker kø som tilkoblings - og betingelsesvariabel varsling. Dette frigjør produsenten til å gjøre mer arbeid så snart det signaliserer tilstandsvariabelen. Forbrukeren er effektiv fordi den blokkerer på OS-gitt (og effektiv) tilstandsvariabel. Meldingsmønster leverer pakkedata til en abstraktkalt mottaker. Ansvaret for å oversette det abstrakte navnet til en konkret leveringsmekanisme og endepunkt håndteres i meldingsbiblioteket. Trådbassenger forhåndsinnstille en rekke tråder, og disse tråder er tildelt etter behov for å jobbe en bestemt oppgave, og deretter returnert til bassenget for gjenbruk. Asynkron IO er en kodeteknikk som utfyller meldingsmønsteret og trådbassene. Programmet gjør en IO-forespørsel og gir en tilbakeringingsfunksjon som påberopes av operativsystemet når IO er fullført. Dette er effektivt fordi CPUer er størrelsesordener raskere enn IO. Øker Asio-biblioteket er en stor hjelp her for bærbar, asynkron IO. Polling - Ja, din operativsystem professor fortalte deg at polling er ineffektiv. Det er, men det gir lavere ventetidsrespons som avbryter handlers. Spesielt når du har dusinvis av kjerner tilgjengelig, gir en kjerne til hver 40 Gb IO-port mye fornuft. sharedptr - Det er vanskelig å rettferdiggjøre ikke å bruke sharedptr (eller lignende) med mindre og til profilering viser et uakseptabelt overhead. Etter å ha gjort det profilerte, nektet jeg en ellers attraktiv jobbtilbud fordi lederprogrammøren sa til meg: Alle som ikke kan huske når de skal frigjøre sine ressurser, burde ikke være programmering for meg. Ja, og jeg slutter å bruke sikkerhetsbelter når jeg kjører fordi hvis jeg ikke kan unngå en ulykke, bør jeg ikke drive en bil. Event Drive Architecture hvor hvert program registrerer meldingshåndteringsprogrammer for det utløser bestemte kodestykker gjennom en betingelsesvariabel. Ideelt sett registreres meldingshåndteringsprogrammer ved oppstart, og det er et enkelt blokkert anrop i søknaden venter på meldinger. Blokkering på et enkelt punkt gjør det mye lettere å spore ned låser. En av de største ukjente sannhetene i moderne programmering er at mennesker er spektakulært dårlige forutsi hvor resultatflaskehalsen vil være. Vi ville gjøre det bra å overholde snekkere loven, måle to ganger, kuttet en gang. Jeg jobbet på masteroppgaven min, og jeg gikk inn i en prestasjonsproblemer. Jeg visste at koden min sto sterkt på integrasjon, så jeg tilbrakte en uke med optimalisering av koden med Intel Performance Primitives-biblioteket, håndjustering, etc. I den siste uken hadde jeg spidret integrasjonen med en imponerende 60. Dessverre, da jeg kjørte den generelle søknaden i håpløs forventning jeg var skuffet over det. For å profilere, fant jeg ut at 60 forbedringen av integrasjonstiden ble oversatt til en 3 forbedring i total applikasjonsytelse. Profilering viste at over 80 av programtiden var brukt på de ulike instruksjonene I386EXCHANGEINTERLOCK. Vel, jeg hadde kjøpt den raskeste PCen jeg kunne for prosjektet, som var en dual prosessor (ikke dual core) Athlon. Denne instruksjonen brukes til å synkronisere hurtigbuffere. Ved å bruke en enkeltlinjekommando, SetProcessorAffinity, fikk jeg en 5x hastighetsforbedringslesning. 2.2k Visninger middot View Oppvoter middot Ikke for Reproduksjon Jeg er i ferd med å designe en handelsapplikasjon som vil bruke en Markets API for å plassere bestillinger på markedet. Dette er ikke en komplisert søknad om høy ytelsesalgoritmisk handel av typen som finnes i investeringsbanker. Dette er bare et lite personlig søknad som vil handle kanskje to eller tre ganger om dagen, avhengig av markedstilstendighetene. Søknaden vil bestå av følgende modulpakker: Strategier - De faktiske handelsalgoritmer Analytics - Klassene for å analysere levende priser på markedet for å produsere buysell signaler Tjenester - Klassene som brukes for å opprettholde en forbindelse til markedet, hente markedsinformasjon og plassere buysell bestillinger. Så langt, alt som kreves for søknaden, synes å være tilgjengelig på internett: Apache CXF for å generere Java-klassene som brukes for å få tilgang til markedets webtjenester. Apache Maths for å utføre prisanalysen Wikipedia for de ulike designmønstrene, dvs. Factory, SubjectObserver, State, etc. Hvor jeg virkelig sitter fast er imidlertid med algoritmer. Ive bestemte seg for å bruke statsmønsteret til å partisjonere, inn i logiske grupperinger, de ulike logikkstykkene som skal utføres når visse markedsforhold er oppfylt. Problemet er at jeg begynner å se at det er veldig sannsynlig at hver statsklasse vil inneholde en eksplosjon av om andre erklæringer: Jeg kan ikke hjelpe, men føler at jeg mangler noe her, og at det må eksistere noe rammeverk eller designmønster jeg vet ikke om hvilken gjør det mulig for utvikleren å inkapslere alle inngangene og utgangene fra en gitt forretningskontekst til et begrenset antall forretningsprosjekter, hvor utdataene for virksomhetsregimer kan bygges. Dvs. Snarere enn å måtte hardkodes algoritmene Jeg håper at det skal være mulig å gjøre søknaden til en reglerprosessor av noe slag. Dessverre vet jeg ikke hvor jeg skal begynne på dette. Jeg håper jeg har forklart dilemaet mitt klart nok, hvis du vil at jeg skal klargjøre noe, vennligst gi meg beskjed. Takk spurte 8 oktober 09 kl 22:48
No comments:
Post a Comment