Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5

Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4883
Beiträge: 42954
Benutzer: 7.176
Aktive Benutzer: 85
Links: 83
Wir begrüßen unseren neuesten Benutzer: NiceMods
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Stunden
- NiceMods
vor 3 Tagen
- schlupjup
vor 5 Tagen
- Brunow
vor 6 Tagen
- Berndt
vor 6 Tagen
- hellbird

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 16.02.22
Neues Mitglied
 
Registriert seit: May 2020
Ort: Duisburg
Beiträge: 26
Aleksi befindet sich auf einem aufstrebenden Ast
Standard EasyAndFastGUI Wie Graph erstellen?

Hallöchen in den Programmierkurs den ich belegt habe haben wir die EasyAndFastGui Bibliothek behandelt. Leider wurde das Thema sehr kurz angerissen. Eine Übungsaufgabe war ein Tradepanel zu schreiben was auch wirklich einfach war. Nun dachte ich das ich auf der Basis des erlangten Wissen ein Panel Schreibe was einen Graph beinhaltet. Nun weis ich nicht wie ich bei der 2. stelle bei "CreateGraph" die geforderte CElement Main eingeben muss

Mir erschließt sich nicht wie ich das angeben soll.

Habt ijr eine idee?

Code:
//+------------------------------------------------------------------+
//|                                                          GUI.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <EasyAndFastGUI\WndCreate.mqh>
ulong magic=123;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CProgram: public CWndCreate
  {
private:
   CWindow           m_window;
   CGraph            m_gra;
   

public:
   void              CreateGui()
     {
     
      CWndCreate::CreateWindow(m_window,"Test",20,20,600,300);       CWndCreate::CreateGraph(m_gra,m_gra.Element(0),0,5,14,true,false,10,23,false,false,AXIS_TYPE_DOUBLE,DoubleToString(2.644),DoubleToString(8.398));
      CWndEvents::CompletedGUI();
     }

   void              OnTimerEvent()
     {
      CWndEvents::OnTimerEvent();
     }

   void               OnInitEvent()
     {

     }

   void               OnTickEvent()
     {

     }

   void              OnTradeTransactionEvent(double lineval1,ulong inmagic)
     {
     //double lineval1 = Profit der gesammten History
     //double lineval2= Profit der geschlossenen Position nach magic
     //double lineval3= Kommt von Framework
      
      //Graph erstellen ähnlich der Grafik
     }

   void               OnDeinitEvent(const int reason)
     {
      CWndEvents::Destroy();
     }

   void              OnEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
     {


     }
  };

CProgram programm;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   programm.OnInitEvent();
   programm.CreateGui();

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   programm.OnDeinitEvent(reason);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   programm.OnTickEvent();
   programm.OnTimerEvent();

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   programm.OnTimerEvent();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // Identifikator des Ereignisses
                  const long& lparam,   // Parameter des Ereignisses des Typs long
                  const double& dparam, // Parameter des Ereignisses des Typs double
                  const string& sparam  // Parameter des Ereignisses des Typs string
                 )
  {
   programm.ChartEvent(id,lparam,dparam,sparam);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
//---
   ENUM_DEAL_TYPE deal_direktion=DEAL_TYPE_BUY;
   long           deal_entry   =0;
   string         deal_symbol  ="";
   long           deal_magicn  =0;
   double         deal_profit  =0;
   double         deal_priceout=0;
   datetime       deal_time    =0;
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {

      if(HistoryDealSelect(trans.deal))
        {
         deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_magicn=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_direktion=(ENUM_DEAL_TYPE)HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_priceout=HistoryDealGetDouble(trans.deal,DEAL_PRICE);
         deal_profit=HistoryDealGetDouble(trans.deal,DEAL_PROFIT);
         deal_time=(datetime)HistoryDealGetInteger(trans.deal,DEAL_TIME);
        }
     }

   if(deal_entry==DEAL_ENTRY_OUT)
     {
     if(magic==deal_magicn)
      programm.OnTradeTransactionEvent(deal_profit,deal_magicn);
     }

  }

//+------------------------------------------------------------------+
man bedenke das "m_gra.Element(0)" mein versuch war das Element anzugeben

Die entsprechende BIbliothek findet ihr im Anhang als ZIP
Angehängte Dateien
Dateityp: zip Teil11.3_EasyAndFastGui.zip (757,3 KB, 1x aufgerufen)
  #2 (permalink)  
Alt 16.02.22
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.677
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Was für einen Programmierkurs und wo hast Du den für wie viel absolviert?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 16.02.22
Neues Mitglied
 
Registriert seit: May 2020
Ort: Duisburg
Beiträge: 26
Aleksi befindet sich auf einem aufstrebenden Ast
Standard

Bei BM-Trading den Mql5 MasterClass Kurs..
kost so um die 450
  #4 (permalink)  
Alt 18.02.22
Neues Mitglied
 
Registriert seit: May 2020
Ort: Duisburg
Beiträge: 26
Aleksi befindet sich auf einem aufstrebenden Ast
Standard

Soooo endlich n Graph!

Code:
//+------------------------------------------------------------------+
//|                                                      GUITest.mq5 |
//|                                                     Manuel Simon |
//|                      https://www.mql5.com/de/users/aleksi-trader |
//+------------------------------------------------------------------+
#property copyright "Manuel Simon"
#property link      "https://www.mql5.com/de/users/aleksi-trader"
#property version   "1.00"

#include <EasyAndFastGUI\WndCreate.mqh>
ulong magic=123;
double x_norm[];//time
double y_norm[];//test
double y_norm2[];//test
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CProgram: public CWndCreate
  {
private:
   CWindow           m_window;
   CGraph            m_graph1;

public:
   void              CreateGui()
     {
      CWndCreate::CreateWindow(m_window,"Test",20,20,800,600);
      CreateGraph1(2,50);
      CWndEvents::CompletedGUI();
     }

   void              OnTimerEvent()
     {
      CWndEvents::OnTimerEvent();
     }

   void               OnInitEvent()
     {

     }

   void               OnTickEvent()
     {

     }

   void              InitArrays()
     {
      int arraysize= 3;//HistoryDealsTotal();
      ArrayResize(x_norm,arraysize);
      ArrayResize(y_norm,arraysize);
      ArrayResize(y_norm2,arraysize);
      x_norm[0]=(double)TimeCurrent(); //Zeitachse Value
      y_norm[0]=1000; // testachse1 value
     y_norm2[0]=1067; // testachse1 value

     }

   bool              CreateGraph1(int x_gap,int y_gap)
     {
      m_graph1.MainPointer(m_window);
      InitArrays();
      m_graph1.AutoXResizeMode(true);
      m_graph1.AutoXResizeRightOffset(2);

      if(!m_graph1.CreateGraph(x_gap,y_gap))
         return(false);

      CGraphic *graph=m_graph1.GetGraphicPointer();
      graph.BackgroundColor(::ColorToARGB(clrWhiteSmoke));

      CAxis *x_axis=graph.XAxis();
      x_axis.AutoScale(true);
      x_axis.Type(AXIS_TYPE_CUSTOM);
      x_axis.ValuesFunctionFormat(TimeFormat);
      CCurve *curve1=graph.CurveAdd(y_norm,::ColorToARGB(clrCornflowerBlue),CURVE_LINES,"test achse1");
      CCurve *curve2=graph.CurveAdd(y_norm2,::ColorToARGB(clrRed),CURVE_LINES,"test achse2");
      x_axis.DefaultStep(10);
      graph.CurvePlotAll();
      graph.Update(true);
      CWndContainer::AddToElementsArray(0,m_graph1);
      return(true);
     }



  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string            TimeFormat(double x,void *cbdata)
  {
   return(TimeToString((datetime)x_norm[ArraySize(x_norm)-(int)x-1]));
  }


CProgram Program;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Program.CreateGui();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

   Program.OnTickEvent();

  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
//---

  }
//+------------------------------------------------------------------+
Jetzt ist nur noch die Fage wie ich meine Historischen Daten da rein bekomme.
Hätte jemand eine Idee?
  #5 (permalink)  
Alt 20.02.22
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 321
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Über iClose() und die anderen standard Funktionen, oder was meinst du sonst mit historischen Daten?
  #6 (permalink)  
Alt 20.02.22
Neues Mitglied
 
Registriert seit: May 2020
Ort: Duisburg
Beiträge: 26
Aleksi befindet sich auf einem aufstrebenden Ast
Standard

Okay hab mich unglücklich ausgedrückt, meine Idee ist es die Kapitalkurve zu zeichnen, also muss ich in der History die Profite der abgeschlossenen Deals holen..

Ist ja keine Kunst, die Werte der History (profit,dealtime) sind dann in einer Struktur als Array gespeichert.

Allerdings ist mir unklar wie ich jetzt die einzelen Arrays an den Graph übermitteln soll.

So speicher ich das ganze in nem Array:

Code:
 void              InitArrays()
     {
      HistorySelect(0,TimeCurrent());
      int deals=HistoryDealsTotal();
      ArrayResize(x_norm,deals);
      ArrayResize(y_norm,deals);
      ArrayResize(y_norm2,deals);
      
      for(int i=0; i<deals; i++)
        {
         ulong deal_ticket=HistoryDealGetTicket(i);
         if(deal_ticket>0)
           {
            string symbol=HistoryDealGetString(deal_ticket,DEAL_SYMBOL);
            datetime time=(datetime)HistoryDealGetInteger(deal_ticket,DEAL_TIME);
            ulong order  =HistoryDealGetInteger(deal_ticket,DEAL_ORDER);
            long pos_ID  =HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);
            ENUM_DEAL_ENTRY entry_type=(ENUM_DEAL_ENTRY)HistoryDealGetInteger(deal_ticket,DEAL_ENTRY);

            if(entry_type==DEAL_ENTRY_OUT)
              {

               x_norm[i]=(double)time; //Zeitachse Value
               y_norm[i]=HistoryDealGetDouble(deal_ticket,DEAL_PROFIT); //Testachse1 value
              }
           }
         else
           {
            PrintFormat("Kein Deal in Auflistung %d. Fehler %d",i,GetLastError());
           }
        }

     }
Kann sein das ich noch in dieser Funktion erst noch die Profite zusammenrechnen muss aber das ist ja auch n Kinderspiel
Thema geschlossen

Lesezeichen

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 +2. Es ist jetzt 19:07 Uhr.





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