Trailing Stop Code?
Results 1 to 9 of 9

Thread: Trailing Stop Code?

  1. #1
    Ik vroeg me af of iemand me kon wijzen op een code die ik in een EA kan gebruiken, zodat ik een trailing stop met code kan plaatsen. In plaats van een Take Profit-punt te gebruiken, wil ik een stopvolgorde plaatsen, dus als de bestelling in een trend evolueert, kan ik profiteren van de winst in plaats van hem alleen maar uit te schakelen met een TP-punt.

    Ik heb de MQL-codebasis doorzocht en kan geen functies zien om een ??????volgende stop in een openstaande volgorde te plaatsen.

    Dank je!

  2. #2
    Alsjeblieft. Het is geen kogelvrije code, maar het zal je in ieder geval in de goede richting brengen. Code ingevoegd void TrailingAlls (int trail) {if (trail == 0) retour;/---- dubbele stopcrnt; dubbele stopcal; int handel; int trades = OrdersTotal (); dubbele winstcalc; for (trade = 0; tradelt; trades; trade ) {OrderSelect (trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol () == Symbol ()) {//doorgaan;/LONG if (OrderType () == OP_BUY) {stopcrnt = OrderStopLoss (); stopcal = bod- (trail * Point); profitcalc = OrderTakeProfit () (TakeProfit * Point); if (stopcrnt == 0) {OrderModify (OrderTicket (), OrderOpenPrice (), stopcal, profitcalc, 0, Blue); } else if (stopcalgt; stopcrnt) {OrderModify (OrderTicket (), OrderOpenPrice (), stopcal, profitcalc, 0, Blue); }}}/LONG/Shrt if (OrderType () == OP_SELL) {stopcrnt = OrderStopLoss (); stopcal = Vraag (trail * Point); profitcalc = OrderTakeProfit () - (TakeProfit * Point); if (stopcrnt == 0) {OrderModify (OrderTicket (), OrderOpenPrice (), stopcal, profitcalc, 0, Red); } else if (stopcallt; stopcrnt) {OrderModify (OrderTicket (), OrderOpenPrice (), stopcal, profitcalc, 0, Red); }}}}/Shrt

  3. #3
    Bedankt voor de code ... Wanneer u een open bestelling hebt in MT4, kunt u erop klikken en vervolgens een trailing stop instellen die het systeem automatisch afgehandelt, zodat u het niet per keer hoeft bij te werken. Is er geen manier om dit te doen via de code van een EA? Ik heb het gevoel dat als ik bestellingen aan het aanpassen ben door een levende EA aankruist, de makelaar daar niet al te blij mee zal zijn. Gedachten?

  4. #4

    Quote Originally Posted by ;
    Bedankt voor de code ... Wanneer u een open bestelling hebt in MT4, kunt u erop klikken en vervolgens een trailing stop instellen die het systeem automatisch afgehandelt, zodat u het niet per keer hoeft bij te werken. Is er geen manier om dit te doen via de code van een EA? Ik heb het gevoel dat als ik bestellingen aan het aanpassen ben door een levende EA aankruist, de makelaar daar niet al te blij mee zal zijn. Gedachten?
    Voer het dan niet kruiselings uit - u moet het zo instellen dat het alleen vuurt als een nieuwe kaars open is.

  5. #5
    LongToBeFree zei: doe het dan niet kruiselings - u moet het zo instellen dat het alleen vuurt als een nieuwe kaars open is. Nog maar net begonnen met het leren van MQL4, dus ik heb zoveel mogelijk hulp nodig. Hoe laat je MT4 alleen werken met een nieuwe kaars, is het zoiets als dit: int Lastbar = 0 void start () {if (Lastbar == Bars) return (0); Lastbar = balken;/////rest van de code hier///return (0); } Ik heb dit van een andere EA verwijderd die ik aan het bestuderen was, maar het is heel moeilijk met alles online. Weet iemand van een gedrukt leerboek over MQL4, het is lang geleden dat ik een nieuwe codeertaal leerde, en het was allemaal in die antediluviaanse tijd op papier. Met vriendelijke groeten, Iain, in Rugby.

  6. #6
    In sommige gevallen zou je niet willen dat het nalopende stop-loss 'vuurt' als de kaars sluit, simpelweg omdat er een potentieel verlies van pip-winst is. Het trailing stop-loss is bedoeld om winst te behalen terwijl verlies wordt geminimaliseerd. Een kaars kan meerdere pitten in uw voordeel verplaatsen om zich dan binnen dezelfde kaars terug te trekken naar een positie waar u geen van die voordelen zou realiseren. Het zou alleen maar omdat het trailing stop loss 'vuurt' bij het sluiten van een kaars. Als dit echter je voorkeur is ...
    Een voorbeeld van de code waar je het over hebt is hier ... dubbele PointValue; for (int i = 0; i lt; OrdersTotal (); i ) {OrderSelect (i, SELECT_BY_POS, MODE_TRADES); PointValue = MarketInfo (OrderSymbol (), MODE_POINT);/Normaliseer de volgstopwaarde tot de puntwaarde double TSTP = TrailingStop * PointValue; if (OrderType () == OP_BUY) {if ((Bied - OrderOpenPrice ()) gt; TSTP) {if (OrderStopLoss () lt; (Bieden - TSTP)) {OrderModify (OrderTicket (), OrderOpenPrice (), Bieden - TSTP, OrderTakeProfit (), Rood); }}} else if (OrderType () == OP_SELL) {if ((OrderOpenPrice () - Ask) gt; TrailingStop * PointValue) {if ((OrderStopLoss () gt; (Ask TrailingStop * PointValue)) || (OrderStopLoss () == 0)) {OrderModify (OrderTicket (), OrderOpenPrice (), Ask TSTP, OrderTakeProfit (), Red); }}}}

  7. #7
    Een Trailing Stop lijkt op het eerste gezicht een tamelijk triviaal codeerprobleem en dat is hoe ik het bij mijn eerste ronde benaderde. Later ontdekte ik verschillende nuances die mijn logica niet correct behandelde en ik heb mijn code twee keer herzien en nog steeds geen volledig bevredigend resultaat opgeleverd. Er moet rekening worden gehouden met verschillende overwegingen en sommige daarvan zijn al genoemd. Eerst moet een beslissing worden genomen of het aan de client- of de serverkant moet gebeuren. Persoonlijk geef ik de voorkeur aan de clientzijde omdat het updaten van de server met elke kleine stap extra veel overhead met zich meebrengt, vooral voor 5-cijferige systemen. De tweede beslissing is of voor elke teek of elke balk opnieuw moet worden berekend. Elke staafberekening zou kunnen werken voor 15M en lagere TF maar voor 4H TF zou het de TS compleet nutteloos maken. Wanneer ik code aan het schrijven ben, wil ik geen aannames doen over de TF waar de EA voor loopt, dus ik wil een TS die elke vink wordt berekend. Een overweging die volgens mij over het hoofd is gezien, is dat de berekening opnieuw moet worden gestart of kan worden onderbroken. Daarmee bedoel ik dat de gebruiker een instelling kan wijzigen terwijl de EA draait of de MT4 kan worden afgesloten en opnieuw wordt opgestart. De berekening moet worden hervat en in dit geval correcte resultaten opleveren. Dit betekent dat een eenvoudige MathMax (High [0], prevHigh) niet zal werken omdat prevHigh opnieuw ge�nitialiseerd zou worden. Dat is de reden waarom ik een berekening als hi = High [ArrayMaximum (Hoog, nbarsOpen, 0)] gebruik als ik een lange transactie actief heb. nbarsOpen = iBarShift (NULL, 0, orderOpenTime); Dit lijkt misschien veel rekenwerk voor elke tick en op dit moment overweeg ik het in de init () -functie te plaatsen en de eenvoudigere MathMax () -berekening voor de start () -functie te gebruiken.

  8. #8
    hey guys, ik heb een code om twee lopende bestellingen tegelijkertijd te openen, maar ik moet toevoegen voor die code een trail stop-functie in het geval van een in afwachting wordt geactiveerd .... kan iemand helpen? !! vriendelijke groeten.

  9. #9

Similar Threads

  1. trailing stop ea met ATR
    By gustavomigwz in forum Cryptocurrencies
    Replies: 22
    Last Post: 04:00,

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.