Systeemhandel

Counters in MetaTrader 5: Hoe je 'X' keer telt en doorgaat
MetaTrader5
Counters in MetaTrader 5: Hoe je 'X' keer telt en doorgaat

01. Tel 'X' keer en ga dan verder. Stap 01 - Maak een variabele aan voor de teltlimiet. Je kunt dit ook gebruiken als een invoervariabele voor optimalisatie in je code. Stap 02 - Maak een andere variabele aan om de getelde limiet op te slaan (hoe vaak er is geteld). Stap 03 - Zodra de Teller gelijk is aan je teltlimiet, is het tijd om de door jou opgegeven codeblock uit te voeren. Stap 04 - Zorg ervoor dat je de teller reset nadat de code is uitgevoerd. Anders blijft hij oneindig tellen. Je kunt ook filtervoorwaarden instellen voor het Teller-blok, zoals: >> "ALS dit waar is, tel dan één keer." input int count = 50; // Stel de teltlimiet in als invoer int Teller; // teller variabele // Expert Initializing -------------------- int OnInit() { return(INIT_SUCCEEDED); } // Expert DeInitializing ------------------- void OnDeinit(const int reason) { } // Expert OnTick -------------------------- void OnTick() { Teller ++; // voeg 1 toe aan de teller bij elke tick. Comment("Huidige Telling -:", Teller); if(Teller == count) // Tel 'X' keer en ga verder {      // Jouw code gaat hier...... Alert(count," Keer geteld"); Teller = 0; // Reset de teller aan het eind van je codeblock. Dit is noodzakelijk. } } // OnTick Einde  <<---------------------- 02. Ga 'X' keer door en wacht 'X' keer voordat je doorgaat. Deze methode kan worden gebruikt als een wacht- en doorgaan mechanisme. Stap 01 - Maak een variabele aan voor de teltlimiet en wachtlimiet. Je kunt deze ook gebruiken als invoervariabelen voor optimalisatie in je code. Stap 02 - Maak een andere variabele aan om de getelde limiet en wachtlimieten op te slaan (hoeveel keer er is geteld en gewacht). Stap 03 - Zodra de Teller gelijk is aan je teltlimiet, is het tijd om de door jou opgegeven codeblock uit te voeren. Stap 04 - Zodra de wachtvariabele gelijk is aan je wachtlimiet, is het tijd om even te wachten. Stap 05 - Wanneer de wachtlimiet is bereikt, zorg ervoor dat je zowel de teller als de wachtvariabele reset. Anders stopt het met werken. Je kunt ook filtervoorwaarden instellen voor de Teller- en Wacht-blokken. Bijvoorbeeld: >> "ALS dit waar is, wacht dan even." input int count = 50; // Stel de teltlimiet in als invoer input int wait = 50; // Stel de wachtlimiet in als invoer int Teller; // teller variabele standaardwaarde is "0" int Wacht; // wacht variabele standaardwaarde is "0" // Expert Initializing -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Expert DeInitializing ------------------- void OnDeinit(const int reason)   {   } // Expert OnTick -------------------------- void OnTick()   {    Comment("Getelde Ticks -: ", Teller, "\n", "Gewacht Ticks -: ", Wacht);    if(Teller < count) // Ga 'X' keer door      {       Teller++; // werk de teller bij       // Jouw code gaat hier.      }    else       if(Wacht < wait) // Wacht 'X' keer         {          Wacht++; // werk de wachtvariabele bij          // Jouw code gaat hier.         }    if(Wacht == wait) // Wachtlimiet is bereikt      {       Teller = 0; // reset teller       Wacht = 0; // reset wacht      }   } // OnTick Einde  <<---------------------- //+------------------------------------------------------------------+ Special -: Je kunt de "Ga X keer en stop" functionaliteit coderen door de bovenstaande code aan te passen en het wachtcode block te verwijderen. Dan telt het voor een specifiek aantal keren en stopt totdat de teller is gereset. Je kunt het overal in je code resetten als je deze variabelen globaal maakt.

2024.04.14
Detecteer Nieuwe Candles in MetaTrader 5 met een Eenvoudige Code
MetaTrader5
Detecteer Nieuwe Candles in MetaTrader 5 met een Eenvoudige Code

In onze vorige code hebben we de tijd gebruikt om een nieuwe candle te detecteren. Dit keer gaan we de bar telling gebruiken om een nieuwe bar te detecteren. Deze methode is veel lichter en sneller dan de tijdsmethode.Declareer de variabelen in integer datatype om de bar telling op te slaan.Wijs de bar telling toe aan "BarsTotal_OnInt" tijdens de initialisatie.Gebruik de iBars(); functie om de bar telling toe te wijzen aan de "BarsTotal_OnTick" variabele op de live grafiek. Deze variabele wordt bij elke tick bijgewerkt.Gebruik comments en alerts om de nauwkeurigheid van de code te controleren.int BarsTotal_OnInt; int BarsTotal_OnTick; //+------------------------------------------------------------------+ //| Expert initialisatiefunctie                                   | //+------------------------------------------------------------------+ int OnInit()   {      BarsTotal_OnInt = iBars(NULL,PERIOD_CURRENT); // Wijs de totale bars toe bij initialisatie    return(INIT_SUCCEEDED);   }    void OnTick() // OnTick functie   {      BarsTotal_OnTick = iBars(NULL,PERIOD_CURRENT); // Slaat de laatste hoeveelheid op       if(BarsTotal_OnTick > BarsTotal_OnInt) // Nieuwe bar is aangekomen    {     BarsTotal_OnInt = BarsTotal_OnTick; // Bijwerkt de geschiedenis.     Alert("Nieuwe Bar is aangekomen");     Comment("Aantal Bars in geschiedenis -: ", BarsTotal_OnInt, "\n", "Aantal Bars in Live -: ", BarsTotal_OnTick); // Jouw code gaat hier. // Je kunt een "flag" / variabele bijwerken om deze later ook te gebruiken.    }   }

2024.04.11
Beheer jouw Trades met de Virtual SL TP Pending Indicator voor MetaTrader 4
MetaTrader4
Beheer jouw Trades met de Virtual SL TP Pending Indicator voor MetaTrader 4

Welkom bij deze blogpost waar we de Virtual_SL_TP_Pending_with_SL_Trailing.mq4 bespreken. Deze handige tool is ontworpen om jouw trades te beheren door virtuele stop loss en take profit niveaus in te stellen, samen met een virtuele pending order en een optionele trailing stop loss functie. Hoe Werkt het Script? Hier is een overzicht van wat deze script allemaal kan doen: Auteursrecht en Link: Hier vind je de auteursrechtinformatie en een link naar de website van de maker. Versie: Geeft aan welke versie van het script je gebruikt. Beschrijving: Dit gedeelte biedt informatie over het script, inclusief het e-mailadres van de maker, details over intellectuele eigendom en een waarschuwing dat je het programma op eigen risico gebruikt. Invoervariabelen: Externe variabelen waarmee je het gedrag van de EA kunt aanpassen, waaronder: StopLossPoints: Initiële stop loss in punten. TakeProfitPoints: Initiële take profit in punten. SpreadThreshold: Drempelwaarde voor de spread voor virtuele stop loss/take profit in punten. TrailingStopPoints: Trailing stop in punten voor de virtuele pending order. EnableTrailing: Optie om de trailing stop in of uit te schakelen. Globale Variabelen: Variabelen die door het hele script worden gebruikt om de initiële spread, virtuele stop loss, virtuele take profit en de prijs van de pending order op te slaan. Initialisatiefunctie (OnInit): Dit is de functie die de EA initialiseert wanneer deze aan een grafiek wordt gekoppeld. Het berekent de initiële virtuele stop loss, take profit en prijs van de pending order op basis van de invoervariabelen. Tickfunctie (OnTick): Deze functie wordt aangeroepen bij elke prijsverandering. Het controleert of de spread is gestegen boven de drempel en past de virtuele stop loss, take profit en prijs van de pending order hierop aan. Ook houdt het in de gaten of de prijs de virtuele stop loss of take profit raakt en sluit de positie indien nodig. Bovendien, als de trailing stop is ingeschakeld en de prijs de prijs van de pending order bereikt, plaatst het een virtuele pending order met een trailing stop loss. Sluit Positie Functie (ClosePosition): Deze functie sluit de positie wanneer de prijs de virtuele stop loss of take profit raakt. Plaats Pending Order Functie (PlacePendingOrder): Plaatst een virtuele pending order met een trailing stop loss als de trailing stop is ingeschakeld. Deze EA biedt een flexibele manier om jouw trades te beheren met behulp van virtuele niveaus en een trailing stop functie, waardoor je jouw trade management proces in MetaTrader 4 kunt automatiseren.

2024.04.10
Eenvoudige Trendvolgende Strategie voor MetaTrader 4: Koop en Verkoop Slim
MetaTrader4
Eenvoudige Trendvolgende Strategie voor MetaTrader 4: Koop en Verkoop Slim

Ben je op zoek naar een eenvoudige manier om te profiteren van trends op de markt? Deze MetaTrader 4 (MT4) script biedt een gebruiksvriendelijke trendvolgende strategie voor het kopen en verkopen, gebaseerd op vooraf gedefinieerde voorwaarden. Laten we de belangrijkste onderdelen van het script bekijken: Initialisatie: Het script initialiseert en print een bericht wanneer het succesvol is gestart. Deinitialisatie: Het script deinitialiseert en print een bericht wanneer het is stopgezet. OnTick Functie: Deze functie wordt geactiveerd elke keer er een nieuwe tick (prijsverandering) in de markt is. a. Reset Volgvariabelen: Het script reset de variabelen die de open koop- en verkoopposities bijhouden. b. Controleer Open Orders: Het script doorloopt alle open orders om te kijken of er bestaande koop- of verkoopposities zijn. c. Open Kooppositie: Als er geen open kooppositie is en de "OpenBuyPosition" vlag staat op waar, probeert het script een kooppositie te openen op basis van de huidige biedprijs. Er worden een stop loss en take profit ingesteld voor de kooporder. d. Open Verkooppositie: Als er geen open verkooppositie is en de "OpenSellPosition" vlag staat op waar, probeert het script een verkooppositie te openen op basis van de huidige laatprijs. Ook hier worden stop loss en take profit ingesteld voor de verkooporder. e. Controleer Gesloten Orders: Het script controleert op gesloten orders. Als een koop- of verkooporder met winst is gesloten, wordt de bijbehorende positie vlag gereset. Invoervariabelen: Het script biedt invoervariabelen voor lotgrootte, stop loss, take profit en vlaggen om te bepalen of er koop- of verkoopposities geopend moeten worden. Disclaimer: Het script bevat een waarschuwing waarin gebruikers worden aangespoord om het op eigen risico te gebruiken, en de maker vrijwaart zich van enige aansprakelijkheid voor mogelijke schade of verlies. Dit script is ontworpen om het proces van het uitvoeren van koop- en verkooporders te automatiseren op basis van een continue trendvolgende strategie. Je kunt parameters zoals lotgrootte en handelsrichting eenvoudig aanpassen. Maar wees voorzichtig en test grondig voordat je het in live handelsomgevingen inzet!

2024.04.10
Trailing Stop Instellen in MetaTrader 5: Een Stapsgewijze Gids
MetaTrader5
Trailing Stop Instellen in MetaTrader 5: Een Stapsgewijze Gids

Deze code werkt zowel met als zonder Stop Loss. Eisen Je moet "Trade.mqh" toevoegen om toegang te krijgen tot de CTrade klasse, waarmee je kunt werken met posities en orders. #include <Trade\Trade.mqh> // <<------------------------------------------ Voeg deze "Trade.mqh" toe om toegang te krijgen tot de CTrade Klasse Stel een invoervariant in om de trailing afstand aan te passen. Dit is niet noodzakelijk, maar wel handig. input double Trailing_Step = 3.0; Je moet een instantie van de CTrade klasse definiëren. De naam kan je zelf kiezen. Het is beter om deze te definiëren na de OnInit event handler. Vervolgens moet je een if-statement maken om te controleren of er op dit moment posities actief zijn. Deze statement roept de Check_TrailingStop(); functie aan bij elk tick. Dit is belangrijk omdat de EA het vloeiend en nauwkeurig moet bijhouden. Vergeet niet om deze statement aan het begin van de OnTick event handler te plaatsen voor een goede werking. //+------------------------------------------------------------------+ //| Expert initialisatie functie                                   | //+------------------------------------------------------------------+ int OnInit()   { //--- timer maken    EventSetTimer(60); //---    return(INIT_SUCCEEDED);   } CTrade trade; // <<------------------------------------------ Declare de "CTrade" klasse. Je kunt "trade" vervangen door een andere naam. void OnTick()   {    if(PositionsTotal() > 0) // roept de trailing stop functie aan bij elk tick als er posities open zijn.      {       Check_TrailingStop();      }          } Je moet een aangepaste functie declareren genaamd Check_TrailingStop(); (je kunt elke naam kiezen). Deze functie doorloopt alle open posities en past ze aan op de gewenste afstand. void Check_TrailingStop()   {    int totalPositions = PositionsTotal();    for(int count =0; count < totalPositions; count++)      {       ulong TicketNo = PositionGetTicket(count); // Verkrijg het positie ticketnummer met de 'index' van de positie.       if(PositionSelectByTicket(TicketNo)) // Selecteer een positie met het ticketnummer (we hebben het ticketnummer al gekozen).         {          if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) // Controleer het type positie.            {             double openPrice = PositionGetDouble(POSITION_PRICE_OPEN);             double stopLoss  = PositionGetDouble(POSITION_SL);        // <<------------------- Verkrijg de huidige stop loss van de positie             double takeProfit = PositionGetDouble(POSITION_TP);             double bidPrice  = SymbolInfoDouble(_Symbol,SYMBOL_BID);             ulong ticket = PositionGetTicket(count);             double trailingLevel = NormalizeDouble(bidPrice - (Trailing_Step * Point()),_Digits);             if(stopLoss < openPrice) // Geen stop loss is waar.               {                if(bidPrice > openPrice && trailingLevel > openPrice) // Draait slechts één keer per positie. Stelt de eerste SL in.                 trade.PositionModify(ticket,trailingLevel,takeProfit); // Pas de trailing stop aan met behulp van "CTrade.trade"               }             if(bidPrice > openPrice && trailingLevel > stopLoss) // Controleer of het trailing niveau boven het vorige niveau is.               {                trade.PositionModify(ticket,trailingLevel,takeProfit); // Pas de trailing stop aan met behulp van "CTrade.trade"               }            }         if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)        {             double openPrice = PositionGetDouble(POSITION_PRICE_OPEN);             double stopLoss  = PositionGetDouble(POSITION_SL);             double takeProfit = PositionGetDouble(POSITION_TP);             double bidPrice  = SymbolInfoDouble(_Symbol,SYMBOL_BID);             double askPrice  = SymbolInfoDouble(_Symbol,SYMBOL_ASK);             ulong ticket = PositionGetTicket(count);             double trailingLevel = NormalizeDouble(askPrice + (Trailing_Step * Point()),_Digits);             if(stopLoss < openPrice) // Geen stop loss is waar.               {                if(askPrice < openPrice && trailingLevel < openPrice) // Draait slechts één keer per positie. Stelt de eerste SL in.                 trade.PositionModify(ticket,trailingLevel,takeProfit); // Pas de trailing stop aan met behulp van "CTrade.trade"               }             if(askPrice < openPrice && trailingLevel < stopLoss) // Controleer of het trailing niveau boven het vorige niveau is.               {                trade.PositionModify(ticket,trailingLevel,takeProfit); // Pas de trailing stop aan met behulp van "CTrade.trade"               }            }     }     }

2024.04.05
Eenvoudige Code voor het Detecteren van een Nieuwe Bar of Kaars in MetaTrader 5
MetaTrader5
Eenvoudige Code voor het Detecteren van een Nieuwe Bar of Kaars in MetaTrader 5

In dit artikel bespreken we een handige code die een Nieuwe Bar of Nieuwe Kaars detecteert zodra deze binnenkomt. Het basisprincipe van de code is vrij eenvoudig. Allereerst slaat de code de Tijd van de vorige bar/kaars op. Vervolgens wordt er 60 seconden (wat gelijk staat aan 1 minuut; je kunt de tijd aanpassen zoals je wilt) toegevoegd aan de tijd van de vorige bar, wat de sluitingstijdwaarde van de huidige bar/kaars oplevert. Wanneer: Huidige Tijd = sluitingstijdwaarde van de huidige bar/kaars. Dit betekent dat er een nieuwe bar is ontvangen / de huidige bar is gesloten. In deze code voorkomt de vlag (de boolean variabele 'NewBarReceived') dat deze code meerdere keren wordt aangeroepen. Dit betekent dat dit codeblok slechts één keer per bar/kaars wordt uitgevoerd. De Comment(); en de playsound("ok.wav"); worden gebruikt om de nauwkeurigheid van het codeblok te controleren. Je kunt ze verwijderen als je dat wilt. De vlag wordt weer op false gezet zodra de huidige tijd boven de sluitingstijd van de huidige kaars is, zodat we kunnen controleren of de volgende bar arriveert. (Bekijk de commentaren voor meer uitleg). //+------------------------------------------------------------------+ //|                                                Nieuwe Bar Detect.mq5 | //|                                                   door H A T Lakmal | //|                                           https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarReceived = false; // Vlag voor controle. //+------------------------------------------------------------------+ //| Expert initialisatie functie                                   | //+------------------------------------------------------------------+ int OnInit()   { //--- timer aanmaken    EventSetTimer(60); //---    return(INIT_SUCCEEDED);   } //+------------------------------------------------------------------+ //| Expert deinitialisatie functie                                 | //+------------------------------------------------------------------+ void OnDeinit(const int reason)   { //--- timer vernietigen    EventKillTimer();   } //+------------------------------------------------------------------+ //| Expert tick functie                                             | //+------------------------------------------------------------------+ void OnTick()   {    datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1);    datetime TimeCurrentClose = TimePreviousBar + 60; // Sluitingstijd van de huidige bar.    datetime Time_Current = TimeCurrent();    if(Time_Current == TimeCurrentClose && NewBarReceived == false)      {       PlaySound("ok.wav");   // Voor de bevestiging van de werking.       NewBarReceived = true; // Update de vlag om meerdere aanroepen te voorkomen.       // Jouw code komt hier ----- (Doe iets)      }    else       if(Time_Current > TimeCurrentClose)         {          NewBarReceived = false; // Reset de vlag voor de volgende bar.          // Jouw code komt hier ----- (Doe iets)         }    Comment("\n" +  "\n" +  "Tijd huidige bar -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +            "\n" + "Tijd huidige sluiting -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +            "\n" + "Tijd huidige -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" +"\n" + "Een nieuwe bar ontvangen -: " + NewBarReceived); // Voor controle van berekeningen   } //+------------------------------------------------------------------+ //| Timer functie                                                   | //+------------------------------------------------------------------+ void OnTimer()   { //---   } //+------------------------------------------------------------------+ //| Handelsfunctie                                                   | //+------------------------------------------------------------------+ void OnTrade()   { //---   } //+------------------------------------------------------------------+ //| ChartEvent functie                                               | //+------------------------------------------------------------------+ void OnChartEvent(const int id,                   const long &lparam,                   const double &dparam,                   const string &sparam)   { //---   } //+------------------------------------------------------------------+  

2024.04.05
Optimaliseer je Trading met de Close_on_PROFIT_or_LOSS in Account Valuta
MetaTrader4
Optimaliseer je Trading met de Close_on_PROFIT_or_LOSS in Account Valuta

Welkom bij mijn nieuwe blogpost! Vandaag bespreken we een handige tool voor MetaTrader 4: de Close_on_PROFIT_or_LOSS in Account Valuta. Dit is een Expert Advisor (EA) die je helpt om je trades effectief af te sluiten op basis van winst of verlies in jouw account valuta. //+------------------------------------------------------------------------------------------------------------------------------+ //| Wat is er nieuw in de Close_on_PROFIT_or_LOSS in Account Valuta V2: //| Verbeterde Foutafhandeling: De code is nu uitgerust met foutafhandeling, zodat je beter kunt omgaan met situaties waarin orders niet kunnen worden gesloten of verwijderd. Code Optimalisatie: De code is geoptimaliseerd om herhaling te vermijden en de leesbaarheid te verbeteren. Efficiëntie: Onnodige lussen of berekeningen zijn verwijderd voor een snellere uitvoering. Opruimen van Chart Objecten: Alle chart objecten worden gewist wanneer de EA wordt gedeactiveerd. //+------------------------------------------------------------------------------------------------------------------------------+ Wanneer je de waarde op 0 instelt, zal de EA niets doen. De waarde voor Positive_Closure_in_Account_Currency moet hoger zijn dan het huidige eigen vermogen, anders worden de trades onmiddellijk uitgevoerd. Voorbeeld: Als je eigen vermogen 55.000€ is en je stelt Positive_Closure_in_Account_Currency in op 55.500€, dan wil je 500€ winst maken. Positive_Closure_in_Account_Currency > 0 && < 55.000€ = onmiddellijke uitvoering Voor de Negative_Closure_in_Account_Currency geldt dat deze lager moet zijn dan het huidige eigen vermogen, anders worden de trades ook onmiddellijk uitgevoerd. Voorbeeld: Als je eigen vermogen 55.000€ is en je stelt Negative_Closure_in_Account_Currency in op 54.500€, dan wil je maar 500€ verliezen. Negative_Closure_in_Account_Currency > 55.000€ = onmiddellijke uitvoering Houd er rekening mee dat je spread spikes kunt vermijden door het spreadgetal te verlagen, maar de markt doet wat hij wil en hogere winsten of verliezen kunnen zich voordoen. Als je de spread lager instelt dan de gemiddelde spread voor de verhandelde paren, worden die posities niet uitgevoerd. WAARSCHUWING: Gebruik deze software op eigen risico. De Forex-markt is zeer volatiel! #property copyright &nbsp; &nbsp; &nbsp;"Copyright 2024, MetaQuotes Ltd." #property link &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "https://www.mql5.com" #property version &nbsp; &nbsp; &nbsp; &nbsp;"1.01" #property description &nbsp; &nbsp;"persinaru@gmail.com" #property description &nbsp; &nbsp;"IP 2024 - free open source" #property description &nbsp; &nbsp;"Deze EA sluit alle trades op winst en verlies berekend in de account valuta." #property description &nbsp; &nbsp;"" #property description &nbsp; &nbsp;"WAARSCHUWING: Gebruik deze software op eigen risico." #property description &nbsp; &nbsp;"De maker van dit script kan niet verantwoordelijk worden gehouden voor schade of verlies." #property description &nbsp; &nbsp;"" #property strict #property show_inputs extern string &nbsp; Closures = "EA sluit alle trades en openstaande orders wanneer een winst of verlies wordt bereikt. Winst en verliezen worden berekend in account valuta.";&nbsp; extern int Positive_Closure_in_Account_Currency &nbsp; &nbsp; &nbsp;= 0;&nbsp; extern int Negative_Closure_in_Account_Currency &nbsp; &nbsp; &nbsp;= 0;&nbsp; extern int Spread = 10;

2024.03.25
Leer Handelsstrategieën Met Neurale Netwerken in MQL5
MetaTrader5
Leer Handelsstrategieën Met Neurale Netwerken in MQL5

Inleiding tot Neurale Netwerken voor Algorithmisch TradingsHet boek Neurale netwerken voor algorithmisch trading met MQL5 is jouw ultieme gids voor het toepassen van machine learning en neurale netwerken in de handel. Dit boek is speciaal geschreven voor algorithmische traders die willen leren hoe ze handelsstrategieën kunnen ontwikkelen met behulp van geavanceerde technieken van kunstmatige intelligentie.Wat je kunt VerwachtenHet boek bestaat uit 7 hoofdstukken die alles behandelen wat je nodig hebt om aan de slag te gaan met neurale netwerken en deze te integreren in jouw trading robots in MQL5. Met duidelijke uitleg leer je de basisprincipes van machine learning en ontdek je verschillende soorten neurale netwerken, waaronder convolutionele en recurrente modellen, evenals complexere architecturale oplossingen en aandachtmechanismen.Praktische Voorbeelden en IntegratieOm je te helpen deze oplossingen in jouw trading robots binnen de MQL5-omgeving te integreren, biedt het boek een overvloed aan praktische voorbeelden. Daarnaast worden verschillende methoden besproken voor het verbeteren van de modelconvergentie, zoals Batch Normalization en Dropout.Trainingsgids voor Neurale NetwerkenBovendien biedt de auteur praktische begeleiding over hoe je neurale netwerken kunt trainen en deze kunt opnemen in jouw handelsstrategieën. Je leert hoe je trading Expert Advisors kunt creëren om de prestaties van getrainde modellen op nieuwe data te testen, zodat je hun potentieel in de echte financiële markten kunt evalueren.Waarom Dit Boek?"Neurale netwerken voor algorithmisch trading met MQL5" is niet zomaar een boek: het is een handige gids die je kan helpen geavanceerde besluitvormingsmethoden in je tradingalgoritmes te integreren en mogelijk je financiële resultaten te verbeteren. Begin vandaag nog met het leren van de geavanceerde mogelijkheden van machine learning en til jouw trading naar een hoger niveau.

2024.02.29
Koop, Verkoop en Sluit: Handmatige Trading EA voor Beginners in MetaTrader 4
MetaTrader4
Koop, Verkoop en Sluit: Handmatige Trading EA voor Beginners in MetaTrader 4

Als je net begint met traden, dan is de Handmatige Trading EA [@Buy_Sell_Close] precies wat je nodig hebt! Deze EA is ideaal voor beginners en kan zowel in de backtesting-modus als in live trading worden gebruikt. Met deze tool kun je je eigen trading systeem oefenen in de backtesting-modus, wat een geweldige manier is om je vaardigheden te verbeteren. De [@Buy_Sell_Close] biedt handmatige bediening, zodat je de snelheid van de backtest kunt pauzeren of aanpassen. Dit maakt het oefenen van handmatig traden een stuk eenvoudiger. Introductie: Lots: Met de [Lots] knop kun je het aantal lots aanpassen in het invoerveld. BUY: Druk op de [BUY] knop om een extra kooporder te plaatsen bovenop het huidige aantal lots. SELL: Met de [SELL] knop plaats je een verkooporder voor de aangegeven lotgrootte. SL Wijzig TP: Met de [SL Wijzig TP] knop pas je de Stop Loss en Take Profit aan, waarbij alle orders ten opzichte van de huidige prijs worden aangepast. Sluit Alle Aankopen: Met de [Close All Buy] knop sluit je alle openstaande kooporders. Sluit Alle Verkopen: Met de [Close All Sell] knop sluit je alle openstaande verkooporders. Sluit Alle Orders: Deze knop sluit alle actieve orders. Rechts van het scherm zie je informatie over openstaande orders en de bijbehorende winst. Parameter Beschrijving: MM: Automatisch gebruik van de risicofactor om de standaard lotgrootte te berekenen. Risico: Bij een balans van 10.000 euro is de instelling 0.2 voor 0.2 lots. Lots: Vaste lots als MM op FALSE staat, dan gebruik je dit vaste aantal lots. SL: Stoploss: standaard ingesteld op 250 micro-punten. TP: Take Profit: standaard ingesteld op 500 micro-punten. Andere parameters zijn gerelateerd aan de gebruikersinterface. Met deze EA kun je jouw eigen trading systeem oefenen. Bedankt voor het lezen en veel succes met traden!

2024.02.29
Optimaliseren van Lotgrootte en Aantal Orders voor Grid en Martingale Strategieën
MetaTrader4
Optimaliseren van Lotgrootte en Aantal Orders voor Grid en Martingale Strategieën

Als trader weet je hoe belangrijk lotgrootte en het aantal trades zijn voor strategieën zoals Grid en Martingale. Deze aspecten kunnen het verschil maken tussen winst en verlies. We vragen ons vaak af wat er in het verleden met een bepaald symbool is gebeurd tijdens range zones. Hoe vaak is de prijs tussen twee prijsniveaus van een range zone teruggekaatst? Dit noem ik het Bounce Number. Dit getal kan berekend worden door een statistische analyse van de geschiedenis van elk symbool op de markt. Laten we dit verduidelijken met afbeelding 1. Afbeelding 1: Definitie van het Bounce Number, doel en toepassingen De afbeelding laat zien hoe prijsbewegingen statistieken genereren voor de Bounce Number Tool. Om vertraging op de tool te creëren, heb ik deze als een EA ontwikkeld die de Sleep-functie gebruikt. Deze functie voorkomt dat de grafiek crasht door het hoge aantal candles dat op de invoer van de tool is ingesteld. De andere afbeelding (Afbeelding 2) toont een beknopte grafische structuur van de tools en de betekenis van de objecten. Afbeelding 2: Statistieken van het Bounce Number. Gebruik van de tool: Volgens afbeelding 2, als we Bouncing Channel Half Height instellen op 600 punten: zijn er 6 verschillende bounce-nummers van 1 tot 6 voor dit symbool.Bounce nummer 2 betekent dat de prijs vanuit het midden van het bounce-kanaal (hoogte 2 * 600 = 1200 punten) beweegt en een keer de rode en een keer de blauwe lijn raakt voordat het het TP van 1200 punten bereikt. Voor bounce nummer 5 betekent dit dat de prijs vanuit het midden van het kanaal begint en 2 keer de rode lijn en 3 keer de blauwe lijn raakt, of vice versa, voordat het TP van 1200 punten wordt bereikt. Dit geldt ook voor de andere bounce-nummers.We hebben geen bounce nummer 7, wat betekent dat er geen 7 keer terugkaatsing is geweest tussen de rode en blauwe lijnen (met 1200 punten afstand) in de hele geschiedenis die in de invoer van de tool is geselecteerd. Houd er rekening mee dat als je meer historische data selecteert (Max aantal terugblik candles), de kans om 7 bounces te vinden toeneemt. Maar zoals we zien, is zelfs de kans op 6 bounces 22 in totaal 9020 items waarbij de prijs TP’s heeft geraakt. Wat zit er in de invoer van de Tool: - Max aantal terugblik candles: Net als bij andere scan-tools moet je voorzichtig zijn met het getal dat je voor dit veld instelt. Verhoog het niet dramatisch om geheugencrashes te voorkomen.- Tijdframe: Het tijdframe van de candles die we willen gebruiken om bounces van de kanaalgrenzen en de aanraking van TP-lijnen te vinden. Gebruik een lager tijdframe voor smalle kanalen. Als je niet weet wat je moet instellen, gebruik dan bij voorkeur het M1 tijdframe.- Bouncing Channel Half Height: Dit is de afstand van de groene lijn tot de rode en blauwe lijnen, uitgedrukt in punten.- Achtergrondkleur van de grafiek- Kleur Bar Chart 1/Kleur Bar Chart 2: om de statistische balken een beetje flair te geven.- Kleur van de telcellen- Kleur van de Bounce Numbers Cell- Kleur van de laadbalk: Tijdens de berekening helpt deze laadbalk de gebruiker te weten of het werkt en hoe snel de berekeningen zijn. - Een knop toegevoegd om te starten en het aantal historische candles vanaf het scherm in te voeren.

2024.01.12
Geluidssignaal bij Verbinding en Ontkoppeling - Een Handige Tool voor MetaTrader 5
MetaTrader5
Geluidssignaal bij Verbinding en Ontkoppeling - Een Handige Tool voor MetaTrader 5

Als trader weet je dat connectiviteit cruciaal is. Daarom is deze eenvoudige tool ontworpen om je een geluidssignaal te geven bij het verbinden of ontkoppelen van MetaTrader 5. Om deze tool te laten werken, voeg je de geluidsbestanden in WAV-formaat toe in de MQL5\Files\Sounds map. Kopieer de onderstaande code en compileer de Utility. De bijgevoegde code bevat opmerkingregels, omdat het gebruik van #resource het uploaden bemoeilijkt. //+------------------------------------------------------------------+ //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Disconnect_Sound_Alert.mq5 | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright 2024, Rajesh Kumar Nait | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;https://www.mql5.com/en/users/rajeshnait/seller | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, Rajesh Kumar Nait" #property link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"https://www.mql5.com/en/users/rajeshnait/seller" #property version&nbsp;&nbsp; "1.00" #include &lt;Trade/TerminalInfo.mqh&gt; bool&nbsp;&nbsp;&nbsp;&nbsp; first&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = true; bool&nbsp;&nbsp;&nbsp;&nbsp; Now_IsConnected&nbsp;&nbsp; = false; bool&nbsp;&nbsp;&nbsp;&nbsp; Pre_IsConnected&nbsp;&nbsp; = true; datetime Connect_Start = 0, Connect_Stop = 0; CTerminalInfo terminalInfo; //--- Geluidsbestanden #resource "\\Files\\Sounds\\CONNECTED.wav" #resource "\\Files\\Sounds\\DISCONNECTED.wav" //+------------------------------------------------------------------+ //| Functie voor initialisatie van de expert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int OnInit() &nbsp;&nbsp;{ //--- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResetLastError(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ( !IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pre_IsConnected = Now_IsConnected; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Now_IsConnected = terminalInfo.IsConnected(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pre_IsConnected = !Now_IsConnected; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( Now_IsConnected != Pre_IsConnected ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( Now_IsConnected ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Start = TimeLocal(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( !first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!PlaySound("::Files\\Sounds\\DISCONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print("Fout: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!PlaySound("::Files\\Sounds\\CONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("Fout: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Stop = TimeLocal(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( !first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!PlaySound("::Files\\Sounds\\CONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print("Fout: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!PlaySound("::Files\\Sounds\\DISCONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("Fout: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; first = false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sleep(1000); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} //--- &nbsp;&nbsp; return(INIT_SUCCEEDED); &nbsp;&nbsp;} //+------------------------------------------------------------------+ Bekijk ook deze video voor een uitleg over het gebruik van deze tool:

2024.01.08
Geavanceerde MQL5 Tools voor Traders: Deel 7 van de MQL5 Programmeren Handleiding
MetaTrader5
Geavanceerde MQL5 Tools voor Traders: Deel 7 van de MQL5 Programmeren Handleiding

Deel 7. Geavanceerde MQL5 Tools "Deel 7. Geavanceerde MQL5 Tools" uit het boek "MQL5 Programmeren voor Traders" behandelt de geavanceerde mogelijkheden van de MQL5 API, die van groot belang zijn bij het ontwikkelen van programma's voor MetaTrader 5. Dit omvat aangepaste financiële symbolen, ingebouwde economische kalender evenementen en algemene technologieën zoals netwerken, databases en cryptografie. In dit deel bespreken we bibliotheken – een speciaal type programma dat kant-en-klare API's biedt voor verbinding met andere MQL-programma's. Ook gaan we in op de mogelijkheid om softwarepakketten te ontwikkelen en logisch met elkaar verbonden programma's in projecten te combineren. Tenslotte worden integraties met andere softwareomgevingen, waaronder Python, gepresenteerd. We beginnen met het bestuderen van bronnen, dit zijn bestanden van elk type die in de programmatuur kunnen worden ingebed. Bronnen kunnen bevatten: Multimedia-elementen "Harde" instellingen van externe programma's Andere MQL5-programma's in gecompileerde vorm De MQL5 ontwikkelomgeving staat het opnemen van applicatiegegevens arrays, afbeeldingen, geluiden en lettertypen in het bronbestand toe, waardoor het programma een zelfvoorzienend en gebruiksvriendelijk product voor de eindgebruiker wordt. Bijzondere aandacht gaat uit naar grafische bronnen met rasterafbeeldingen in BMP-formaat: je leert hoe je ze kunt creëren, bewerken en dynamisch op de grafiek kunt weergeven. We ronden het laatste deel van het boek af met de studie van de OpenCL-integratie in MQL5. OpenCL is een open standaard voor parallel programmeren in multiprocessorsystemen, inclusief grafische processors (GPU's) en centrale verwerkings eenheden (CPU's). Het stelt ons in staat om computationeel intensieve taken te versnellen, op voorwaarde dat de algoritmen kunnen worden parallelized. Dit kan onder andere het trainen van neurale netwerken, de Fourier-transformatie en het oplossen van vergelijkingssystemen omvatten. Het gebruik van OpenCL in MQL-programma's vereist de aanwezigheid van speciale stuurprogramma's van de fabrikant en ondersteuning voor OpenCL versie 1.1 of hoger. Het hebben van een grafische kaart is niet verplicht, aangezien de centrale processor ook kan worden gebruikt voor parallelle berekeningen.

2023.12.16
Eerste Vorige 2 3 4 5 6 7 8 9 10 11 12 Volgende Laatste