- Posts: 1001
- Thank you received: 0
Jonkie's forex worstelingen
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
Maar goed zal uhm ff opnieuw inspreken..
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Ben momenteel weer begonnen met de job, dus ik zal niet zo veel online zijn als de afgelopen 3 weken.
Ben nu aardig gevorderd in het leren programmeren, en eigenlijk is er nog maar 1 bottleneck die ik moet overwinnen om daadwerkelijk mijn eigen ea te kunnen schrijven.
En dat is hoe je een order moet ingeven naar de broker toe, en hoe je een huidige order op het huidige paar sluit.
Om een indicator of in dit geval een expert advisor goed te kunnen schrijven is het handig om in klad je regels op te schrijven waaraan je systeem zich moet voldoen voordat je een order moet plaatsen.
Vervolgens moet je uitzonderingen bedenken. (als die er zijn)
Daarna schrijf je in verhaalvorm op wat het programma voor je zou moeten doen en tenslotte werk je dat uit in de meta-editor.
Dus wat heb ik gedaan.
stap1.
De regels.
1. crossing op 2 ema's
2. cross distance van 3 pips
3. stoploss instellen op vorige high of low ema
4. stoploss mag maximaal 2% zijn.
5. don't change winners into loosers (trailing stop van 100 pips, tot BEP bereikt is, daarna laten staan)
stap2.
De uitzonderingen zijn indien er een crossing is geweest, je order is geplaatst, maar bij de volgende candle wordt je stoploss gehit om vervolgens toch in juiste richting te gaan, en geen nieuwe crossing te geven. De trend is dus onveranderd, en je moet dus opnieuw een order openen maar dan met de stoploss van de recentere candle.
Deze uitzondering doet zich 1 op de 100 keer misschien voor, maar zou zonde zijn, als je net hierdoor een heel dikke trend zou missen. Vaak heb je hier te maken met hanging man of shooting star formaties veroorzaakt door hernieuwde volatiliteit van newsitems of andere externe oorzaken.
stap3.
In verhaalvorm...
Bij het openen van een nieuwe candle, wil ik eerst controleren of ik een order open heb staan. Zo niet, dan is mijn stoploss waarschijnlijk gehit(hierdoor vang ik gelijk stap2, mijn uitzondering af) Zo wel, dan controleren of het een buy of sell positie is, waardoor ik de trendbepaling doe. Zit ik in een uptrend(BUY positie) of een downtrend(SELL positie)?
Is de trend UP, dan mag ik alleen kijken of er een crossing is naar de downside met minimaal 3 pips verschil. Voldoe ik hier niet aan, dan doe ik niks. De huidige positie wordt aangehouden. Voldoe ik hier wel aan de regels, dan de huidige BUY positie sluiten en de SELL positie openen met een stoploss op de waarde van de High EMA. Lotsize berekenen aan de hand van deze waarde en maximale risk van 2%.
Is de trend DOWN, dan mag ik alleen kijken of er een crossing is naar de upside met minimaal 3 pips verschil. Voldoe ik hier niet aan, dan doe ik niks. De huidige positie wordt aangehouden. Voldoe ik hier wel aan de regels, dan de huidige SELL positie sluiten en de BUY positie openen met een stoploss op de waarde van de Low EMA.
Lotsize berekenen aan de hand van deze waarde en maximale risk van 2%.
Het hierboven geschreven gedeelte controleer ik alleen bij openen nieuwe candle.
Voor het programmagedeelte waarbij ik elke tick een controle moet uitvoeren heeft te maken met de trailingstop. Als ik de positie heb geopend wil ik standaard een trailing stop van 100 pips. Als de trailing stop de positie van BEP heeft bereikt, dus variabele trailigstop == BEP, dan wil ik de trailingstop verwijderen en de stop definitief op BEP laten staan, en hier niet meer aankomen.
Dit laatste stukje moet er voor zorgen dat ontwikkelingen die zich eerst positief voor mij ontvouwen toch omslaan in een verliezende trade. Dit gebeurt bij zeer volatiele markten waarbij 2 currencies zich in kort tijdsbestek in korte range up en down bewegen met 4 uurs candles van 100 - 200 pips.
Goed, dat was het, nu gaan we aan de slag met de editor.. houd de video's van de programmeer cursus in de gaten, mocht ik tegen belangrijke zaken aanlopen die nog niet besproken zijn, dan komen die daar te staan. De code van de ea zelf blijft natuurlijk staats geheim

Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Omdat ik dan goed kan zien wat ie op mijn scherm doet.
Als deze doet wat ik wil bouw ik hem om naar expert advisor.
Ik heb 4 ema waardes opgehaald en naar een variabele verwezen.
Vervolgens check ik of ema slow hoger is als ema median,
zo ja, dan is de trend UP en moet ik de median van de slow aftrekken om het verschil te berekenen.
zo nee, dan is de trend down, en moet ik de slow van de median aftrekken (net andersom dus) hierdoor krijg ik altijd een positief getal terug.
Het berekende getal heb ik vervolgens weer in een variabale gestopt.
De volgende stap is om een controle te doen op a) is er al een positie geopend op dit paar en b) is het verschil 3 pips. en reultaat: wel of neit kopen/verkopen

We komen er wel.. eerste deel werkt..en krijg nu netjes meldingen op het scherm, met netjes de berekende verschillen tussen de ema's. KEWL!
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Ik heb nu een indicator geschreven waarbij er een controle wordt gedaan op alle openstaande posities. Als er een positie is die overeenkomt met de de chart waarin je de indicator geladen hebt dan laad hij de gegevens van deze positie in.
Vervolgens kan je deze gegevens gebruiken om bijvoorbeeld te controleren of je al long of short zit, en of je dus bij een positiewisseling een order moet sluiten of niet.
Ik heb de ea vandaag dus nog niet klaar, want ik heb uhm tussen de klusjes door moeten doen. Maar ik heb de2 basis elementen nu wel in hun vorm gegoten.
Daarnaast heb ik nu ene hele mooie functie waarmee ik alle openstaande orders kan doorlopen..
Hier de code:
string Symb=Symbol();
for(int i=1; i<=OrdersTotal(); i++) // Order zoek functie
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Controle of volgende order beschikbaar is
{ // Order analyse:
if (OrderSymbol()!= Symb) continue; // Huidige currency vergelijken met order, niet hetzelfde dan weer bij for statement beginnen
if (OrderMagicNumber() != 12345) continue;// Controleren of order is opgevoerd door de expert advisor door vergelijking magicnumber
int Ticket=OrderTicket(); // Ticketnummer ophalen
int Type=OrderType(); // Haalt ordertype op, 0 = BUY positie en 1 = SELL positie
Alert("ticket nummer is " + Ticket + " en type is " + Type);
}
} //End of order analysis
//End of order searching
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
de code hierboven doet het perfect... te goed zelfs..
want zodra hij ziet dat de volgende indexnummer geen order meer bevat gaat hij verder met de rest van programma.. logisch..
maar dat betekent in mijn geval dat hij altijd 2 resultaten geeft, en ik wil juist het ene of het andere... hm... lekker puzzel dus...
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Vanavond of later ga ik het testen op mijn demo account op een 1 minuut chart, om te zien of dat goed gaat.
Hier stukje code wat ik gebruikt heb om de oplossing te creeren..
if (MA_S > MA_F)
{
double CrossDistance=(MA_S-MA_F)*100000;
if (CrossDistance>=3)
{
if (Ticket!=0)
{
if (Type==1)
{
OrderClose(Ticket);
}
}
OrderSend();
Ik heb de vorige code in mijn vorige post gelaten zoals het is. Ik heb wel de variabele Ticket van te voren op 0 gezet. Dit doet hij ieder keer voordat hij orders gaat opzoeken. Ik moet dat nog even controleren, maar ik hoop dat als de vorige code geen order kan vinden, dat de waarde die in Ticket staat nog steeds 0 is, en dus geen ticketnummer bevat.
Wat ik nu hier gedaan heb is het stukje code indien ik een crossing heb naar de upside.. Ik heb op gegeven moment ticket!=0 staan. Hier controleer ik of er al een order openstaat op dit paar. Zo ja, dan controleren of het een sell positie is.
Zo ja, dan sell positie sluiten, en nieuwe buy order opvoeren. Staat er geen ticket opnen en is de waarde dus 0, dan controle of het een sell optie is overslaan, en direct een nieuwe order opgeven..
Joepie


Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
echter werkt hij nog niet naar behoren.
Het lijkt wel aslof hij stukjes code / controles overslaat.
Hierdoor werden er geen orders geopen, en toen ik op gegeven moment voor elkaar kreeg dat ie orders geopend had, kreeg ik ze weer niet gesloten.
En das natuurlijk wel erg belangrijk.
Een ander punt wat ik nog niet geprogrammeerd heb is de lotsizes.
De stoploss wordt wel automatisch variabel geplaatst.
Nu nog zaak aan de hand van je accountbalance een 2% risico te nemen, en dat te dlen op je aantal pips stoploss, en daaruit de lotsize te berekenen.
Dus nog 2 zaken te regelen, maar het begint nu wel zijn vorm te krijgen.
Daarnaast heb ik het idee dat mijn programma eenvoudige in elkaar zit als andere EA crossing programma's die ik uitgeplozen heb. Lekker simpel..
Wordt dus vervolgd..
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Vanavond testen of dit de oplossing is van mijn order close en send problematiek..
Dit is nu de ode geworden..ipv de code van 2 posts eerder.
Ik controleer eerst of de crossing legitiem is, dan voer ik deze code uit.
else
{
if (MA_Pos=="UP" && Ticket!=0 && Type==1)
{
OrderClose(Ticket);
OrderSend(Ticket);
}
if (MA_Pos=="UP" && Ticket==0)
{
OrderSend(Ticket);
}
if (MA_Pos=="DOWN" && Ticket!=0 && Type==0)
{
OrderClose(Ticket);
OrderSend(Ticket);
}
if (MA_Pos=="DOWN" && Ticket==0)
{
OrderSend(Ticket);
}
}
Ik doe vier vergelijkingen, is een avn de vergelijkingen true dan voert hij deze uit.
De overige 3 zijn dan automatisch false en voert hij niet uit.
Is geen van de 4 true, dan betekent dat er al een positie open staan in de richting van de trend en hoef ik ook niks te doen.
Hopelijk werkt het.
Ik ga nu aan de slag om mijn lotsize te berekenen en die op te nemen in de OrderSend functie. De variabale stoplosses heb ik al code voor, dus dat werkt prima!
to be continued..
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Deze heb ik nu in mijn code gestopt.
//===================================================================
// LotSize uitrekenen op basis van 2% risk en de stoploss
//===================================================================
double TickValue = (MarketInfo(Symbol(),MODE_TICKVALUE));
if(Digits == 5 || Digits == 3)
{
TickValue = TickValue*10;
}
double RiskCapital = AccountEquity()*Risk/100;
double LotSize=(RiskCapital/Pips)/TickValue;
De variabele LotSize gebruik ik vervolgens weer in de OrderSend optie,
zodat ik bij het openen van een positie altijd de maximaal haalbare lotsize hanteer, en mijn winsten maximaliseer, en mijn verliezen altijd niet meer dan 2% is.
Voorbeeldje.
Wat gebeurt er hier?
Eerst bereken ik de waarde van een pip en die stop ik in de TickValue.
Deze waarde haal ik direct uit het systeem.
Vervolgens wordt er gecontroleerd of ik met 3 of 5 cijfers achter de komma werk (sommige MT4 systemen, werken namelijk met 2 en 4 cijfers achter de komma)
Zo ja, dan moet de tickvalue met 10 worden vermenigvuldigd.
Tenslotte reken ik het maximale bedrag uit dat ik mag riskeren door mijn accountbalans op te halen en daar het riskpercentage van te nemen.
Tenslotte reken ik de LotSize uit.
Als ik dus een stoploss heb van 50 pips in ik handel op eur/usd.
Stel dat mijn account 2000 dollar bedraagt. Dan zou ik een risico mogen lopen van 2% = 40 dollar. Dat betekent dus dat ik op die 50 pips stoploss maximaal 80 cent per pip wil betalen. 80 cent per pip komt dan overeen met 0.08 Lots.
Zou de markt echter erg volatiel zijn op het moment dat ik instap, en ik heb mijn stoploss verder weg staan, dus bijvoorbeeld op 150 pips.
Dan wil ik niet meer dan 26,67 cent per pip kwijt zijn. Ik moet dan afronden naar beneden en mijn lotsize wordt dan 0.02, wat overeenkomt met 20 cent per pip.
Please Log in or Create an account to join the conversation.
- Jelle
-
- Offline
- Administrator
-
- Posts: 2940
- Thank you received: 37
Wel supercool overigens dat je met die TickValue automatisch je lotsize aan kunt passen!
"All right. This one time I'll let you ask me about my affairs."
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Maar ik heb bvenstaand er evenuit gehaald, dat van die lotsize en de lotsize ff standaard op 0.01 gezet (10ct per pip)
Want ik kreeg getallen die je niet als lotsize kon opgeven in een ordersend commando, en dan ging ie over de jank.
Ik moet dus eerst zorgen dat de lotsize een getal wordt dat ook door je systeem geaccepteerd wordt.
Vervolgens heb ik nog ene probleem ontdekt..
Ik heb 2 metatraders op mijn pc staan, eentje van ForexYard en eentje van InstaForex.
Wat blijkt, beiden geven over dezelfde periode verschillende resultaten!!
Ik uitzoeken waar dat aan zou kunnen liggen, blijkt de openoing en sluiting van beide dealers anders te liggen, waardoor je geheel andere charts krijgt, dus ook andere ema waarden, en dus andere crossings.. lekker is dat.
Ik ga beide systemen even van mijn pc halen, en opnieuw erop zetten, zodat ik schone lei aan data heb. Ik had bij ForexYard nog wel eens een import gedaan van gegevens namelijk..
Erg jammer dat dit niet geregulierd is. Iemand in Japan ziet hierdoor hele andere candlestick formaties als een NewYorker of als een Europeaan, en ook dat hangt weer af van je broker en waar de broker weer zijn stream aan data vandaan haalt.
Dus ik kan een crossing hebben, terwijl iemand in Japan dat niet heeft..
De resultaten zijn heel verschillend..
Voorbeeldje, op eur/usd had ik bij instaforex in 2011 tot op heden 20% winst gehaald.
Op forexYard heb ik daar 3%. Vaag he? Ik ben trouwens nog wel maar 2 currencies tegen gekomen die in het verlies draaiden.. Maar ik moet wel betrouwbare data hebben..
En officieel betekend dat ik dat met ForexYard moet doen, omdat ik daar live mee trade.. maar vaag is het allemaal wel!
Please Log in or Create an account to join the conversation.
- Seasalt-McFish
-
- Offline
- Elite Member
-
- Posts: 381
- Thank you received: 0
Je zou ook de ene voor je signaal kunnen gebruiken en de andere voor trades, maar dan wordt het wel weer handwerk. Misschien valt het verschil echter te omzeilen door omschrijven naar b.v. de 4h chart of 1h chart?
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Ik heb ondertussen ook een demo account aangemaakt bij FXCM.
En raad eens..ook die hanteert weer een ander tijd..
Ik zal het een dezer dagen wel even posten..
Please Log in or Create an account to join the conversation.
- Seasalt-McFish
-
- Offline
- Elite Member
-
- Posts: 381
- Thank you received: 0
De afstand tussen sluiten van de daily CS en de piek in volatiliteit van de London open kan n.m.i. heel wat verschillen in openingskoers opleveren. Daarom was ik daar een tijdje terug ook naar op zoek. Ik vond het echter niet.
Weliswaar was de tijd anders, maar de CS opende wel op hetzelfde moment.
Ben dus wel benieuwd naar je bevindingen

Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
Please Log in or Create an account to join the conversation.
- zeebaars
-
- Offline
- Premium Member
-
- Posts: 116
- Thank you received: 0
nee , je bankroll is je eigen geld waarvan je zeker bent, hiervan wil je max 2% op het spel zetten per trade. die 2% is je SL.
Hierbij een rekenvoorbeeld zoals ik er mee werk.
stel je hebt 1000$ (rekeningbalance) en hebt nog 10 trades lopen die het allemaal goed doen (de slechte zijn uitgestopt) en waarvan je de stoploss naar break even heb veschoven zodat ze niet verlieslatend kunnen worden.
Doordat de openstaande trades positief zijn is de equity veel hoger. neem als extreem rekenvoorbeeld 2000$.
Als je nu een extra trade opent met een risk van 2% van 1000$ (rek bal) is 20$ of
2% van 2000$(eq) is 40$.
Moest er ergens in de wereld iets ergs gebeuren en de trades keren tegen je. gaat de stoploss overal geraakt worden. Zowel van de openstaande als van je nieuwe trade.
in geval 1 gaat je rekening balance naar 980$ in geval 2 naar 960$ en is je risk per trade 4% ipv 2%.
Als je dan nog eens 3 risicovolle trades gelijktijdig open staan hebt is je totale risico 12% ipv 6% .
In weze maakt het niet veel uit of je nu 2 of 3% risk per trade neemt het is maar dat je je risico beperkt en dat je ook in een minder periode voldoende balance overhoud om verder te kunnen blijven traden.
Dus je stoploss is 2% van je balance voor de trades waarvan hij nog niet verschoven is naar BEP . en dus ook SL is 2% van het geld waarvan je zeker bent en dus niet over de winst van de nog openstaande trades want die zou je nog wel eens terug aan de markt kunnen moeten geven.
Ik hoop dat je er wat aan hebt.
accountcijfers kunnen niet liegen, mensen des te beter...
Please Log in or Create an account to join the conversation.
- Seasalt-McFish
-
- Offline
- Elite Member
-
- Posts: 381
- Thank you received: 0
Hoewel het vervelend is voor je test, is het misschien aan de andere kant te gebruiken voor handmatige trades.
Het zou bv, te overwegen zijn om aanpassingen per broker te maken?
Please Log in or Create an account to join the conversation.
- Jonkie76
-
Topic Author
- Offline
- Platinum Member
-
- Posts: 1001
- Thank you received: 0
@Seasalt, ik gebruik natuurlijk maar 1 broker om op te handelen. Dus aanpassing maken per boker is geen doen. Een systeem moet robuust zijn. De ene keer werkt het in je voordeel, de andere keer in je nadeel, maar over de lange termijn moet je systeem altijd winstgevend zijn.
@Iedereen.....
BIG DESCEPTION!!
Ik heb mijn ea klaar! En hij werkt ook nog..Dus dan denk je, dan ben ik toch happy?
Nou nee.. de resultaten vallen ontzettend tegen. Ik heb de ea laten lopen op basis van een vaste lotsize, en een keer waar hij de lotsize berekend aan de hand van je bankaccount en vaste riskpercentage van 2%.
De ene currency behaal ik 10 - 20 % op de afgelopen 8 maand, bij een ander 10-20 % verlies. Met drawdowns van tot wel 40 %..en dat is veel te veel..
En toen ik mijn 2% risk hanteerde ging het zelfs nog slechter!!
De trends konden de vele valse breakouts niet opvangen.
Ik heb zelfs aanpassingen geprobeerd, door 5/20 crossings, 3/8 crossings en langere periode crossings te proberen, of met vaste stoplosses en vaste lotsizes..
Pure ema crossings zijn dus op termijn niet winstgevend!
Vervolgens heb ik direct een nieuwe ea gebouwd.(in uurtje klaar, dus dat leren programmeren werpt zijn vruchten af..)
De Phoenix Method, waar er controle is van de daily chart of er een trend is.
Indien 3/5 crossing op de 4uur chart, en op daily ligt de 3 en de 5 boven de 13, dan geldige crossing. Indien crossing van 3/8 dan exit.
Maar helaas ... geen goede resultaten!!
Please Log in or Create an account to join the conversation.
- Seasalt-McFish
-
- Offline
- Elite Member
-
- Posts: 381
- Thank you received: 0
Toch denk ik dat het wel degelijk verschil kan maken wanneer de candlesticks openen, afhankelijk van de currency.
Deze hebben allemaal hun eigen karakter en zouden dus signalen kunnen krijgen op verschillende momenten.
Ik denk alleen dat dit inderdaad niet goed in een soort universele EA valt vast te leggen. In dat geval was die er waarschijnlijk allang geweest. Er zijn gewoon teveel neveninvloeden.
Je programmeerwerk is echter heel interessant en ik hoop dan ook snel tijd te vinden om er eens goed in te duiken. Ik zie zeker mogelijkheden voor een indicatoropzet, in combinatie met een flexibele checklist.
Veel succes in ieder geval met de voortgang!
Please Log in or Create an account to join the conversation.