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)
-   -   Refresh Offlinechart (http://www.expert-advisor.com/forum/showthread.php?t=3190)

daliman 28.08.13 20:14

Refresh Offlinechart
 
Hallo. Ohne viele einleitende Worte, gleich zur Frage.

Mit dem Script

Code:

int start()
{
  static int hwnd = 0;
  hwnd = WindowHandle(Symbol(), Period());
 
  while(True)
  {
      PostMessageA(hwnd,WM_COMMAND,CHART_CMD_UPDATE_DATA,0);
      Sleep(updateZeit);
  }
  return(0);
}

Kann ich einen Offlinechart, den ich mit CustomPeriod erstelle, automatisch aktualisieren. Jedes mal wenn ich den MT4 starte muß ich aber die Scripte wieder mounten. Daher habe ich das mit einem Indikator versucht. Ergebnis - MT reagiert nicht mehr. PostMessageError ohne nähere Angaben.

Hat jemend eine Ahnung woran das liegt?

dave_hofmann 29.08.13 10:30

Hallo,

verstanden habe ich dein Problem nicht, versuche trotzdem ein paar Tips zu geben. In der while Schleife fehlt noch ein RefreshRates um die Daten zu aktualiesieren, andernfalls bekommst du irgendwann ein buffer overflow. Vielleicht meintest du die Funktion WindowRedraw?

Guten Tag,

Dave

dave_hofmann 29.08.13 10:33

Hallo,

was ich vergessen habe ist, dass du die while Schleife in while(IsStopped()==false) aendern sollst, damit funktioniert das schliessen des eas oder scripts ohne timeout.

Guten Tag

Dave

daliman 30.08.13 01:36

zu 1)
Ich habe einen MT4 (online) der mir einen Offlinechart erstellt. z.B. 4 x M5 mit Period_Converter_Opt.mq4.

Dann habe ich einen zweiten MT4 (offline) der diesen Offlinechart anzeigt ... wie geht das denn!? ... ganz einfach das Historyverzeichnis des ersten MT, mittels MKLINK (Windowskommando) zum Verzeichnis des zweiten MT machen.

Jetzt kann ich im Submenü "Aktualisieren" auswählen oder das Script anbinden und mir das manuelle Aktualisieren. (Klappt. Mit den Vorschlägen noch besser)

Wenn ich diesen Codeschnipsel in einen Indikator reinschreibe, das geht nichts mehr und ich muß den MT-Prozess killen.

Code:

#property indicator_chart_window
#include <WinUser32.mqh>
#define  CHART_CMD_UPDATE_DATA            33324
extern int updateZeit = 1000;
static int hwnd = 0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int init()
{
      //---- indicators
      hwnd = WindowHandle(Symbol(), Period());
      //----
      return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                      |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
//----
      PostMessageA(hwnd,WM_COMMAND,CHART_CMD_UPDATE_DATA,0);
      RefreshRates();
      WindowRedraw();
//----
  return(0);
}

Ich würde vielleicht selbst drauf kommen woran es liegt, aber es gibt keinen Anhaltspunkt/Fehlermeldung/Code oder so. Oder ich weiß einfach nur nicht wo ich gucken soll...

Trabo 30.08.13 13:11

Zitat:

Zitat von daliman (Beitrag 23401)
Hallo. Ohne viele einleitende Worte, gleich zur Frage.

Mit dem Script

Code:

int start()
{
  static int hwnd = 0;
  hwnd = WindowHandle(Symbol(), Period());
 
  while(True)
  {
      PostMessageA(hwnd,WM_COMMAND,CHART_CMD_UPDATE_DATA,0);
      Sleep(updateZeit);
  }
  return(0);
}

Kann ich einen Offlinechart, den ich mit CustomPeriod erstelle, automatisch aktualisieren. Jedes mal wenn ich den MT4 starte muß ich aber die Scripte wieder mounten. Daher habe ich das mit einem Indikator versucht. Ergebnis - MT reagiert nicht mehr. PostMessageError ohne nähere Angaben.

Hat jemend eine Ahnung woran das liegt?

--> Eine andere simpele Methode währe doch, das als Profile defeault abzupspeicher, dann bleibt das script doch erhalten oder irre ich mich
hier ?

daliman 30.08.13 14:27

Das funktioniert auch leider nicht. Übrigens, "währe" ohne "h", "simpele" ist "simple", "defeault" heißt "default", "abzupspeicher" solle besser "abzuspeichern" sein und "script" ist "skript". Aber sonst sind keine Lechsleibfeler drin.

traderdoc 30.08.13 14:54

Nun sei mal nicht so krümel*****risch!
Hast ja prinzipiell Recht, nur mit dem skript bist Du über das Ziel hinausgeschossen. Denn entweder man benutzt es im englischen Sinne, dann klein und mit c oder im deutschen Sinne mit k oder im latainischen mit c, dann aber auch in beiden Fällen in Großschreibweise!

traderdoc

Trabo 02.09.13 07:54

Vielen Dank, kannst ja gerne alle meine antworten kurz mal überfliegen und auf die rechtschreibfehler korrigieren.
;)


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