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 MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   EA für MT5 zum autoerstellen von TP und SL (http://www.expert-advisor.com/forum/showthread.php?t=2974)

josef123456 31.05.13 15:06

EA für MT5 zum autoerstellen von TP und SL
 
dieser code kann einen SL automatsisch erstellen. kann jemand den code so ergänzen, dass zusätzlich auch ein TP automatisch erstellt wird?
wäre echt spitze. danke


------------------------------------------------------------------------


input int SL = 100; //15 pip

void OnTradeTransaction(const MqlTradeTransaction &txs, const MqlTradeRequest &req, const MqlTradeResult &res)
{
MqlTradeRequest rq = {0};
MqlTradeResult tr = {0};
double sl = 0;
if (HistoryDealGetInteger(txs.deal, DEAL_ENTRY) == DEAL_ENTRY_IN)
if (txs.volume != 0 && txs.type != TRADE_TRANSACTION_HISTORY_UPDATE)
{
PositionSelect(txs.symbol);
if (PositionGetDouble(POSITION_SL) == 0)
{
rq.action = TRADE_ACTION_SLTP;
rq.symbol = PositionGetString(POSITION_SYMBOL);
if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
{
sl = PositionGetDouble(POSITION_PRICE_OPEN) - SL * SymbolInfoDouble(txs.symbol, SYMBOL_POINT);
rq.sl = NormalizeDouble(sl, SymbolInfoInteger(txs.symbol, SYMBOL_DIGITS));
rq.tp = 0;
OrderSend(rq, tr);
}
else if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
{
sl = PositionGetDouble(POSITION_PRICE_OPEN) + SL * SymbolInfoDouble(txs.symbol, SYMBOL_POINT);
rq.sl = NormalizeDouble(sl, SymbolInfoInteger(txs.symbol, SYMBOL_DIGITS));
rq.tp = 0;
OrderSend(rq, tr);
}
}
}
}




--------------------------------------------------------------------

pako 11.06.13 22:36

Zitat:

Zitat von josef123456 (Beitrag 21412)
dieser code kann einen SL automatsisch erstellen. kann jemand den code so ergänzen, dass zusätzlich auch ein TP automatisch erstellt wird?
wäre echt spitze. danke

Code:

input int SL = 100; //15 pip
input int TP = 300;
void OnTradeTransaction(const MqlTradeTransaction &txs, const MqlTradeRequest &req, const MqlTradeResult &res)
{
    MqlTradeRequest rq = {0};
    MqlTradeResult tr = {0};
    double sl = 0;
    double tp = 0;
    if (HistoryDealGetInteger(txs.deal, DEAL_ENTRY) == DEAL_ENTRY_IN)
        if (txs.volume != 0 && txs.type != TRADE_TRANSACTION_HISTORY_UPDATE)
        {
            PositionSelect(txs.symbol);
            if (PositionGetDouble(POSITION_SL) == 0)
            {
                rq.action = TRADE_ACTION_SLTP;
                rq.symbol = PositionGetString(POSITION_SYMBOL);
                if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
                {
                    sl = PositionGetDouble(POSITION_PRICE_OPEN) - SL * SymbolInfoDouble(txs.symbol, SYMBOL_POINT);
                    tp = PositionGetDouble(POSITION_PRICE_OPEN) + TP * SymbolInfoDouble(txs.symbol, SYMBOL_POINT);
                    rq.sl = NormalizeDouble(sl, SymbolInfoInteger(txs.symbol, SYMBOL_DIGITS));
                    rq.tp = NormalizeDouble(tp, SymbolInfoInteger(txs.symbol, SYMBOL_DIGITS));;
                    OrderSend(rq, tr);
                }   
                else if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
                {
                    sl = PositionGetDouble(POSITION_PRICE_OPEN) + SL * SymbolInfoDouble(txs.symbol, SYMBOL_POINT);
                    tp = PositionGetDouble(POSITION_PRICE_OPEN) - TP * SymbolInfoDouble(txs.symbol, SYMBOL_POINT);
                    rq.sl = NormalizeDouble(sl, SymbolInfoInteger(txs.symbol, SYMBOL_DIGITS));
                    rq.tp = NormalizeDouble(tp, SymbolInfoInteger(txs.symbol, SYMBOL_DIGITS));;
                    OrderSend(rq, tr);
                }   
            }
        }
}


josef123456 11.06.13 23:11

hey Pako super. ich habe den EA kurz getestet und it works.
zuerst setzte er den TP nicht verlässlich, bis ich draufgekommen bin, woran das lag. wenn ich den EA mit dem ursprünglichen code, der nur einen SL setzt auf einem anderen Chart aktiviert habe, dann setzte der code den TP nicht immer. aber nachdem ich den EA aus dem anderen Chart entfernt habem, läuft er wie ein glöckerl. vielen danke.

lg joe

waleed333 03.03.15 13:24

Das funktioniert auch soweit, nur das die Zahl ewig lang ist, deshalb will ich sie auf 3 Nachkommastellen kürzen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:10 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