Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43673
Benutzer: 7.223
Aktive Benutzer: 73
Links: 84
Wir begrüßen unseren neuesten Benutzer: TS_6
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 6 Stunden
- TS_6
vor 2 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak
vor 2 Wochen
- Amateur

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 316
Gesamt: 317
Team: 0
Team:  
Benutzer:  traderdoc
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 07.08.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

@traderdoc: Das mach ich ja mit if( OrderStopLoss() != OrderOpenPrice())
trotzdem kommt die selbe Fehlermeldung.

@Leopold total = OrdersTotal(); / Also sprich if OrderSelect() == true) {} und dann denn Code rein?

@MA-EA TP 400 und SL 200 für den Anfang als Testzweck.
  #12 (permalink)  
Alt 07.08.18
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 362
Leopold befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ceo Beitrag anzeigen
@Leopold total = OrdersTotal(); / Also sprich if OrderSelect() == true) {} und dann denn Code rein?
Hallo,

ja in die Klammern dann den Code.

---Leopold---
  #13 (permalink)  
Alt 07.08.18
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ceo Beitrag anzeigen
@MA-EA TP 400 und SL 200 für den Anfang als Testzweck.
Weiß es nicht genau, aber das Problem ist vielleicht, dass in dem Moment, in dem geöffnet weden soll, der SL zu klein ist.
  #14 (permalink)  
Alt 07.08.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

An welcher Stelle wird denn Buy und Sell deklariert und mit Werten beschrieben?

Und dann versuche bitte, den Code strukturell übersichtlich zu schreiben, v.a. die Einrückungen der { und } Klammern, damit man den Code besser lesen kann.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #15 (permalink)  
Alt 07.08.18
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Er versucht anscheinend, den SL = Bid oder Ask zu machen. Bloß macht da wohl der MinStopLevel() nicht mit.
  #16 (permalink)  
Alt 08.08.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

Code:
int Buy = 0;
int Sell = 0;
Code:
         {
         //Buy Order
         Buy = OrderSend(Symbol(), OP_BUY, LotsOptimized(),Ask,0, LongSL, LongTP, "",MAGICNUM,0,Blue);
         if(Buy > 0)
            {
            if(OrderSelect(Buy, SELECT_BY_TICKET, MODE_TRADES))
            Print("BUY Order Opened: ", OrderOpenPrice(), " SL:", LongSL, " TP: ", LongTP);
            }
           else
            Print("Error Opening BUY  Order: ", GetLastError());
            
         //Sell Order
         Sell = OrderSend(Symbol(), OP_SELL, LotsOptimized(),Bid,0, ShortSL, ShortTP, "",MAGICNUM,0,Red);
         if(Sell > 0)
           {
           if(OrderSelect(Sell, SELECT_BY_TICKET, MODE_TRADES))
           Print("SELL Order Opened: ", OrderOpenPrice(), " SL:", ShortSL, " TP: ", ShortTP);
           }
          else
           Print("Error Opening SELL Order: ", GetLastError());
           return;   
         
         }
Also so sieht das bei mir aus.

@Leopold Leider Es mit ==true nicht geklappt selber fehler.

@MA-EA Ich hab ja ein Abstand eingebaut also sollte es nicht am SL liegen.
  #17 (permalink)  
Alt 08.08.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ok, mal davon abgesehen, dass hier bei

if(OrderSelect(Buy, SELECT_BY_TICKET, MODE_TRADES))

das MODE_TRADES nach SELECT_BY_TICKET nicht gesetzt wird, weil es keine Unterscheidung des zu selektierenden Trades zwischen Orderpool und Historiepool gibt, sollte der Code doch funktionieren.

Tut er das?

Es würde aber eine Buy und! eine SellOrder gleichzeitig geöffnet werden. Ist das so gewollt?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #18 (permalink)  
Alt 08.08.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

Also würde auch reichen: if(OrderSelect(Buy, SELECT_BY_TICKET))?

Ja er soll gleichzeitig ein Buy und Sell Order setzen. Es funktioniert auch nur nach einiger zeit kommt im Strategietester Error 1 das wundert mich.
  #19 (permalink)  
Alt 08.08.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Also wenn da jetzt keine weiteren Restriktionen im Code bestehen, dann würde das Programm mit jedem Tick immer eine Buy- und eine SellOrder öffnen!

Ist das so richtig?

Jede Order bekommt eine andere TicketNumber, wo soll der Fehler herkommen oder geht der Code noch weiter?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #20 (permalink)  
Alt 09.08.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

Gut mit jedem Tick sollte kein Order Eröffnet werden nur wenn ein Signal da ist.

Hier ist der ganze Code:

Code:
double LotsOptimized()
  {
   double lot = Lots;
   // Calculate Lot size as a fifth of available free equity.
   lot = NormalizeDouble((AccountFreeMargin()/5)/1000.0,1);
   if(lot<0.1) lot=0.1; //Ensure the minimal amount is 0.1 lots
   return(lot);
  }

void OnTick()
{

   //Alle Orders
   total = OrdersTotal();
   
   //StopLoss und TakeProfit
   if(StopLoss > 0)
      {
      ShortSL = Bid+(StopLoss*Point);
      LongSL = Ask-(StopLoss*Point);
      }
   if(TakeProfit > 0)
      {
      ShortTP = Bid-(TakeProfit*Point);
      LongTP = Ask+(TakeProfit*Point);
      }

   // Short und Long Order
   if(total<1)
      {
      if(TimeStart==TimeHour(TimeCurrent()))
         {
         //Buy Order
         Buy = OrderSend(Symbol(), OP_BUY, LotsOptimized(),Ask,0, LongSL, LongTP, "",MAGICNUM,0,Blue);
         if(Buy > 0)
            {
            if(OrderSelect(Buy, SELECT_BY_TICKET, MODE_TRADES))
            Print("BUY Order Opened: ", OrderOpenPrice(), " SL:", LongSL, " TP: ", LongTP);
            }
           else
            Print("Error Opening BUY  Order: ", GetLastError());
            
         //Sell Order
         Sell = OrderSend(Symbol(), OP_SELL, LotsOptimized(),Bid,0, ShortSL, ShortTP, "",MAGICNUM,0,Red);
         if(Sell > 0)
           {
           if(OrderSelect(Sell, SELECT_BY_TICKET, MODE_TRADES))
           Print("SELL Order Opened: ", OrderOpenPrice(), " SL:", ShortSL, " TP: ", ShortTP);
           }
          else
           Print("Error Opening SELL Order: ", GetLastError());
           return;   
         
         }
      
      
      }
  //---
  for(int cnt = 0; cnt < total; cnt++)
      {
      
      if((!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))==true)
      Print("Error-OrderSelect: ");
      
      if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())
         {
        //---Buy
        if(OrderType() == OP_BUY)
          {
          //---
          //if(OrderSelect(Sell,SELECT_BY_POS,MODE_HISTORY))
          if(total==1)
            {
            if(OrderOpenPrice()< Ask - PBuy*Point)
              {
              if(OrderStopLoss() != OrderOpenPrice())
              {
              if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green))
              Print("ErrorBuy: ",GetLastError());
              else
              Print("Check---Buy");
              return;
              }
              }
            }
          }
         else //---
          {
          //---Sell
          //if(OrderSelect(Buy,SELECT_BY_POS,MODE_HISTORY))
          if(total==1)
            {
            if(OrderOpenPrice()< Bid + PSell*Point)
              {
              if( OrderStopLoss() != OrderOpenPrice())
              {
              if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Red))
              Print("ErrorSell: ",GetLastError());
              else
              Print("Check---Sell");
              return;
              }
              }
            }
           }
      }
        }
 
  

return;
}
Thema geschlossen

Lesezeichen

Stichworte
nachziehen, null, stoploss


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 +2. Es ist jetzt 18:12 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.
-----------------------------------------------------------------------------------------------------------------------------