Sunday, October 9, 2016

Trading Strategieë Ninjatrader

Bladsy nie gevind nie Die bladsy wat u probeer om toegang bestaan ​​nie op hierdie bediener. Hierdie bladsy kan nie bestaan ​​as gevolg van die volgende redes: Jy is die eienaar van hierdie webwerf, en jy nie gelaai (of verkeerd gelaai) jou webwerf. Vir meer inligting oor die laai van jou webwerf met behulp van FTP-kliënt sagteware of web ontwerp sagteware, klik hier vir FTP oplaai informasie. Die URL wat jy in jou leser ingeskryf is verkeerd. Voer asseblief weer die URL na en probeer weer. Die skakel wat jy gekliek verkeerd dui op hierdie bladsy. Kontak asseblief die eienaar van hierdie webwerf in te lig van hierdie situasie. NinjaTrader Vennote Kopiereg © 2015. Alle regte voorbehou. Die NinjaTrader Ecosystem logo is 'n handelsmerk van die NinjaTrader Ecosystem LLC. Hierdie webwerf is slegs vir opvoedkundige en inligting doeleindes en moet nie beskou word as 'n uitnodiging om te koop of te verkoop 'n termynkontrak of enige ander tipe van belegging besluit. Die wat op hierdie webwerf maatskappye en dienste is nie in ag geneem word 'n aanbeveling en dit is die verantwoordelikheid van die leser se om enige produk, diens, of maatskappy te evalueer. NinjaTrader Ecosystem LLC is nie verantwoordelik vir die akkuraatheid of inhoud van enige produk, diens of maatskappy wat verband hou met hierdie webwerf. Futures Trading bevat aansienlike risiko en is nie vir elke belegger. 'N belegger kan potensieel verloor al of meer as die aanvanklike belegging. Risiko kapitaal is geld wat verlore kan gaan sonder kinders finansiële sekuriteit of lewenstyl gedrang te bring. Slegs risiko kapitaal gebruik moet word vir die verhandeling en slegs diegene met genoeg risiko kapitaal moet handel oorweeg. Vorige prestasie is nie noodwendig 'n aanduiding van toekomstige resultate. View Full Risiko-Openbaringsverklaring. CFTC Reëls 4,41 - Hipotetiese of gesimuleerde prestasie resultate het sekere beperkings, in teenstelling met 'n werklike prestasie rekord, moenie gesimuleerde resultate nie werklike handel verteenwoordig. Ook, omdat die ambagte is nie uitgevoer word, die resultate kan hê onder-of-meer as vergoed vir die impak, indien enige, van sekere mark faktore, soos 'n gebrek aan likiditeit. Gesimuleerde handel programme in die algemeen is ook onderhewig aan die feit dat hulle is ontwerp met die voordeel van agterna. Geen voorstelling gemaak word dat enige rekening sal of is geneig om wins of verliese soortgelyk aan dié wat te bereik. Adaptrade sagteware Nuusbrief artikel NinjaScript vir Strategie Handelaars deur Michael R. Bryant Ek het gretig om NinjaTrader se ® bied nie; NinjaScript ® uitset vir my Adaptrade Bouwer strategie genereer sagteware vir 'n geruime tyd en kan nou aankondig dat dit amper klaar (sien hieronder vir 'n voorbeeld van 'n NinjaScript strategie wat deur Bouwer), met 'n verwagte vrylating op of rondom 30 Junie Hierdie artikel bied 'n hoë vlak oorsig van die NinjaScript taal en hoe dit vergelyk met die ander tale wat ondersteun word deur Bouwer. * Gebruik te maak van 'n bestaande taal NinjaTrader is 'n gewilde verhandelingsplatform vir voorraad, termynkontrakte en forex. Soos Meta Trader, NinjaTrader is gratis vir gesimuleerde handel en strategie-ontwikkeling en is verenigbaar met 'n wye verskeidenheid van makelaars en data verskaffers. Een van die redes agter die gewildheid van NinjaTrader is die NinjaScript programmeertaal vir aanwyser en strategie-ontwikkeling. Die veelsydigheid en krag van NinjaScript het 'n groot ekosisteem van aanwyser en strategie-kode wat effektief strek die NinjaTrader platform geskep. NinjaScript is gebaseer op die C # (uitgespreek & quot; C Sharp & quot;) programmeertaal ontwikkel deur Microsoft en eerste vrygestel in 2002. C # is 'n algemene doel programmeertaal gebaseer op die gewilde C en C ++ tale en gebruik te maak van raamwerk Microsoft se. Baseer NinjaScript op C # beteken dat dit kan neem voordeel van al die funksies van C # en is en dat dit saamgestel word met bestaande Microsoft C # opstellers. Dit is anders as ander script tale, soos TradeStation se EasyLanguage, AmiBroker se AFL en Meta Trader 4 se MQL4. Terwyl hierdie tale het almal C-agtige sintaksis, veral MQL4, is hulle almal gebou van die grond af. In beginsel moet dit 'n ontwerp voordeel te verskaf; naamlik, dat hulle kan wees wat spesiaal ontwerp vir verhandeling. Tog het hierdie gebalanseer word teen die voordele wat deur die stigting van 'n volwasse, hoogs ontwikkelde taal soos C #. Die C # en biblioteke verskaf so 'n basiese funksies soos die datum / tyd en wiskunde funksies. Sedert C # en het in die ontwikkeling vir ongeveer 14 jaar, hierdie basiese kenmerke is baie volwasse en stabiele. NinjaScript neem nie net voordeel van die ingeboude funksies biblioteek, maar die basiese taalkenmerke sowel, insluitend conditionals (& quot; as dan & quot; vertakking), lusse, funksies, en so aan. Deur voort te bou op die fondament van 'n bestaande, gewilde taal, NinjaTrader aged 'n wye verskeidenheid van vermoëns en funksies te vermy, terwyl die risiko's en slaggate van die ontwikkeling van 'n script taal van nuuts af. Die resultaat is 'n funksie ryk, hoogs bekwame en betroubare script taal. 'N Moderne script taal NinjaScript is in ooreenstemming met die onderliggende ontwerp van C #, wat objekgeoriënteerde, gebeurtenis-gedrewe, en-komponent gebaseer. Alle strategieë in NinjaTrader definieer hul eie klas, wat spruit uit die klas Strategie binne die NinjaTrader naamruimte. Dit is hier waar die bygevoeg C # om NinjaScript skep funksie is geleë. Figuur 1. Die strategie klas verklaring is in die NinjaTrader. Strategy naamruimte. Die funksie Inisialiseer is een keer genoem aan die begin van die strategie. In C #, is die meeste aksie ontketen deur eksterne gebeure, wat aanleiding gee & quot; event handlers & quot ;. In NinjaScript, is die belangrikste gebeurtenis hanteerder genoem OnBarUpdate, wat veroorsaak op die einde van elke staaf of, opsioneel, by elke tik. Dit is hier waar die belangrikste strategie logika woon. Die ander primêre event handler is inisialiseer, wat veroorsaak aan die begin van die strategie en is net een keer uitgevoer op daardie tydstip. Ander event handlers kan opsioneel geïmplementeer, soos OnPositionUpdate, wat veroorsaak wanneer die handel posisie verander, en OnOrderUpdate, wat veroorsaak wanneer 'n bestaande orde veranderinge. Die vermoë om strategie-kode uit te voer wanneer die besonder gebeure plaasvind kan dit makliker maak om sekere aksies in NinjaScript in vergelyking met meer tradisionele tale, soos EasyLanguage program. Figuur 2. Die NinjaScript OnBarUpdate funksie 'n beroep op die einde van elke staaf of op elke tik, afhangende van die omgewing in Inisialiseer. Onttrekking, beheer, en veelsydigheid Alle script tale vir verhandeling maak kompromieë in hoe hulle abstrakte sekere aspekte van die handel versus hoeveel beheer hulle albei aan en vereis van die gebruiker. Trading behels 'n reeks van redelik komplekse aksies: die evaluering van strategie logika op elke staaf en / of merk, die plasing van verskeie handel bestellings vir beide in - en uitklim, dop en opdatering van die handel bestellings op elke staaf / merk, verwerking en opname vul, en kanselleer oop bestellings, insluitend een-kanselleer-ander en voorwaardelike bestellings. 'N Hoë vlak van abstraksie beteken dat baie van hierdie kompleksiteit is verborge vir die programmeerder en outomaties uitgevoer agter-die-skerms, wat dit makliker maak om die program, maar bied min beheer en veelsydigheid. 'N Laer vlak van abstraksie laat veel van die werk tot die programmeerder, wat die ontwikkeling moeiliker maar gee gewoonlik meer beheer maak. Byvoorbeeld, sommige tale, soos MetaQuotes Taal 4 (MQL4), bied redelik basiese bevele om bestellings te hanteer en laat dit aan die gebruiker in staat om oop bestellings aanleiding van 'n dronk te kanselleer. Dit kan dit moeilik maak om 'n strategie wat gebruik byvoorbeeld implementeer, verskeie uitgange (bv 'n beskermende stop, 'n teiken uitgang, en 'n uitgang wat gebaseer is op 'n logiese toestand), want as 'n mens uitgang is getref, die ander, hangende bestellings moet gekanselleer word deur die strategie-kode. Aan die ander kant, hierdie dun laag van abstraksie bied maksimum beheer en veelsydigheid. AmiBroker Formule taal (AFL), aan die ander kant, bied 'n baie diep onttrekking in sy basiese vorm in die sin dat die gebruiker verskaf die omstandighede waaronder toegang en uitgang is om plaas te vind, en die taal (en onderliggende platform) sorg vir wanneer en hoe die werklike handel bestellings geplaas word en uitgevoer word. Vir eenvoudiger vorme van strategieë, dit maak dit baie maklik om die strategie te kodeer. Dit bied baie min buigsaamheid en beheer vir die strategie ontwikkelaar. Trouens, AmiBroker glo erken hierdie beperking wanneer dit bygevoeg sy sogenaamde & quot; portefeulje backtester koppelvlak & quot; (Persoonlike backtest prosedure), wat toegang bied tot 'n laer-vlak funksies vir die beheer van dinge soos om toegang. Ongelukkig is hierdie aparte benadering nie goed te integreer met die oorspronklike ontwerp van AFL. EasyLanguage bied verskeie tipes van komplekse abstraksies. Inherent aan elke EasyLanguage strategie is die feit dat die meeste van die kode, anders as die veranderlike initializations, uitgevoer word op elke staaf. As & quot; kyk-in back-bar toets & quot; geaktiveer is, 'n bykomende onttrekking is teenwoordig in daardie bykomende berekeninge uitgevoer word agter die skerms om meer gereeld as een keer elke bar te evalueer, afhangende van instelling van die gebruiker. In effek, TradeStation het die ekwivalent van NinjaScript se OnBarUpdate, maar dit is verborge vir die gebruiker en hanteer agter-die-skerms. EasyLanguage hanteer ook om die verwerking op 'n manier die verminder die las op die gebruiker. Veelvuldige bestellings kan in kode word geplaas, en uitgevoerde kinders sal gekanselleer word asof & quot; een-kanselleer-ander & quot; wanneer 'n mens is gevul. NinjaScript implemente byna identies abstraksies vir orde plasing en uitvoering, insluitend outomaties kanselleer elke bestelling aan die einde van elke staaf. Dit is in ooreenstemming met die feit dat die strategie-kode voer op elke maat, wat tipies beteken die kode state vir die plaas van bestellings sal herhaal word op elke staaf. As die bevele nie outomaties verval aan die einde van elke staaf, sal hulle moet gekanselleer word deur die strategie voordat nuwes. Array verwerking is 'n ander gebied wat die graad van abstraksie onder script tale beklemtoon. Sedert aanwysers en ander elemente van die strategie logika moet geëvalueer word op elke maat van 'n prys grafiek of data-reeks, script tale vir verhandeling is inherent-reeks gebaseer; dit wil sê, hulle voordeel trek uit berekeninge op skikkings van prys data, eerder as om die uitvoering van die berekeninge bar-vir-bar. Byvoorbeeld, as 'n strategie sluit in 'n bewegende gemiddelde en 'n stogastiese, sou 'n mens benadering wees om die bewegende gemiddelde te bereken op die eerste bar, bereken die stogastiese op dieselfde kroeg, evalueer die strategie logika vir daardie bar, dan beweeg na die volgende bar . Dit is egter baie meer doeltreffend aan die bewegende gemiddelde te bereken vir elke maat op die grafiek, bereken dan die stogastiese vir elke maat op die grafiek, dan is die strategie logika evalueer. Laasgenoemde is 'n voorbeeld van verskeidenheid verwerking, wat gewoonlik uitgevoer kan word agter die skerms selfs al is dit nie duidelik uit die manier waarop die kode is geskryf. EasyLanguage bied die beste voorbeeld hiervan: die skikking verwerking onttrek weg sodat die gebruiker nie bekommerd te wees met dit het. Byvoorbeeld, wanneer jy 'n funksie in EasyLanguage kode wat jy skryf die berekeninge wat uitgevoer moet word op die huidige bar. Dit is aan die EasyLanguage samesteller die berekeninge doeltreffend te maak, vermoedelik deur verskeidenheid verwerking. In AFL, aan die ander kant, die skikking verwerking is ontwerp gerieflik te wees, maar is duidelik in dat jy bewus te wees dat jy die verwerking van skikkings van data en neem dit in ag hoe jy die kode te skryf. NinjaScript is soortgelyk aan MQL 4 in dat die gebruik van skikkings is meestal eksplisiete. Maar in MQL4, die gebruik van arbitrêre skikkings as insette tot aanwysers, soos 'n bewegende gemiddelde van iets anders as die prys, is ongemaklik hanteer, maak dit moeilik om aanwysers van aanwysers, soos 'n bewegende gemiddelde van 'n stogastiese evalueer. NinjaScript oorwin hierdie potensiële probleem deur middel van 'n spesiale verskeidenheid tipe bekend as 'n DataSeries, wat gedefinieer kan word in die strategie-kode en wat aanvaar word as 'n inset deur 'n aanduiding dat inherent neem prys as 'n inset. Dit maak dit relatief maklik om geneste aanwysers kodeer. Voorbeeld NinjaScript Strategie Kode Gegenereer deur Bouwer Die lêer beskikbaar in die onderstaande skakel is outomaties gegenereer deur Adaptrade Bouwer in NinjaScript vir NinjaTrader. Die lêer kan oopgemaak word in 'n teks editor, soos Notepad. Om die strategie in NinjaTrader stel, stoor dit na die gids Strategie in jou gids NinjaTrader dokumente, dan maak dit in die NinjaScript redakteur, en klik op die Stel knoppie. 'N Tipiese pad vir die lêer spaar is C: \ Users \ [your_user_name] \ Documents \ NinjaTrader 7 \ bin \ Custom \ Strategie, waarin [your_user_name] is jou gebruikersnaam in die gids Gebruikers. Alternatiewelik, kopieer die kode na die knipbord en plak dit in 'n leë strategie binne die NinjaScript redakteur. NinjaScipt uitset in Bouwer sal beskikbaar wees in weergawe 1.7.0 wees, met 'n datum verwagte vrylating van 30 Junie 2014. Laai of OOP (lêer: Builder_Ninja_Ex. cs) 'N balans Soos hierbo voorgestel, al script tale vir verhandeling 'n balans iewers langs die spektrum tussen 'n hoogs abstrakte taal wat 'n baie agter die skerms (bv AFL) en 'n dun onttrek taal wat die gebruiker vereis om elke stap van die handel spesifiseer hanteer proses (bv MQL4). NinjaScript is baie soos EasyLanguage omdat dit iewers val in die middel. In vergelyking met EasyLanguage, NinjaScript waarskynlik maak ten minste 'n paar van sy abstraksies duideliker terwyl dit nie maak hulle baie meer kompleks. Byvoorbeeld, die kode wat voer op elke staaf is voor die hand liggend dat dit woonagtig is in die OnBarUpdate funksie. In EasyLanguage, kan dit nie onmiddellik duidelik 'n nuweling wat die grootste deel van die strategie-kode uitgevoer word op die einde van elke staaf en dat die veranderlikes nie weer inisialiseer op elke maat wees. In NinjaScript, die veranderlikes is nie deel van OnBarUpdate, so dit is duidelik dat enige inisialisering buite daardie funksie, soos in die Inisialiseer funksie verrig, gebeur net een keer. Aan die ander kant, EasyLanguage bied 'n hoër algehele vlak van abstraksie, wat kan maak dit makliker om een ​​maal die ontwerp-elemente van die taal verstaan. Uit die oogpunt van 'n programmeerder, daar is baie om te bewonder oor NinjaScript. Die ontwerp is in ooreenstemming met moderne ontwikkeling konvensies, dit is maklik extensible, bied dit 'n gerieflike handel abstraksies vir dinge soos orde plasing, en nog bestuur duidelik oor wat die kode nie op 'n bar-vir-bar basis te wees. Daarbenewens is dit maak gebruik van die biblioteek en C # taal funksies. Nadat geprogrammeer EasyLanguage vir sowat 20 jaar, is dit moeilik om ander script tale met vars oë te evalueer. Maar as ek leer om handel strategieë program vandag - en sit eenkant enige oorwegings wat verband hou met die verskillende handel platforms - ek kan baie goed kies NinjaScript. Mike Bryant Adaptrade sagteware * Hierdie artikel is nie bedoel om handleiding in die natuur en nie te bespreek NinjaTrader platform funksies. "Na 20 jaar van handel vir instellings, ek het 'n Senior Trader posisie spesifiek opgedoen as gevolg van hierdie Uitvoerende mentorskapprogram" Casper Johansen, institusionele Trader "Ek is 'n institusionele handelaar vir 'n groot mark maker in die Kaaimanseilande en is die handel in die Amerikaanse Securities markte vir 18 jaar. In hierdie beroep jy nie 'n salaris betaal, kry jy betaal 'n persentasie van die totale bedrag van wins wat jy inbring vir jou kliënte onder bestuur. Hier werk ons ​​in die aanvaarding van die werklikheid dat dit 'n baie mededingende en stres volle omgewing. Vroeg in 'n nuwe loopbaan besluit, is ek ervaar 'n begin tweede kwartaal van nie prestasie en 'n onttrekking wat dan my posisie bedreig. Die lang storie kort is deur 'n verwysing het ek ontdek Jeff Kilian en ek het dadelik sy diens behou.


No comments:

Post a Comment