Systeemhandel

Raymond Cloudy Day: De Onmisbare EA voor MetaTrader 5
MetaTrader5
Raymond Cloudy Day: De Onmisbare EA voor MetaTrader 5

Ontdek de kracht van de Raymond Cloudy Day indicator Belangrijkste Kenmerken: Innovatieve Berekeningsmethode: De kern van de Raymond Cloudy Day indicator is een unieke berekeningsmethode die uiterst nauwkeurige en betrouwbare signalen biedt, zodat traders weloverwogen beslissingen kunnen nemen. Uitgebreide Buy/Sell Bevestiging: De indicator bevestigt mogelijke trenduitbreidingen voor Buy of Sell, of een terugkeer naar het hoofd berekende punt, wat strategische inzichten biedt voor traders. Take Profit (TP) Punten: TP-punten kunnen gebruikt worden om winst te beveiligen of als reguliere punten, wat flexibiliteit biedt in je strategie-uitvoering. Steun/Weerstand Lijnen: Alle berekende punten fungeren als steun of weerstand, waardoor je dieper inzicht krijgt in potentiële prijsbewegingen en markgedrag. Voordelen: Verbeterde Nauwkeurigheid: Dankzij de innovatieve mix van de nieuwe berekeningsmethode en geavanceerde algoritmes, wordt de trendidentificatie nauwkeuriger, wat jouw besluitvormingsproces verbetert. Veelzijdige Functionaliteit: Geschikt voor zowel beginners als ervaren traders, de Raymond Cloudy Day indicator past zich aan jouw behoeften aan, en biedt zowel eenvoud als geavanceerde functies. Aangepaste Handelsstrategieën: Houd er rekening mee dat de huidige strategie die bij de EA is inbegrepen slechts een demo is en nog niet volledig is getest. We moedigen je aan om je eigen handelsstrategieën te integreren om de Raymond Cloudy Day indicator optimaal te benutten. Experimenteer met verschillende benaderingen en pas de indicator aan jouw handelsstijl aan voor de beste resultaten. Ervaar de kracht van Raymond's visie en onze coderingsvaardigheden met de Raymond Cloudy Day indicator. Optimaliseer jouw handelsstrategie en maximaliseer jouw marktsucces met dit geavanceerde hulpmiddel.

2024.07.14
Beginnen met Programmeren: Moving Average Crossover met en zonder Martingale in MetaTrader 5
MetaTrader5
Beginnen met Programmeren: Moving Average Crossover met en zonder Martingale in MetaTrader 5

In deze blogpost duiken we in de verschillende functionaliteiten van de Expert Advisors (EA's) die we gebruiken voor het handelen met Moving Averages. Alle functies die in de EA zijn gebruikt, vind je in het bestand ImportantFunctions.mqh. We hebben twee EA's ontwikkeld, beiden gebaseerd op het signaal van de prijs die de Moving Average kruist. Het grote verschil? De één maakt gebruik van Martingale om verliezen te compenseren, terwijl de ander dat niet doet. Let op: ik raad aan om deze EA's niet op een live account te gebruiken. Ze zijn uitsluitend bedoeld voor demonstratiedoeleinden. Invoerparameters voor de Simple Moving Average EA: MAPeriod: De periode van de Moving Average indicator. LotSize: De lotgrootte die wordt gebruikt voor het openen van trades. TPPoints: Het aantal punten voor take profit. SLPoints: Het aantal punten voor stop loss. Invoerparameters voor de Moving Average EA met Martingale: MAPeriod: De periode van de Moving Average indicator. StartingLot: De initiële lotgrootte voor de eerste trade; deze waarde zal toenemen na een verlies. MaxLot: De maximale lotgrootte. De StartingLot kan worden verhoogd tot deze waarde. TPPoints: Take profit punten. Deze zullen toenemen na een verlies. SLPoints: Stop loss punten. Ook deze zullen toenemen na een verlies. LotMultiplier: De lotgrootte wordt met deze waarde vermenigvuldigd na een verlies, zolang de MaxLot waarde nog niet is bereikt. TPMultiplier: De Take profit en Stop loss zullen beide toenemen met dit bedrag na een verlies, wat een herstelvoordeel biedt, niet alleen door de positie grootte maar ook door de grotere TP. De code bevat uitgebreide opmerkingen en ik heb een YouTube-video gemaakt waarin ik alles uitleg wat je nodig hebt om het te begrijpen. Bedankt voor het lezen!

2024.06.10
Breakout Strategie met Prop Firm Helper Functies voor MetaTrader 5
MetaTrader5
Breakout Strategie met Prop Firm Helper Functies voor MetaTrader 5

Hallo allemaal, Vandaag wil ik een update geven over de Eenvoudige maar Effectieve Breakout Strategie. In deze code heb ik enkele helperfuncties toegevoegd die handig zijn voor prop firm uitdagingen. Over het algemeen moet je om een prop firm uitdaging te doorstaan aan drie hoofdcriteria voldoen: Target winst Maximale dagelijkse verlies niet overschrijden Maximaal verlies niet overschrijden In deze code heb ik twee functies toegevoegd die controleren op "Target winst" en "Bijna maximale dagelijkse verlies overschrijden". Deze functies zorgen ervoor dat alle posities automatisch worden gesloten en dat alle openstaande orders worden verwijderd. Wat betreft het "maximale verlies", dat hangt echt af van jouw strategie en risicobeheer, dus dat wordt niet vermeld in dit MQL5-script. //+------------------------------------------------------------------+ //| Prop Firm Helper Functies                                       | //+------------------------------------------------------------------+ // Verwijder alle openstaande orders en sluit alle posities void ClearAll(string message) {    Comment(message);    for (int i = OrdersTotal() - 1; i >= 0; i--)    {       ulong orderTicket = OrderGetTicket(i);       if (OrderSelect(orderTicket))       {          trade.OrderDelete(orderTicket);       }    }    for (int i = PositionsTotal() - 1; i >= 0; i--)    {       ulong posTicket = PositionGetTicket(i);       trade.PositionClose(posTicket);    } } // Controleer of we het winstdoel hebben bereikt bool isPassed() {    return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA; } // Controleer of we bijna de maximale dagelijkse verlies overschrijden bool isDailyLimit() {    MqlDateTime date_time;    TimeToStruct(TimeCurrent(), date_time);    int current_day = date_time.day, current_month = date_time.mon, current_year = date_time.year;       // Huidige balans    double current_balance = AccountInfoDouble(ACCOUNT_BALANCE);       // Verkrijg de gesloten handelsresultaten van vandaag    HistorySelect(0, TimeCurrent());    int orders = HistoryDealsTotal();       double PL = 0.0;    for (int i = orders - 1; i >= 0; i--)    {       ulong ticket=HistoryDealGetTicket(i);       if(ticket==0)       {          Print("HistoryDealGetTicket mislukt, geen handelsgeschiedenis");          break;       }       double profit = HistoryDealGetDouble(ticket,DEAL_PROFIT);       if (profit != 0)       {          // Verkrijg de deal datum en tijd          MqlDateTime deal_time;          TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time);          // Controleer de deal tijd          if (deal_time.day == current_day && deal_time.mon == current_month && deal_time.year == current_year)          {             PL += profit;          }          else             break;       }    }    double starting_balance = current_balance - PL;    double current_equity   = AccountInfoDouble(ACCOUNT_EQUITY);    return current_equity < starting_balance - DAILY_LOSS_LIMIT; } De parameters die we moeten instellen zijn: input string dd = "-------------PROP FIRM UITDAGING-----------------"; input bool   isChallenge = false; input double PASS_CRITERIA = 110100; input double DAILY_LOSS_LIMIT = 4500; Ik hoop dat je iets waardevols uit dit script kunt halen.

2024.05.11
Hoe je de Laatst Gesloten Trade in MetaTrader 5 Controleren
MetaTrader5
Hoe je de Laatst Gesloten Trade in MetaTrader 5 Controleren

Met deze code kun je de gegevens van de laatst gesloten trade ophalen zonder gebruik te maken van lussen. Maak een variabele aan om de starttijd van de huidige dag in te stellen. (Dit is niet noodzakelijk.) Maak enkele andere variabelen aan om een grafiekuitvoer weer te geven en gebruik ze ook in andere codeblokken. (Dit is niet noodzakelijk.) Wanneer je deze code binnen de OnTick(); functie gebruikt, krijg je de resultaten bij elke tick te zien. Je kunt het ook instellen voor een keer per bar. // variabelen string DayStart = "00:00"; // Starttijd van de dag double LastClosed_Profit; // Winst van de laatst gesloten trade string TradeSymbol, TradeType; // Expert Initializing -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Expert DeInitializing ------------------- void OnDeinit(const int reason)   {   } // Expert OnTick -------------------------- void OnTick()   { // controleer de laatst gesloten trade.    CheckLastClosed();   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ void CheckLastClosed()   {    datetime HistoryTime = StringToTime(DayStart); // geschiedenis van "Begin van de dag tot huidige tijd"    if(HistorySelect(HistoryTime,TimeCurrent))      {       int Total = HistoryDealsTotal();       // Verkrijg het ticketnummer van de laatste deal en selecteer deze voor verdere verwerking.       ulong Ticket = HistoryDealGetTicket(Total -1);       // Verkrijg wat je nodig hebt.       LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);       TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);       // Identificeer een verkooptrade.       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)         {          TradeType = "Verkooptrade";         }       // Identificeer een kooptrade       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)         {          TradeType = "Kooptrade";         }       // grafiekuitvoer.       Comment("\n","Totaal Deals - :  ", Total,               "\n","Laatste Deal Ticket - :  ", Ticket,               "\n", "Laatste Gesloten Winst -:  ", LastClosed_Profit,               "\n", "Laatste Trade was -:  ", TradeType);      }   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ Je kunt de hele handelsgeschiedenis (vanaf het begin van de rekening) verkrijgen door de functie HistorySelect(); op deze manier te gebruiken. // Verkrijg volledige geschiedenis HistorySelect(0,TimeCurrent());

2024.04.22
QuickTradeKeys 123 - Efficiënte System Trading voor MetaTrader 5
MetaTrader5
QuickTradeKeys 123 - Efficiënte System Trading voor MetaTrader 5

Als trader wil je natuurlijk dat je snel en efficiënt kunt inspelen op de markten. Met de QuickTradeKeys 123 EA is dat nu mogelijk! Deze handige tool is ontworpen om snelle marktreacties te faciliteren. Met slechts één druk op de knop kun je direct vanuit je grafiek handelen. Hieronder een korte samenvatting van de functionaliteiten: Toets '1': Opent een kooppositie met een vooraf gedefinieerde lotgrootte.Toets '2': Opent een verkooppositie met een vooraf gedefinieerde lotgrootte.Toets '3': Sluit alle open posities die de EA heeft geopend op basis van het opgegeven magic nummer. Deze EA is gebruiksvriendelijk en geschikt voor zowel beginners als ervaren traders die effectieve en directe controle over hun trades willen via het toetsenbord. Toepassingsgebied De EA is geschikt voor alle valutaparen en tijdframes. Voor optimale prestaties en snelle uitvoering is het aan te raden om te handelen met een lage spread en een soepele toegang tot de markt. Installatie Het installatieproces is eenvoudig: sleep de EA naar de gewenste grafiek, zorg ervoor dat geautomatiseerd handelen is ingeschakeld in MetaTrader en dat de EA toestemming heeft om trades uit te voeren. Pas het magic nummer aan in de invoerinstellingen indien nodig. Belangrijk Let op: deze EA is niet bedoeld voor gebruik op een live handelsaccount, tenzij je volledig begrijpt wat de onderliggende concepten zijn en de bijbehorende risico's. Het is aan te raden om de EA eerst op een demo-account te testen, zodat je vertrouwd raakt met het gedrag ervan.

2024.04.20
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
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
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
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. //+------------------------------------------------------------------+ //|                               Connect_Disconnect_Sound_Alert.mq5 | //|                                Copyright 2024, Rajesh Kumar Nait | //|                  https://www.mql5.com/en/users/rajeshnait/seller | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, Rajesh Kumar Nait" #property link      "https://www.mql5.com/en/users/rajeshnait/seller" #property version   "1.00" #include <Trade/TerminalInfo.mqh> bool     first             = true; bool     Now_IsConnected   = false; bool     Pre_IsConnected   = 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                                   | //+------------------------------------------------------------------+ int OnInit()   { //---       ResetLastError();       while ( !IsStopped() ) {          Pre_IsConnected = Now_IsConnected;          Now_IsConnected = terminalInfo.IsConnected();          if ( first ) {             Pre_IsConnected = !Now_IsConnected;          }          if ( Now_IsConnected != Pre_IsConnected ) {             if ( Now_IsConnected ) {                Connect_Start = TimeLocal();                if ( !first ) {                   if(!PlaySound("::Files\\Sounds\\DISCONNECTED.wav"))                      Print("Fout: ",GetLastError());                }                if ( IsStopped() ) {                   break;                }                if(!PlaySound("::Files\\Sounds\\CONNECTED.wav"))                   Print("Fout: ",GetLastError());             } else {                Connect_Stop = TimeLocal();                if ( !first ) {                   if(!PlaySound("::Files\\Sounds\\CONNECTED.wav"))                      Print("Fout: ",GetLastError());                }                if ( IsStopped() ) {                   break;                }                if(!PlaySound("::Files\\Sounds\\DISCONNECTED.wav"))                   Print("Fout: ",GetLastError());             }          }          first = false;          Sleep(1000);       } //---    return(INIT_SUCCEEDED);   } //+------------------------------------------------------------------+ 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 1 2 3 4 5 6 7 8 9 10 Volgende Laatste