MetaTrader4
Geautomatiseerd Handelsysteem 'Combo' - Optimaliseer jouw MetaTrader 4
Als we kijken naar een basis handelsysteem - de Basis Handelsstrategie (BTS) - is het essentieel om een neuraal netwerk (NN) te creëren en te trainen, zodat het dingen kan doen die met de BTS niet mogelijk zijn. Dit resulteert in een handelsysteem dat bestaat uit twee gecombineerde en elkaar aanvullende systemen: de BTS en het NN.
We hoeven de continenten niet opnieuw te ontdekken; ze zijn al ontdekt. Waarom iemand leren snel te rennen als we een auto hebben, of te vliegen als we een vliegtuig hebben?
Als we eenmaal een trendvolgend ATS hebben, hoeven we alleen het neuraal netwerk te trainen voor een tegentrendstrategie. Dit is noodzakelijk omdat een systeem dat is ontworpen voor trendgericht handelen niet kan omgaan met zijwaartse trends of de marktveranderingen of omkeringen kan herkennen. Natuurlijk kun je twee ATS'en nemen - eentje voor trendvolgend handelen en eentje voor tegentrend handelen - en ze aan dezelfde grafiek koppelen. Maar je kunt ook een neuraal netwerk trainen om jouw bestaande handelsysteem aan te vullen.
Hiervoor hebben we een neuraal netwerk met twee lagen ontworpen, bestaande uit twee perceptrons in de onderste laag en één perceptron in de bovenste laag. De output van het neuraal netwerk kan in een van de drie toestanden zijn:
De markt betreden met een lange positie
De markt betreden met een korte positie
Onbepaalde staat
De derde staat betekent dat de controle wordt overgedragen aan de BTS, terwijl in de eerste twee staten de handelsignalen worden gegeven door het neuraal netwerk.
Het trainen van het neuraal netwerk is verdeeld in drie fasen, waarbij elke fase is gericht op het trainen van één perceptron. Tijdens elke fase moet de geoptimaliseerde BTS aanwezig zijn, zodat de perceptrons weten wat ze kunnen doen.
De afzonderlijke training van perceptrons via een genetisch algoritme wordt bepaald door de beperking van dit algoritme: het aantal invoerparameters dat met behulp van dit algoritme wordt doorzocht, is beperkt. Elk trainingsstadium is echter samenhangend en het neuraal netwerk is niet te groot, zodat de hele optimalisatie niet te veel tijd in beslag neemt.
De eerste fase, voorafgaand aan de training van een NN, bestaat uit de optimalisatie van de BTS.
Om ons niet te verliezen, registreren we het fase nummer in de invoer van het ATS, aangeduid als "pass". De identificaties van de invoeren die overeenkomen met het fase nummer eindigen in het nummer dat gelijk is aan dit fase nummer.
Laten we beginnen met de voorbereidingen voor de optimalisatie en training van het NN. Stel het initiële kapitaal in op €1.000.000 (om geen kunstmatige margin call te creëren tijdens de optimalisatie) en de invoer die geoptimaliseerd moet worden als "Balance" in de eigenschappen van de Expert Advisor op het tabblad "Testing" in de Strategie Tester. Start het genetisch algoritme.
Ga naar het tabblad "Inputs" van de EA-eigenschappen en geef het volume van de te openen posities aan door de waarde 1 toe te wijzen aan de identificatie "lots".
De optimalisatie zal worden uitgevoerd volgens het model: "Open prijzen alleen (de snelste methode om de net voltooide bar te analyseren, alleen voor EA's die expliciet de opening van de bar controleren)", aangezien deze methode beschikbaar is in het ATS-algoritme.
Fase 1 van optimalisatie: Optimalisatie van de BTS
Stel de waarde 1 in voor de invoer "pass". We optimaliseren alleen de invoeren die overeenkomen met de eerste fase, d.w.z. die eindigen op 1. We controleren alleen deze invoeren voor optimalisatie en schakelen alle andere uit.
tp1 - TakeProfit van de BTS. Geoptimaliseerd met waarden binnen het bereik van 10 tot 100, stap 1
sl1 - StopLoss van de BTS. Geoptimaliseerd met waarden binnen het bereik van 10 tot 100, stap 1
p1 - periode van de CCI die in de BTS wordt gebruikt. Geoptimaliseerd met waarden binnen het bereik van 3 tot 100, stap 1
Fase 2: Training van de perceptron voor korte posities
Stel de waarde 2 in (volgens het fase nummer) voor de invoer "pass". Schakel de invoeren die eerder voor optimalisatie zijn gecontroleerd uit. Sla voor de zekerheid de invoeren van de vorige fase op in een bestand.
Controleer de invoeren voor optimalisatie volgens onze regel: hun identificaties moeten eindigen op 2:
x12, x22, x32, x42 - gewichten van de perceptron die korte posities herkent. Geoptimaliseerd met waarden binnen het bereik van 0 tot 200, stap 1
tp2 - TakeProfit van posities geopend door de perceptron. Geoptimaliseerd met waarden binnen het bereik van 10 tot 100, stap 1
sl2 - StopLoss van posities geopend door de perceptron. Geoptimaliseerd met waarden binnen het bereik van 10 tot 100, stap 1
p2 - de periode van de prijsverschillen die door de perceptron worden geanalyseerd. Geoptimaliseerd met waarden binnen het bereik van 3 tot 100, stap 1.
Laten we beginnen met de training via optimalisatie met een genetisch algoritme.
Fase 3: Training van de perceptron voor lange posities
Stel de waarde 3 in (volgens het fase nummer) voor de invoer "pass". Schakel de invoeren die in de vorige fase voor optimalisatie zijn gecontroleerd uit. Sla voor de zekerheid de invoeren van de vorige fase op in een bestand.
Controleer de invoeren voor optimalisatie volgens onze regel: hun identificaties moeten eindigen op 3:
x13, x23, x33, x43 - gewichten van de perceptron die lange posities herkent. Geoptimaliseerd met waarden binnen het bereik van 0 tot 200, stap 1
tp3 - TakeProfit van posities geopend door de perceptron. Geoptimaliseerd met waarden binnen het bereik van 10 tot 100, stap 1
sl3 - StopLoss van posities geopend door de perceptron. Geoptimaliseerd met waarden binnen het bereik van 10 tot 100, stap 1
p3 - de periode van de prijsverschillen die door de perceptron worden geanalyseerd. Geoptimaliseerd met waarden binnen het bereik van 3 tot 100, stap 1.
Laten we beginnen met de training via optimalisatie met een genetisch algoritme.
Fase 4 (eindfase): Training van de bovenste laag
Stel de waarde 4 in (volgens het fase nummer) voor de invoer "pass". Schakel de invoeren die in de vorige fase voor optimalisatie zijn gecontroleerd uit. Sla voor de zekerheid de invoeren van de vorige fase op in een bestand.
Controleer de invoeren voor optimalisatie volgens onze regel: hun identificaties moeten eindigen op 4:
x14, x24, x34, x44 - gewichten van de perceptron van de eerste laag. Geoptimaliseerd met waarden binnen het bereik van 0 tot 200, stap 1
p4 - de periode van de prijsverschillen die door de perceptron worden geanalyseerd. Geoptimaliseerd met waarden binnen het bereik van 3 tot 100, stap 1.
Laten we beginnen met de training via optimalisatie met een genetisch algoritme.
Dat is alles, het neuraal netwerk is getraind.
Het ATS heeft nog één niet-geoptimaliseerde invoer, mn - Magic Number. Dit is de identificatie van posities zodat een handelsysteem zijn orders niet mengt met orders die handmatig of door andere ATS'en zijn geopend. De waarde van het magic number moet uniek zijn en mag niet samenvallen met de magic numbers van posities die niet door deze specifieke Expert Advisor zijn geopend.
P.S.
De grootte van het initiële kapitaal is vastgesteld op het dubbele van de absolute drawdown, dat wil zeggen, we beschouwen wat veiligheidsreserves.
De EA die in de broncodes is gegeven, is niet geoptimaliseerd.
Als je de ingebouwde BTS wilt vervangen door het algoritme van een ander handelsysteem, moet je de inhoud van de functie basicTradingSystem() aanpassen.
Om niet de initiële en de eindwaarden en de waarden van stappen voor optimalisatie in te voeren, kun je het kant-en-klare bestand combo.set nemen, dit in de map \tester MT4 plaatsen en uploaden naar de eigenschappen van de EA in de Tester.
Heroptimalisatie van de EA moet plaatsvinden in het weekend, dat wil zeggen, op zaterdag of zondag, maar alleen als de resultaten van de voorgaande week onrendabel waren. Het hebben van verliezen betekent dat de markt is veranderd en dat heroptimalisatie noodzakelijk is. Het hebben van winsten betekent dat het ATS geen heroptimalisatie nodig heeft en de marktpatronen goed herkent.
2008.03.06