Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36911
Benutzer: 6.074
Aktive Benutzer: 496
Links: 80
Wir begrüßen unseren neuesten Benutzer: hmf44
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 7 Stunden
- hmf44
vor 11 Stunden
- Crossa
vor 12 Stunden
- snatshit
vor einem Tag
- Roerich
vor einem Tag
- John_Liver...

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 67
Gesamt: 67
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 16.09.11
Benutzerbild von jwah
Neues Mitglied
 
Registriert seit: Sep 2011
Ort: Berlin
Beiträge: 5
jwah befindet sich auf einem aufstrebenden Ast
Standard BreakEven macht Trailing

ich habe einen Code für ein BreakEven, den ich nutzen wollte.

Er verkauft alle eingestellten pip (hier als beispiel 10 pip) eine eingestellte Menge Lots und setzt den SL für die Restposition neu fest (auch einstellbar, hier im Beispiel 10 pip, also break even!!)
Leider macht der einen Trailing BE, also nach weiteren 10 pip macht er den nächsten Verkauf und setzt wiederum nen neuen SL.
Den Verkauf kann ich unterbinden, indem ich die mindest Lots über den Order Lot setze (0,1 Lot gekauft, minLot 1)

Was er aber trotzdem macht.... er trailt.... und setzt den SL noch mal um 10 pip weiter. Ich will nur einmal den Stop auf +-0

Vielleicht kann jemand den Fehler finden.
Test BreakEven.ex4
break even.JPG

und hier der Code

Code:
double lots = 0;
double takeprofit = 0;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
    if (OrderSymbol() == Symbol() && OrderMagicNumber() == ~OrderId~)
    {
        if (OrderType() == OP_BUY && Ask - OrderOpenPrice() > ~BreakEvenPoint~*PipValue*Point && (OrderStopLoss() < Ask-(~BreakEvenPoint~+~TrailingGap~)*PipValue*Point))
        {
             lots = (OrderLots() * ~BreakEvenRisk~) / 100;
            lots = NormalizeDouble(lots, NDigits);
            if (lots < MarketInfo(Symbol(), MODE_MINLOT))    // make sure lot is not smaller than allowed value
                lots = MarketInfo(Symbol(), MODE_MINLOT);

            takeprofit = Ask+~NewTakeProfit~*PipValue*Point;
            if (~NewTakeProfit~ == 0) takeprofit = OrderTakeProfit();
            bool ret1 = OrderModify(OrderTicket(), OrderOpenPrice(), Ask-~TrailingGap~*PipValue*Point, takeprofit, OrderExpiration(), ~Color~);
            if (ret1 == false)
                Print("OrderModify() error - ", ErrorDescription(GetLastError()));
            else if (OrderLots() >= ~MinLot~)
            {
                ret1 = OrderClose(OrderTicket(), lots, OrderClosePrice(), ~Slippage~, ~Color~);
                if (ret1 == false)
                    Print("OrderModify() error - ", ErrorDescription(GetLastError()));
            }

        }
        if (OrderType() == OP_SELL && OrderOpenPrice() - Bid > ~BreakEvenPoint~*PipValue*Point && (OrderStopLoss() > Bid+(~BreakEvenPoint~+~TrailingGap~)*PipValue*Point))
        {
            lots = (OrderLots() * ~BreakEvenRisk~) / 100;
            lots = NormalizeDouble(lots, NDigits);
            if (lots < MarketInfo(Symbol(), MODE_MINLOT))    // make sure lot is not smaller than allowed value
                 lots = MarketInfo(Symbol(), MODE_MINLOT);

            takeprofit = Bid-~NewTakeProfit~*PipValue*Point;
            if (~NewTakeProfit~ == 0) takeprofit = OrderTakeProfit();
            bool ret2 = OrderModify(OrderTicket(), OrderOpenPrice(), Bid+~TrailingGap~*PipValue*Point, takeprofit, OrderExpiration(), ~Color~);
            if (ret2 == false)
                Print("OrderModify() error - ", ErrorDescription(GetLastError()));
            else if (OrderLots() >= ~MinLot~)
            {
                ret2 = OrderClose(OrderTicket(), lots, OrderClosePrice(), ~Slippage~, ~Color~);
                if (ret2 == false)
                    Print("OrderModify() error - ", ErrorDescription(GetLastError()));
            }

        }

    }
}
else
    Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
~next~
  #2 (permalink)  
Alt 16.09.11
Gesperrter Benutzer
 
Registriert seit: Sep 2011
Ort: Kassel
Beiträge: 749
JoeDormann befindet sich auf einem aufstrebenden Ast
JoeDormann eine Nachricht über Skype™ schicken
Standard

Hallo,

sieht nützlich aus. Danke.

Wäre es möglich den kompletten Code hier anzuhängen.
Mir ist unklar, ob es ein Script oder EA ist.

Du hast geschrieben, ...Du wolltest...

Geht es Dir lediglich darum, das das Proggi Verlust vermeidet, indem es einen Trailingstop ab +-0 macht?
Wenn ja, ab wieviel Pips soll er anfangen diesen Punkt abzusichern?
Schließlich soll der Kurs ja nicht sofort nach dem Setzen die Positionen ausstoppen, oder etwa doch?

Sollte eigentlich ein EA sein, oder?
Kommt das Teil aus einem Generator?
Wer ist Author?
Für welches Tradingprogramm ist der EA ursprünglich?

Sehe grade, das es ein EA für Gaps ist.
Um den fixen uzu können, brauche ich den ganzen Code und klare ANsagen, was genau Du willst. Am besten mit Beispiel.

Gruß Joe

Geändert von JoeDormann (16.09.11 um 11:45 Uhr)
  #3 (permalink)  
Alt 16.09.11
Benutzerbild von jwah
Neues Mitglied
 
Registriert seit: Sep 2011
Ort: Berlin
Beiträge: 5
jwah befindet sich auf einem aufstrebenden Ast
Standard

ich arbeite mit dem forex EA generator und fxeditor, die gibt es hier

Forex Expert Advisor Generator for MetaTrader language. Create your MetaTrader EA and Script.

da ich nicht programmieren kann, fand ich diesen weg ganz gut.

die arbeiten mit programmblocks, die man einzeln im fxeditor ansehen und bearbeiten kann. daher habe ich den code. an den ganzen code komme ich nicht ran. den gibt die testversion nicht raus.

der test EA macht nur einfach ne posi auf short und long und testet den break even.

ich will im endeffekt einen BR haben der mit nach xx pip vom orderkurs einen SL setzt von xx pip, also variaben zum optimieren im metatrader.

den SL will ich möglichst über oder unter BE setzen können.

ich hoffe, die antwort reicht dir erstmal. wenn nicht.... ich sag dir alles was ich weiß ;-)

gruß jörg
  #4 (permalink)  
Alt 16.09.11
Gesperrter Benutzer
 
Registriert seit: Sep 2011
Ort: Kassel
Beiträge: 749
JoeDormann befindet sich auf einem aufstrebenden Ast
JoeDormann eine Nachricht über Skype™ schicken
Standard

Ok,

ich habe mich mit dem Generator noch nicht beschäftigt.
Daher hoffe ich für Dich das Dir jemand hier weiterhelfen kann, das das Teil kennt.

Gruß
Joe
Thema geschlossen

Lesezeichen

Stichworte
break even, breakeven, mql4, programmierung, programmierung metatrader


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------