Monday, 28 August 2017

Jforex Strategi Wiki


JForex Import JForex är mjukvara för Forex trading från Ducascopy. Deras program låter dig ladda ner marknadsdata, inklusive kryssdata. Du kan se hur du importerar dessa data i vår Importing JForex Data-handledning. I den här artikeln kommer vi att visa dig runt användargränssnittet i JForex Import-verktyget. Du kan öppna panelen från History Center JForex Import. 1. JForex Data Import Input-katalog här är den mapp som innehåller data från JForex Output-katalog där de konverterade data kommer att sparas för användning av FSB Pro här kan du placera sökvägen till en datakälla-mapp så att data direkt läggs till I den datakällan. Marknadens stängningstid på fredag ​​Marknadens öppettimme på söndagen är det en kännetecken för JForex-data, att den innehåller poster över helgen, där det finns antingen nollrörelser eller några stora spikar i prisrörelsen. Uppgifterna i helgen är inte riktiga och är därför inte lämplig för backtesting. Det är därför som vi ställer in stängnings - och öppettid, när vi konverterar data och filtrerar ut dessa staplar. FSB Pro kommer att försöka upptäcka de här staplarna på egen hand, men vi rekommenderar att du dubbelkontrollerar. Hur man dubbelkollar: I vår praxis är det klockan 21 oclock när marknaden stänger på fredag ​​och när den öppnas på söndag. Vi kan inte vara säkra på vad dessa timmar är för din tidszon, men du kan hämta dem från JForex medan du kör det och ställa in rätt värden i JForex Import-verktyget. Maximalt antal staplar som importeras kommer att filtrera data upp till denna mängd barer. JForex Import Hjälp en länk till handledningen om Importera JForex Data Importera på knappen startar importprocessen. Den övre gröna fältet visar importstatus för den aktuella filen. Den nedre fältet visar status för hela importprocessen, med tanke på alla filer som ska importeras. 2. Utmatningslogg Utgångsloggen visar namnet på varje importerad fil symbolen för dataen hur många staplar som finns i filen Om staplarna är mindre än Maximalt antal staplar för att importera nummer, kommer FSB Pro att konvertera och spara dem till en filen i Output-katalogen. Om det finns för många staplar i en fil ser du: Klipp ut hur många staplar har klippts från slutet av filen. Återstående hur många staplar har konverterats till FSB Pro-användbara data. Återstående staplar sparas också i en fil. studerade anatomin av en tom JForex-strategi (del 1 och del 2), det är dags att dissekera en fungerande. MAPlay är den strategi som ingår i varje JForex API-nedladdning som en demonstration. Du kan hitta den fullständiga källkoden för denna strategi i srcsinglejartest i JForex API-paketet. Kom ihåg att den första gränssnittsmetoden som körs i början av strategin är onStart. OnStart-metoden för MAPlay återges nedan. Variablerna motor. indikatorer. och konsol är fält i klassen MAPlay. De är globala variabler inom klassen. Vilka linjer 42-44 gör är att spara IEngine. IIndicators. Och IConsole objekt för senare användning. Den sista raden av onStart, linje 45, är bara att skriva ut ett meddelande på din JForex-programkonsol för att meddela användaren att strategin har börjat. När onStart har slutförts bearbetar servern sannolikt att call on Tick om en marknadspark kommer fram. Om det inte är under marknads timmar, så finns det ingen kryssning och någon annan händelse kan hända istället för onTick. Tänk på metoderna som händelser snarare än en linjär process. Du programmerar din JForex-strategi enligt vad du vill göra med var och en av de sex IStrategy Interface-händelserna. För den här strategin beslutar programmeraren att genomföra sin strategi på fältnivå. Som sådan finns mycket av handelsalgoritmen i onTick for MAPlay. Observera att detta är ett designval, du kan använda onBar om du vill att din strategi ska behandlas i barnivån (eller du kan använda både onTick och onBar). Här är källkoden för onTick in MAPlay. I ett ögonblick kan du märka att variablerna ma0 och ma1 spelar en nyckelroll för att bestämma inställningen. Tips: För att omvända en strategi kan det vara lättare att arbeta bakåt från när beställningen är placerad, vilket görs av engine. submitOrder i det här fallet. ma0 och ma1 håller resultat från exponentiella glidande medelvärden (EMA). ma0 är det aktuella värdet. ma1 är föregående stapelvärde. Linjer 56-63 kontrollerar med IF-test (linjer 56 och 60) för att se om någon av variablerna innehåller ogiltiga data. Om uppgifterna är ogiltiga beräknas indikatorn och resten av onTick hoppas över med returräkningen på rad 62. Obs! Indikatorvärdena kan ibland vara ogiltiga (noll, negativ eller dubbel. NaN. Beroende på den specifika indikatorimplementeringen ) om det inte finns tillräckligt med data för att beräkna det eller ett fel inträffade, för exempel. EMA: erna hämtas i linjerna 57 och 59 med hjälp av IIndicators-objektet (som initialiserades i onStart). JForex Wiki ger en förklaring av dess användning. Observera att ma1 är en array som deklarerades i rad 38 med en storlek som motsvarar antalet tillgängliga JForex-instrument. I synnerhet används den med ett speciellt indexvärde som i ma1instrument. ordinal (). Med andra ord, det ber om den aktuella instrumentplatsen i ma1-arrayen. Det aktuella instrumentet är det som passeras in i metoden i rad 55. Vid nedtryckning av koden är en annan punkt av intresse 65, som visar användningen av instrument. getPipValue (). Linje 67 kontrollerar om nuvarande totalt antal positioner är noll. Om det är, vilket betyder inget öppet läge, fortsätter strategin att kontrollera inmatningssignalen för att komma in i en handel (linjer 68-76). PositionsTotal () är en anpassad metod som definieras i linjerna 84-92. Den använder en FOR-slinga för att cykla genom alla order som erhållits från engine. getOrders (instrument) När endera av de långa eller korta förhållandena, linjerna 68 och 72 är uppfyllda, lämnar strategin en order i rad 69 för en kort och linje 73 för en lång. Uppgifterna om att lämna in marknadsordningar beskrivs i JForex Wiki. När du stoppar den här strategin heter OnStop (linjerna 48--53). För denna strategi sluter programmeraren igenom alla order igen med hjälp av engine. getOrders () och stänger var och en av positionen med ett order. close () kommando i rad 50. Det är det för denna triviala strategi. Om det finns en poäng som du bör komma ihåg. Notera min användning av de många länkarna till JForex javadoc och JForex Wiki i hela det här inlägget. Du kommer sannolikt att hitta många av dina svar från dessa två källor. Om inte, är det alltid JForex Support Board. Nu när du har fått en uppfattning om hur MAPlay. java fungerar, är det dags att testa det. I nästa post i januari diskuterar vi JForex Historical Tester och vad vi ska titta på när vi kör en strategi live. Having studerat anatomin av en tom JForex-strategi (Del 1 och Del 2), det är dags att dissekera en fungerande. MAPlay är den strategi som ingår i varje JForex API-nedladdning som en demonstration. Du kan hitta den fullständiga källkoden för denna strategi i srcsinglejartest i JForex API-paketet. Kom ihåg att den första gränssnittsmetoden som körs i början av strategin är onStart. OnStart-metoden för MAPlay återges nedan. Variablerna motor. indikatorer. och konsol är fält i klassen MAPlay. De är globala variabler inom klassen. Vilka linjer 42-44 gör är att spara IEngine. IIndicators. Och IConsole objekt för senare användning. Den sista raden av onStart, linje 45, är bara att skriva ut ett meddelande på din JForex-programkonsol för att meddela användaren att strategin har börjat. När onStart har slutförts bearbetar servern sannolikt att call on Tick om en marknadspark kommer fram. Om det inte är under marknads timmar, så finns det ingen kryssning och någon annan händelse kan hända istället för onTick. Tänk på metoderna som händelser snarare än en linjär process. Du programmerar din JForex-strategi enligt vad du vill göra med var och en av de sex IStrategy Interface-händelserna. För den här strategin beslutar programmeraren att genomföra sin strategi på fältnivå. Som sådan finns mycket av handelsalgoritmen i onTick for MAPlay. Observera att detta är ett designval, du kan använda onBar om du vill att din strategi ska behandlas i barnivån (eller du kan använda både onTick och onBar). Här är källkoden för onTick in MAPlay. I ett ögonblick kan du märka att variablerna ma0 och ma1 spelar en nyckelroll för att bestämma inställningen. Tips: För att omvända en strategi kan det vara lättare att arbeta bakåt från när beställningen är placerad, vilket görs av engine. submitOrder i det här fallet. ma0 och ma1 håller resultat från exponentiella glidande medelvärden (EMA). ma0 är det aktuella värdet. ma1 är föregående stapelvärde. Linjer 56-63 kontrollerar med IF-test (linjer 56 och 60) för att se om någon av variablerna innehåller ogiltiga data. Om uppgifterna är ogiltiga beräknas indikatorn och resten av onTick hoppas över med returräkningen på rad 62. Obs! Indikatorvärdena kan ibland vara ogiltiga (noll, negativ eller dubbel. NaN. Beroende på den specifika indikatorimplementeringen ) om det inte finns tillräckligt med data för att beräkna det eller ett fel inträffade, för exempel. EMA: erna hämtas i linjerna 57 och 59 med hjälp av IIndicators-objektet (som initialiserades i onStart). JForex Wiki ger en förklaring av dess användning. Observera att ma1 är en array som deklarerades i rad 38 med en storlek som motsvarar antalet tillgängliga JForex-instrument. I synnerhet används den med ett speciellt indexvärde som i ma1instrument. ordinal (). Med andra ord, det ber om den aktuella instrumentplatsen i ma1-arrayen. Det aktuella instrumentet är det som passeras in i metoden i rad 55. Vid nedtryckning av koden är en annan punkt av intresse 65, som visar användningen av instrument. getPipValue (). Linje 67 kontrollerar om nuvarande totalt antal positioner är noll. Om det är, vilket betyder inget öppet läge, fortsätter strategin att kontrollera inmatningssignalen för att komma in i en handel (linjer 68-76). PositionsTotal () är en anpassad metod som definieras i linjerna 84-92. Den använder en FOR-slinga för att cykla genom alla order som erhållits från engine. getOrders (instrument) När endera av de långa eller korta förhållandena, linjerna 68 och 72 är uppfyllda, lämnar strategin en order i rad 69 för en kort och linje 73 för en lång. Uppgifterna om att lämna in marknadsordningar beskrivs i JForex Wiki. När du stoppar den här strategin heter OnStop (linjerna 48--53). För denna strategi sluter programmeraren igenom alla order igen med hjälp av engine. getOrders () och stänger var och en av positionen med ett order. close () kommando i rad 50. Det är det för denna triviala strategi. Om det finns en poäng som du bör komma ihåg. Notera min användning av de många länkarna till JForex javadoc och JForex Wiki i hela det här inlägget. Du kommer sannolikt att hitta många av dina svar från dessa två källor. Om inte, är det alltid JForex Support Board. Nu när du har fått en uppfattning om hur MAPlay. java fungerar, är det dags att testa det. I nästa post i januari kommer vi att diskutera JForex Historical Tester och vad du ska titta på när du kör en strategi live. Vi tittade på fyra av de sex metoderna i IStrategy-gränssnittet i ett tidigare inlägg. De två sista metoderna, onTick och onBar, är där din strategi förbinder med marknadsdata. Endera eller båda av dessa metoder är där du lägger in din handelsalgoritm. Din strategi skulle då kunna bearbeta marknadsdata när de anländer en tickbar åt gången. Minns att IStrategy Interface är skelettet i din strategi. Och det IContext-objektet är hjärtat av din strategi. onTickonBar är chef för din strategi, som innehåller din handelsalgoritm, vilken är hjärnan. Här är metoden definition av onTick. Viktigt: onTick kallas för varje instrument som din JForex-plattform är ansluten till (instrumentlistan i din arbetsfält). Låt mig säga det igen, onTick kallas för varje instrument som din JForex-plattform är ansluten till. Standardpraxis är att filtrera bort ticks för instrument som du inte vill ha med ett enkelt IF-retur uttalande. Om (instrument myInstrument) returnera Faktiska fältdata skickas till din strategi med hjälp av ITick-objektet från parametern onTick-metoder. Ta en titt på ITick javadoc-posten för att se vad den erbjuder. onBar fungerar på liknande sätt som onTick. I vilken onBar kallas varje undertecknat instrument och period som är känd för JForex. På samma sätt måste du filtrera bort alla oönskade instrument och perioder, annars kommer det att förväntas resultat från din strategi. En annan sak att notera är att onBar ger både en IBar askBar och IBar bidBar, som representerar ask och bud barer. Fråga: Vad händer när två eller flera perioder överlappar varandra som i klockan 13:45 1, 5 och 15 minuter anländer alla samtidigt (för att inte tala om perioderna i sekunder också). Svar: Enligt Dukascopy Support i forumet kommer de i sträng ordning, till exempel (1min 1min 1min 1min 1min 5min 1min 1min 1min 1min 1min 1min 5min.) De kommer i cykler, där mindre perioder kommer först. JForex Support Forum När du programmerar din strategi med JForex kommer du utan tvekan att komma med egna frågor. Det bästa stället att fråga är på det officiella JForex Support Forum. Det här är den sista av de tre väsentliga JForex-resurserna som jag påpekade tidigare. Även om du inte har någon specifik fråga finns det exempelkoder, kodningsdiskussion och hundratals existerande QampA från andra JForex-utvecklare som publiceras i forumet. Diskussionen hittills har varit mycket hög nivå. För att visa dig vad du faktiskt kan göra i en IStrategy, kommer vi att dissekera en arbetsstrategi i nästa post. Och vad bättre att undersöka än den mest populära JForex-strategin för dem alla - MAPlay. java. Fortsätter från Del 1 i denna serie: Komma igång med att lära dig JForex programmering. Nu var redo att diskutera den verkliga saken. Du bygger JForex-strategier genom att använda IStrategy-gränssnittet (What is a Interface). I grund och botten är ett gränssnitt ett kodskelett med en uppsättning fördefinierade tomma metoder som du måste implementera dig själv. De sex standardmetoderna för IStrategy-gränssnittet är: Nedan följer en tom implementering av IStrategy Interface, även känd som en JForex-strategi. Denna kod kommer att kompilera böter i JForex och du kan även köra den. Men det gör ingenting alls eftersom det inte finns någon kod att köra i varje metod. Var och en av de sex metoderna kommer bara att ringas och avslutas omedelbart. Varje metod utlöses av en specifik händelse. Du kan noga gissa vad de är från deras namn. onStart (rad 5) Detta är den första metoden som heter när du kör din strategi. Det kommer att köra en gång och en gång i början av din strategi. Normalt gör du din initialisering här. Saken att notera för onStart finns i rad 5 i koden. Metods signaturen för onStart är Objektet i parametern och ges till dig i denna metod är ett IContext-objekt. Om IStrategy är skelettet, är IContext hjärtat av strategin. Titta på denna javadoc länk till IContext för att se vad detta objekt gör. Javadoc. Nu är det dags att introducera den andra av de tre grundläggande resurserna hos en JForex-programmerare. JForex Javadoc är den enklaste, aktuella API-dokumentationen som förklarar varje objekt och metoder för JForex API. Tänk på det som en referensmanual. Observera att även om det är heltäckande, är förklaringen mycket sparsom och eventuellt ofullständig. IContext är ett kärna JForex-objekt för åtkomst till många viktiga komponenter i JForex-systemet, såsom beställningsmotorn, diagram, konsol, indikatorer. Du får tanken. Det är viktigt Du vill vanligtvis behålla en lokal kopia av det eftersom det här är den enda gången (i onStart) att detta objekt skickas till dig i IStrategy. onStop (linje 26) Som namnet antyder kallas den här metoden när du skickar ett stoppkommando till din strategi. Du gör ditt program omslag, till exempel loggning och spolning data här. Inte mycket vanligt med den här. OnMessage (linje 18) Vi vet när OnStart och onStop kommer att ringas, onMessage är en asynkron metod genom att du inte vet exakt när den ska springa. Denna metod kallas när Dukascopy-servern skickar din strategi ett meddelande. Servern ringer till exempel påMessage för att meddela att din order har fyllts. Du tar emot och bearbetar serverns meddelande genom att komma åt det IMessage-objekt som skickats till dig. Viktigt: Det finns ingen garanti för att du kommer att få varje meddelande som skickas till din strategi från servern. Kanske är din strategiprocess igensatt. Eller kanske hade din internetanslutning en hicka. Om din strategi onMessage inte kallas av servern av någon anledning, kan servern inte bryr sig mindre och brukar inte kontrollera eller försöka igen. Så gör inte någonting kritiskt som att hantera dina beställningar i onMessage onAccount (rad 22) Denna metod kallas när din uppdatering av kontouppgifter är mottagen. Metoden ger åtkomst till IAccount-objektet. Som du använder för att få din kontoinformation. Säg om du har en öppen position, ändras din kontoupplysning på varje tick eftersom ditt eget kapital är kontant orealiserad vinstlösning. I så fall kallas onAccount varje 5 sekunder av servern högst för att undvika att översvämma din strategi. Viktigare: IAccount-objektet är inte direkt kopplat till ditt konto på servern. Det är bara en ögonblicksbild av ditt konto. Om du till exempel behåller en lokal kopia av ett IAccount-objekt. Gör lite handel för att ändra din balans. Fråga sedan samma IAccount för kontobalansinformation, du kommer inte se en förändring. Som sådan uppdatera alltid din lokala kopia av IAccount inom onAccount-metoden för att hålla din kontoinformation aktuell för din strategys användning. För att fortsätta onStart, onStop, onMessage och onAccount-metoderna är administrativa metoder för din strategi. De två sista metoderna som diskuteras väl, påTick och onBar, är där magiken händer i en strategi. Jag sparar bäst för senast i nästa inlägg. Det största problemet jag hade när jag lärde mig att programmera mina egna handelsstrategier i JForex är att hitta var man ska börja lära sig. Det fanns lite JForex dokumentation tillgänglig då och jag var tvungen att lära mig själv genom noggrann försök och fel med hjälp av Dukascopys tekniska support. Saker har säkert förändrats till det bättre som ett JForex-samhälle börjar spira och dokumentation för att det åtminstone är tillräckligt för att få någon att börja. Det här inlägget är det första av en serie snabba nybörjarguider för att lära sig JForex-programmering genom att lägga alla dessa resurser i en handledning. JForex är ett Java-verktyg JForex är egentligen inte ett programmeringsspråk. Det är ett applikationsprogrammeringsgränssnitt (API) för användning med det vanliga Java-programmeringsspråket. Som sådant är det första steget att lära sig att programmera i JForex att lära sig Java. Lyckligtvis är Java ett av de mest populära programmeringsspråk. Så det finns många resurser på och offline på webben för att lära dig Java-programmering. Några exempel på gratis online tutorials är: Java Tutorials - Detta är en officiell handledning från Java-utvecklaren själva. Högt rekommenderad. Nybörjare Java Tutorial - Mer inriktad på de absoluta nybörjare till programmering. Om du föredrar en bok skulle jag rekommendera Head First Java, 2nd Edition. Jag borstade upp på min Java från den här boken. Dont bo på Java för mycket, eftersom du bara behöver veta grunderna för att komma igång med JForex. Läs bara några kapitel för att förstå Java-syntaxen och fortsätt sedan. Du kan alltid referera till dem senare. Dykning i JForex JForex Wiki är en av de tre väsentliga resurserna för JForex-programmerare. Jag kommer att referera till några specifika sidor i Wiki i mycket av denna serie inlägg. Om du inte har gjort det redan, anmäl dig till ett DEMO-konto hos Dukascopy. Sedan startar du JForex-plattformen och följer instruktionerna på sidan Använda på JForex-wikisidan för att montera din första JForex-strategi. Hittills så bra Förhoppningsvis hoppas du kan förstå grundläggande Java-källkod och veta hur man startar, sammanställer och kör en JForex strategi. I nästa post i denna lärande JForex-serien studerar vi anatomin i en JForex-strategi. JForex API JForex API ger möjlighet att utveckla anpassade program som använder Java-programmeringsspråk. API-klientbiblioteket kan kopplas till kundsystem. Den kommunicerar direkt med Dukascopy Banks handelsservrar över säkra och autentiserade Internet-sessioner. Det är inte nödvändigt att köra JForex-plattformen samtidigt, men plattformen kan användas för att i realtid övervaka eventuella åtgärder som vidtas av ett kundsystem. För att börja arbeta med JForex Software Development Kit (JForex SDK), ladda ner och importera det i en Java Integrated Development Environment (IDE) efter eget val: JForex SDK innehåller exempel på: Strategi som körs med live data strategi back-testing strategi back - Testning i visuellt läge JForex SDK översikt beskriver hur man ändrar och förbättrar dessa användningsfall. För strategiutveckling, börja med Strategi API-översikten. De senaste JForex SDK-beroenden kan alltid hittas i det offentliga Dukascopy Maven-förvaret. Vilket innebär att man kan konfigurera sitt projekt för att alltid använda den senaste versionen av JForex API. Håll dig uppdaterad med våra senaste Jforex-api-utvecklingar och prenumerera på automatiska Jforex API-meddelanden om e-postmeddelanden. Glöm inte att kolla vårt API-supportforum där alla Jforex API-utgåvor publiceras och diskuteras.

No comments:

Post a Comment