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.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43248
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 29.12.17
Gesperrter Benutzer
 
Registriert seit: Aug 2017
Beiträge: 16
fintrad0 befindet sich auf einem aufstrebenden Ast
Standard EA modifizieren, OrderSelect

Hallo,
als Anfänger lade ich mir gerne EA's aus dem Netz um daraus lernen zu können. Bei diesem komme ich nicht weiter, eventuell kann hier jemand helfen:
Er heißt Open Two Pending Order und ist von hier: [URL="https://www.mql5.com/en/code/19057"]

Der EA platziert je eine Pending Order (StopBuy, StopSell) in einem bestimmten Abstand zum aktuellen Kurs. Wird eine der beiden Pending Order ausgelöst, wird die andere gelöscht. Läuft die geöffnete Order in den TP oder SL, werden wieder zwei neue Pending Order eröffnet.

Das funktioniert, solange der EA in nur einem Symbol läuft aber nicht mehr, sobald ein zweites Symbol zur selben Zeit mit diesem EA läuft.

Beispiel: EA läuft für EURUSD und GBPUSD. Bei EURUSD wird die StopBuy Order ausgelöst, die StopSell Order wird gelöscht. Dann wird auch die StopSell oder des GBPUSD mit gelöscht.

Könnt Ihr mich etwas unterstützen um das Problem zu lösen?

Vielen Dank!
Gruß Werner
Angehängte Dateien
Dateityp: mq4 Open Two Pending Orders.mq4 (5,2 KB, 5x aufgerufen)
  #2 (permalink)  
Alt 29.12.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
//+------------------------------------------------------------------+
//|                                      Open Two Pending Orders.mq4 |
//|                                                     Zay Min Htet |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Zay Min Htet"
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <stdlib.mqh>
//---
input bool   DynamicLotSize    =true;   //Use Money Management
input double EquityPercent     = 2;     //Risk Percent
input double FixedLotSize      = 0.1;   //Fixed LotSize
input double StopLoss          = 100;   //StopLoss( in Point)
input double TakeProfit        = 300;   //TakeProfit( in  Point)
input double TrailingStop      = 50;    //TrailingStop(in Point)
input double PipsAway          = 50;    //points away from the current Bid & Ask
input double Slippage          = 30;    //Slippage
input double Magic             = 1111;  //Magic Number
double LotSize;
int ticket1;
int ticket2;
int t=0;
//---
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

//---Detect Open or Pending Orders
   int total=OrdersTotal();
   t=0;
   for(int i=total-1;i>=0;i--)
     {
      if (OrderSelect(i,SELECT_BY_POS))
         {      
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
              {
                 t = 1;
              }
         }
     }
   if(t<1)
     {
      //Lot Size Calculation
      if(DynamicLotSize==true)
        {
         double RiskAmount= AccountEquity() *(EquityPercent/100);
         double TickValue = MarketInfo(Symbol(),MODE_TICKVALUE);
         if(Point==0.001 || Point==0.00001) TickValue*=10;
         double CalcLots=(RiskAmount/StopLoss)/TickValue;
         LotSize=CalcLots;
        }
      else LotSize=FixedLotSize;
      // Lot size verification
      if(LotSize<MarketInfo(Symbol(),MODE_MINLOT))
        {
         LotSize=MarketInfo(Symbol(),MODE_MINLOT);
        }
      else if(LotSize>MarketInfo(Symbol(),MODE_MAXLOT))
        {
         LotSize=MarketInfo(Symbol(),MODE_MAXLOT);
        }
      if(MarketInfo(Symbol(),MODE_LOTSTEP)==0.1)
        {
         LotSize=NormalizeDouble(LotSize,1);
        }
      else LotSize=NormalizeDouble(LotSize,2);
      //Open two Pending Orders simultaneously
      double t1 = Ask + PipsAway * Point; //BuyStop Entry Point
      double t2 = Bid - PipsAway * Point; //SellStop Entry Point
      double sl1 = t1 - StopLoss * Point; //BuyStop Stoploss
      double sl2 = t2 + StopLoss * Point; //SellStop Stoploss
      double tp1 = t1 + TakeProfit * Point; //BuyStop TakeProfit
      double tp2 = t2 - TakeProfit * Point; //SellStop TakeProfit
      ticket1 = OrderSend( Symbol(),OP_BUYSTOP,LotSize,t1, Slippage,sl1,tp1,"ZAY",Magic,0,White);
      ticket2 = OrderSend( Symbol(),OP_SELLSTOP,LotSize,t2, Slippage, sl2,tp2,"ZAY",Magic,0,White);
     }

   //---if opened order is "Buy", close another pending order "Sellstop" and use trailing stop for opened "Buy" order
   if (OrderSelect(ticket1,SELECT_BY_TICKET))
      {
         if(OrderType()==OP_BUY)
           {
            // delete pending order
            if (ticket2 > 0) OrderDelete(ticket2);
            ticket2 = 0;
            // use Trailling Stop
            if(Bid-OrderOpenPrice()>Point*TrailingStop)
              {
               if(OrderStopLoss()<Bid-Point*TrailingStop)
                 {
                    OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                 }
              }
           }
      }
   //---if opened order is "Sell", close another pending order "Buystop" and use trailing stop for opened "Sell" order
   if (OrderSelect(ticket2,SELECT_BY_TICKET))
      {
         if(OrderType()==OP_SELL)
           {
            // delete pending order
            if (ticket1 > 0) OrderDelete(ticket1);
            ticket1 = 0;
            // use Trailling Stop
            if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
              {
               if(OrderStopLoss()>(Ask+Point*TrailingStop))
                 {
                    OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                 }
              }
           }
      }
   return(0);
  }
//+------------------------------------------------------------------+
So sollte das funktionieren.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 29.12.17
Gesperrter Benutzer
 
Registriert seit: Aug 2017
Beiträge: 16
fintrad0 befindet sich auf einem aufstrebenden Ast
Standard Bin gerade beim Testen. Vielen Dank!!!

Hallo traderdoc,
jetzt hab ich den EA noch schnell kompiliert und in den VPS geladen um zu sehen, ob es noch im Alten Jahr einen Trade gibt (Demokonto;-). Sonst muss ich bis nächste Woche warten.

Bin zuversichtlich, dass es klappt. Dein Ruf eilt Dir nämlich voraus

Mir ist klar, dass das keine Selbstverständlichkeit ist, deswegen schätze ich die schnelle Antwort umso mehr.

Also, vielen, vielen Dank! Ich melde mich dann nochmal kurz, ob es funktioniert.

Gruß
Werner
Thema geschlossen

Lesezeichen

Stichworte
code modifizieren, ea modifizieren, mql4, orderselect, programmierung, programmierung metatrader, programmierung mql4

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 11:19 Uhr.





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