Diskussion zum Artikel "Ein visueller Strategieentwickler Erstellen eines Handelsroboters ohne zu programmieren" - Seite 5

 
Реter Konow:

1. Ich hab's. Beim Scrollen ist es genau wie beim Ziehen des Fenstergriffs. Du musst einmal drücken und dann wieder drücken und halten. Dann funktioniert alles.

5. Wenn ein Fenster aus dem Sichtbereich verschwunden ist, müssen Sie die Hauptbildlaufleiste benutzen. Dann kann es wieder in den Sichtbarkeitsbereich gebracht werden.

Danke für die Kommentare!

1) Sie müssen nur drücken (1 Mal ohne loszulassen) und halten und ziehen. Nicht nur einmal, sondern immer und immer wieder :)

5) Du kannst das Schema auch mit dem unteren Teil verschieben. Die Hauptebene kann auch als Karte verschoben werden, ohne Bildlaufleisten. Man muss nur einen leeren Bereich "greifen" und ihn verschieben.

Ja, ich habe absichtlich keine Hinweise zur Größenänderung usw. gegeben. Ich erinnere mich noch an das erste Mal, was und wo, und dann stören sie immer meine Augen, obwohl sie nicht nötig sind.

 
Andrey Barinov:

Vielen Dank für die Kommentare!

1) Sie müssen nur drücken (1 Mal ohne loszulassen) und halten und ziehen. Nicht einmal, sondern immer und immer wieder :)

5) Du kannst das Schema auch mit dem unteren Teil verschieben. Die Hauptebene kann auch als Karte verschoben werden, ohne Bildlaufleisten. Man muss nur eine leere Stelle "greifen" und sie verschieben.

Ja, ich habe absichtlich keine Hinweise zur Größenänderung usw. gegeben. Man weiß ja noch was und wo vom ersten Mal, und dann stören sie immer die Augen, obwohl sie nicht nötig sind.

So, das war's. Danke für den Tipp. Wirklich sehr praktisch. Aber mit dem ersten Griff komme ich immer noch nicht weit. Weder das Fenster, noch das Scrollen. Aber wenn ich nochmal drücke, dann geht alles.

Ich weiß nicht, woran das liegt.

 
Meine subjektive Meinung ist, dass ich gegen solche Programme bin. MQL ist eine sehr flexible und leistungsstarke Sprache. Mit ihr kann man absolut alles umsetzen, alle "Perversionen", die dem Händler durch den Kopf gehen. In dem Programm ist alles innerhalb bestimmter Grenzen implementiert, die ursprünglich vom Autor des Programms festgelegt wurden, ja, es ist möglich, einen Roboter zu bauen, ja, es kann funktionieren. Aber ich kann es in MetaEditore tun, und auch kostenlos.
 
Ich weiß nicht einmal, was leichter zu lernen ist: MQL oder dieser Konstruktor....
 
Nur zum Spaß. Der Devisenhandel ist kein Bereich, in dem solche Anwendungen besonders gefragt sind
 
Aleksey Vyazmikin:

Die Idee ist gut, sieht interessant aus, aber der fertige EA ist schon ein bisschen schief - er erfordert die Fähigkeit, mit Scrollen nach unten oder zur Seite zu bauen.

Eine solche Schnittstelle ist für ME notwendig - schreiben Sie in einem quadratischen Code und verbinden, bequem, vor allem, wenn Sie Ihre eigenen Symbole machen können und speichern Sie als Rohling - denken MQ.

Allerdings bin ich verwirrt, es gibt keinen Code am Ende des Artikels und im Artikel selbst, was bedeutet, es ist eine Werbung für das Produkt. Ist es jetzt möglich, Artikel über Ihr Produkt zu schreiben und sie zu veröffentlichen, oder ist dies eine Regelung hinter den Kulissen für einige wenige?

Es ist schon lange möglich, Artikel über Ihr Produkt zu schreiben. Ein weiterer Punkt ist, dass MQ möglicherweise nicht alle Artikel durchlässt. Nur diejenigen, die sie für veröffentlichungswürdig erachten.

Der Autor des Artikels hat ein tolles Produkt geschaffen. Aber es muss noch verbessert werden. Es ist wünschenswert, das Mausrad in der rechten und linken Liste zu benutzen. Um durch diese Listen zu blättern.

Man kann das große Potential dieser Entwicklung spüren.


====

Was ist schlecht. Nach der Deinstallation dieses Dienstprogramms (Expert Advisor) hat sich das Farbschema des Fensters mit dem Chart geändert. Vor der Installation des Dienstprogramms war das Farbschema dasselbe. Nach der Installation ändert sich das Farbschema. Dies ist ein Nachteil.

Wenn Sie das Dienstprogramm aus dem Diagramm entfernen, müssen Sie zu dem Farbschema zurückkehren, das vor der Installation des Dienstprogramms bestand. Es ist besser, das Farbschema überhaupt nicht zu ändern. Alle Manipulationen sollten in einem zusätzlichen Fenster vorgenommen werden, das über dem Diagramm liegt. So gehe ich vor, wenn ich Muster grafisch erstelle. Es wird ein Fenster über dem Diagramm erstellt, in dem alles gezeichnet wird. Nach dem Löschen dieses Fensters ist es nicht mehr nötig, etwas im Diagramm zu korrigieren. Alles, was in dem Fenster erstellt wird, wird in Dateien gespeichert.

 
Andrey Barinov:

trade-Klasse ist als statische Klasse implementiert und kann getrennt vom restlichen Code verwendet werden.

Ich habe mir die Handelsklasse im generierten Quellcode (MQL5 >600Kb, EX5 > 250Kb) mit Interesse angesehen.

class cTrade final
  {
   //====================
private:
   //====================
   //===============
   //===============
   void              cTrade(void){}
   virtual void     ~cTrade(void){}
   //===============
   //===============
   static void       AddCurrentTrades(const cTradesFilter &filter,long &tickets[]);
   static void       AddCurrentOrders(const cPendingOrdersFilter &filter,long &tickets[]);
   static void       AddHistoryTrades(const cTradesFilter &filter,long &tickets[]);
   static void       AddHistoryOrders(const cPendingOrdersFilter &filter,long &tickets[]);
   //===============
   //===============
   static double     CheckLot(const string symbol,const double lots);
   static bool       CheckPlaced(const string symbol,const eTradeType type,const long magic);
   static bool       CheckMargin(const string symbol,const double volume,const eTradeType type,const double price);
   static bool       CheckOrderPrice(const string symbol,const ePendingOrderType type,const double price);
   static bool       CheckStops(const string symbol,const eTradeType type,const bool istrade,const double entrylevel,
                                const double stoploss,const double takeprofit);
   //===============
   //===============
   static int        GetMatch(const cTradeInfo &trades[],const int forindex,const long &matched[]);
   static void       TradesCloseBy(const long &tickets[],const bool slippageenabled,const long slippage,const ENUM_ORDER_TYPE_FILLING filling);
   //===============
   //===============
   static void       ModifyTrade(const long ticket,const double newsl,const double newtp);
   static void       ModifyPendingOrder(const long ticket,const double newprice,const double newsl,const double newtp,const datetime newexpiration);
   //===============
   //===============
   static void       CloseBy(const long ticket1,const long ticket2,const ENUM_ORDER_TYPE_FILLING filling);
   //===============
   //===============
   static void       BreakEven(const long ticket,const long belevel,const long beprofit);
   static void       TrailingStop(const long ticket,const long tslstart,const long tsldistance,const bool tsllevelenabled,const double tsllevel);
   //===============
   //===============
   static void       CalculateSLandTP(const string symbol,const eTradeType type,const double entrylevel,const double lots,
                                      const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                      const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                      const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                                      double &sllevel,double &tplevel);
   //===============
   //===============
   static bool       CanTrade(void);
   //===============
   //===============
   //====================
public:
   //====================
   //===============
   //===============
   static long       ProfitPointsGet(const eTradeType type,const double openprice,const double closeprice,const string symbol);
   static double     CommissionGet(const long positionID);
   //===============
   //===============
   static void       GetFilteredTradesTickets(const cTradesFilter &filter,long &tickets[]);
   static void       GetFilteredPendingOrdersTickets(const cPendingOrdersFilter &filter,long &tickets[]);
   //===============
   //===============
   static double     GetLot(const string symbol,const long slpoints,const double moneyrisk);
   //===============
   //===============
   static void       OpenTrade(const string symbol,const eTradeType type,const double lots,const long magic,const string comment,
                               const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                               const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                               const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                               const bool slippageenabled,const long slippage,
                               const ENUM_ORDER_TYPE_FILLING filling);
   static void       PlacePendingOrder(const string symbol,const double price,const ePendingOrderType type,const double lots,
                                       const long magic,const string comment,
                                       const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                       const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                       const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                                       const bool expirationenabled,const datetime expiration,
                                       const ENUM_ORDER_TYPE_FILLING filling);
   //===============
   //===============
   static void       ModifyTrade(const long ticket,const bool tightenstopsonly,
                                 const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                 const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                 const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice);
   static void       ModifyTrades(const long &tickets[],const bool tightenstopsonly,
                                  const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                  const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                  const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice);
   //===============
   //===============
   static void       ModifyPendingOrder(const long ticket,const bool priceenabled,const double price,const bool tightenstopsonly,
                                        const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                        const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                        const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                                        const bool expirationenabled,const datetime expiration);
   static void       ModifyPendingOrders(const long &tickets[],const bool priceenabled,const double price,const bool tightenstopsonly,
                                         const bool slpointsenabled,const long slpoints,const bool tppointsenabled,const long tppoints,
                                         const bool slmoneyenabled,const double slmoney,const bool tpmoneyenabled,const double tpmoney,
                                         const bool slpriceenabled,const double slprice,const bool tppriceenabled,const double tpprice,
                                         const bool expirationenabled,const datetime expiration);
   //===============
   //===============
   static void       CloseTrade(const long ticket,
                                const bool slippageenabled,const long slippage,
                                const ENUM_ORDER_TYPE_FILLING filling);
   static void       CloseTrades(const long &tickets[],const bool closeby,
                                 const bool slippageenabled,const long slippage,
                                 const ENUM_ORDER_TYPE_FILLING filling);
   //===============
   //===============
   static void       DeletePendingOrder(const long ticket);
   static void       DeletePendingOrders(const long &tickets[]);
   //===============
   //===============
   static void       BreakEven(const long &tickets[],const long belevel,const long beprofit);
   static void       TrailingStop(const long &tickets[],const long tslstart,const long tsldistance,const bool tsllevelenabled,const double tsllevel);
   //===============
   //===============
  };


Was ist der Zweck dieser Zeile?

static bool cTrade::CheckPlaced(const string symbol,const eTradeType type,const long magic)
  {
//===============
   const int ordersnumber=::OrdersTotal();
//===============

//===============
   for(int i=0;i<ordersnumber && !::IsStopped();i++)
     {
      //===============
      const long ticket=(long)::OrderGetTicket(i);
      //===============

      if(::OrderGetInteger(ORDER_POSITION_ID)>0)continue;
      //===============

Live-Order mit ID ungleich Null - teilweise ausgeführt?


Ich konnte die Füllungsberechnung im Code nicht finden.

 
fxsaber:

Ich habe mir mit Interesse die Handelsklasse in der generierten Quelle angesehen (MQL5 >600Kb, EX5 > 250Kb).


Was ist der Zweck dieser Zeile?

Live-Order mit ID ungleich Null - teilweise ausgeführt?


Ich konnte die Füllungsberechnung im Code nicht finden.

#1. Dies basiert auf: #9

#2. Es ist mir nie gelungen, eine funktionierende Variante der Füllungsberechnung zu finden, die bei allen Brokern funktioniert. Deshalb schlage ich vor, dass der Benutzer es selbst kontrolliert, indem er die Parameter der entsprechenden Elemente einstellt.

 
Eugeni Neumoin:

Es ist schon lange möglich, Artikel über Ihr Produkt zu schreiben. Ein weiterer Punkt ist, dass MQ möglicherweise nicht alle Artikel annimmt. Nur diejenigen, die sie für veröffentlichungswürdig halten.

Der Autor des Artikels hat ein tolles Produkt geschaffen. Aber es muss noch verbessert werden. Es ist wünschenswert, das Mausrad in der rechten und linken Liste zu benutzen. Um durch diese Listen zu blättern.

Ich kann das große Potenzial dieser Entwicklung spüren.


====

Was ist schlecht. Nach der Deinstallation dieses Dienstprogramms (Expert Advisor) hat sich das Farbschema des Chart-Fensters geändert. Vor der Installation des Dienstprogramms war das Farbschema dasselbe. Nach der Installation ändert sich das Farbschema. Dies ist ein Nachteil.

Es ist notwendig, zum Farbschema zurückzukehren, das vor der Installation des Dienstprogramms bestand, wenn das Dienstprogramm aus dem Chart entfernt wird. Es ist besser, das Farbschema überhaupt nicht zu ändern. Alle Manipulationen sollten in einem zusätzlichen Fenster vorgenommen werden, das über dem Diagramm liegt. So gehe ich vor, wenn ich Muster grafisch erstelle. Es wird ein Fenster über dem Diagramm erstellt, in dem alles gezeichnet wird. Nach dem Löschen dieses Fensters ist es nicht mehr nötig, etwas im Diagramm zu korrigieren. Alles, was in dem Fenster erstellt wird, wird in den Dateien gespeichert.

Vielen Dank für Ihre Kommentare!

Bei Ihrem Indikator nimmt das Panel nicht den gesamten Platz im Chart ein, so dass sich das Layout des Charts nicht ändert. Ich habe ein Panel auf der gesamten verfügbaren Fläche, und wenn ich das Chart-Schema nicht ändere, kommt es zu unangenehmen Artefakten.

Ich werde darüber nachdenken, alles wieder in den ursprünglichen Zustand zu versetzen, wenn ich das Dienstprogramm aus dem Diagramm entferne.

In zukünftigen Versionen werde ich das Scrollen mit dem Rad hinzufügen. Vielen Dank!

 
Andrey Barinov:

#1. Es basiert auf #9.

Danke, das hatte ich vergessen.

#2. Es ist mir nie gelungen, eine funktionierende Variante der Füllungsberechnung zu finden, die bei allen Brokern funktionieren würde. Deshalb schlage ich vor, dass der Benutzer es selbst kontrolliert, indem er die Parameter der entsprechenden Elemente einstellt.

Könnten Sie mir bitte den Namen des Demoservers schicken, auf dem GetFilling nicht funktioniert?