Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   BreakEven macht Trailing (http://www.expert-advisor.com/forum/showthread.php?t=1593)

jwah 16.09.11 11:19

BreakEven macht Trailing
 
Liste der Anhänge anzeigen (Anzahl: 2)
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.
Anhang 195
Anhang 196

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~


JoeDormann 16.09.11 11:32

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

jwah 16.09.11 12:20

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

JoeDormann 16.09.11 12:29

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum