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 MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Machbar im MT4??? (http://www.expert-advisor.com/forum/showthread.php?t=5343)

Trader6666 13.12.16 17:15

Machbar im MT4???
 
Hallo zusammen,

da man im MT4 ja keine Charts extern in Fenstern generieren kann (außer ich bin falsch informiert),würde ich gerne eine Lösung dafür finden.

Als Beispiel , ich möchte eine Analyse machen nach Markttechnik einmal für Long und einmal für Short. Damit ich nicht mehrere Charts her nehmen muss, möchte ich quasi ein Abbild meiner beiden Analyse speichern und über einen Button die Analysen "durchschalten". Dazu müsste ich ja quasi ein Chartbild "Speichern" hat jem ne Idee wie man das am besten angehen könnte????

Ich weiß man kann auch 2 separate charts nehmen, aber bei mehreren Alternativen wirds eben zu viel, deswegen der Gedanke.

Möchte jetzt keinen code oder ähnliches, nur paar Ideen wären klasse.

LG Trader

traderdoc 13.12.16 19:04

per Script über die MQL4-Funktion

bool WindowScreenShot(
string filename, // file name
int size_x, // width
int size_y, // height
int start_bar=-1, // first visible bar
int chart_scale=-1, // scale
int chart_mode=-1 // mode
);

traderdoc

Kronenchakra 13.12.16 20:31

Falls ich dich richtig verstanden habe, sehe ich 2 Möglichkeiten:

1. Ctrl+Print (Strg+Druck) kopiert das aktuelle Fenster in die Zwischenablage, dann im Paint mit Ctrl+V aus der Zwischenablage holen.

2. Mit dem 'Snipping Tool' vom Bildschirm kopieren.

Grüße Otto

Trader6666 13.12.16 21:47

Liste der Anhänge anzeigen (Anzahl: 1)
danke für eure Antworten, ich hab mich vllt nicht ganz klar ausgedrückt,

es geht nicht um eine Speicherfunktion wo der Chart einfach Kopiert und als Bild wiedergegeben wird.


Als beispiel ich mach ne analyse händisch, beschrifte Zonen, mach mir markierungen /fibos /channels das volle Programm.

Damit ich keine 4 Charts mit dem gleichen Pair habe , möchte ich in einem chart die Objekte/Labels/Fibo´s, an den von mir hinterlegten Positionen zwischenspeichern als "Alternative Long", dann mach ich das ganze für short und möchte wieder alle Objekte etc. speichern.

Durch einen Buttondruck möchte ich dann durch die verschiedenen Alternativen durchschalten und die Objekte sollen sich genauso wieder an Ihrer "abgespeicherten" Position befinden.

Ich hoffe das diese Erklärung verständlicher war :)


Meine Idee hierzu wäre über ObjectsTotal mir alle Objekte zu holen und sie in Arrays zu speichern die Frage is nur wie ich das vernünftig anstelle:confused::confused:

Code:

if(sparam == "Alt1")
  {

  int O_Total= (ObjectsTotal());Print("Anzahl der Objeke:  "+O_Total);
  for(int i=0;i<O_Total;i++)
    {
      string name = ObjectName(i);
      int ObjektTyp= ObjectType(i);
      Print("Name: "+name+ "    Typ: "+ObjektTyp);
      if(ObjektTyp == OBJ_LABEL)
        {
          Print ("Objekt ist ein Label");
        }
    }
 
  }


Anzahl bekomm ich wie erwaret zurück nur bei den ObjectType steh ich grad aufn schlauch wegen den ID´s habs mit nummern versucht oder mit den Enums direkt aber überall bekomm ich nur -1 zurück . Sieht man im Anhang. Denk, wenn ich die Werte der Objekte also sprich Name und Typ ermitteln kann, ist es auch möglich, auf die Positionen/Werte der Objekte zuzugreifen. So müsste das ja klappen. Nur häng ich grad bei den ID´s der Objekte fest:confused:

Trader6666 13.12.16 22:05

hab den fehler grad selber im code gesehen -.-

Code:

  int O_Total= (ObjectsTotal());Print("Anzahl der Objeke:  "+O_Total);
  for(int i=0;i<O_Total;i++)
    {
      string name = ObjectName(i);
      int ObjektTyp= ObjectType(name);
     
      if(ObjektTyp != OBJ_LABEL)
        {
          Print("Name: "+name+ "    Typ: "+ObjektTyp);
          Print ("Objekt ist Kein Label");
        }
    }

so is es richtig und klappt auch mit der Ausgabe.

Kronenchakra 13.12.16 22:23

Wenn du jetzt die Datei \Include\ChartObjects\ChartObjectsTxtControls.mqh einbindest ist alles paletti.
Code:

#include "ChartObjects\ChartObjectsTxtControls.mqh"
Die Objekte dort besitzen alle die Methoden Load und Save
Code:

class CChartObjectLabel : public CChartObjectText
  {
public:
                    CChartObjectLabel(void);
                    ~CChartObjectLabel(void);
  //--- methods of access to properties of the object
  int              X_Distance(void) const;
  bool              X_Distance(const int X) const;
  int              Y_Distance(void) const;
  bool              Y_Distance(const int Y) const;
  int              X_Size(void) const;
  int              Y_Size(void) const;
  ENUM_BASE_CORNER  Corner(void) const;
  bool              Corner(const ENUM_BASE_CORNER corner) const;
  //--- change of time/price coordinates is blocked
  bool              Time(const datetime time) const { return(false); }
  bool              Price(const double price) const { return(false); }
  //--- method of creating the object
  bool              Create(long chart_id,const string name,const int window,const int X,const int Y);
  //--- method of identifying the object
  virtual int      Type(void) const { return(OBJ_LABEL); }
  //--- methods for working with files
  virtual bool      Save(const int file_handle);
  virtual bool      Load(const int file_handle);
  };

Ich hoffe das hilft dir weiter, ist aber im MT4 nicht getestet.
Aber dort wird es ja auch eine Standardlibrary geben.

Trader6666 14.12.16 20:28

danke Otto!


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