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

Andreas2016 02.06.17 17:47

Auswertung Spread
 
Guten Abend,

weiß bitte jemand, wie eine Auswertung fahre wie sich der Spread an einem bestimmten Zeitraum verändert.

Ich würde das gerne für den Dax als Ger30 machen. Da ist richtig schön Bewegung dahinter.

Freue mich über Anregungen.

Ein schönes WE wünscht allen
Andreas

PS: Und für diejenigen, welche mir einer Idee etc. helfen die Frage zu beantworten hinterlasse ich schonmals mein Dankeschön.

Ca$hDigger 02.06.17 21:23

Hallo Andreas,

man könnte bei jedem Tick den aktuellen Spread auslesen (oder grober jede Minute) und den Wert inklusiv Zeitstempel (oder gleich als lesbares Zeitformat) in eine csv schreiben. Diese wiederum wenn fertig mit Excel öffnen und ein Graph auf die Reihe legen dann sieht man grafisch schön die Unterschiede.

Grüße
C$D

Andreas2016 02.06.17 22:41

Vielen Dank C$D,

Deine Antwort zeigt schonmal daß das geht.

Wie kann ich das bitte umsetzen, bei jedem Tick den aktuellen Spread auslesen und in die csv bringen? Gibt es dafür ein Script oder gar eine interne Anwendung?
Von dort vermute ich komme ich selbst weiter ans Ziel.

Viele Grüße und Danke
Andreas

Collider 03.06.17 07:34

Hallo Andreas,

diesen Code habe ich aus dem Netz .Stammt nicht aus meiner Feder.

PHP-Code:

//------------------------------------------------------------------
#property copyright "www.forex-tsd.com"
#property link      "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window

//
//
//
//
//

extern string FileName   "Ticks.csv";
extern bool   SaveVolume false
int fileHandle;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//

int  OnInit()                   { fileHandle FileOpen(Symbol()+" - "+FileName,FILE_WRITE|FILE_SHARE_READ|FILE_ANSI|FILE_CSV); return(0); }
void OnDeinit(const int reason) {              FileClose(fileHandle);}
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &Time[],
                const 
double &Open[], const double &High[], const double &Low[], const double &Close[],
                const 
long &TickVolume[], const long &Volume[], const int &Spread[])
{                
   if (
fileHandle <0)
   {
      static 
bool alerted false;   //<--------- Welchen Sinn das haben
         
if (!alerted)              //<-------- soll ist mir aber schleierhaft
         
{
            
Alert("File : "+Symbol()+" - "+FileName+" could not be opened"); alerted true;
         }
         return(
0);
   }         
   if (
FileSize(fileHandle) == 0)
         
FileWriteString(fileHandle,"date and time,bid,ask,volume\n");
         if (
SaveVolume)
               
FileWriteString(fileHandle,TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)+","+DoubleToString(TickVolume[rates_total-1],0)+"\n");
         else  
FileWriteString(fileHandle,TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)+","+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)+"\n");
         
FileFlush(fileHandle);
   return(
0);


Du müsstest dann nur noch den Spread berechnen mit:
PHP-Code:

(ask bid) / Point 

Gruß Christian

traderdoc 03.06.17 10:13

if (fileHandle <0)
{
static bool alerted = false; //<--------- Welchen Sinn das haben
if (!alerted) //<-------- soll ist mir aber schleierhaft
{
Alert("File : "+Symbol()+" - "+FileName+" could not be opened"); alerted = true;
}
return(0);
}

Der Sinn liegt in der einmaligen! Alert-Ausgabe, denn alerted wird nach dem Alert auf true gestellt und damit wird die if-Abfrage false.

Man hätte allerdings den Code auch kürzer und übersichtlicher fassen können, indem man den Alert in der Funktion OnInit() ausgeben lässt:

int OnInit() {
...
if (filehandle < 0) Alert(...);
return(0);
}

int OnCalculate(...) {
if (filehandle < 0) return(0);
...
}

traderdoc

Andreas2016 03.06.17 10:14

Super und ein großes Dankeschön Christian

Collider 03.06.17 10:26

Zitat:

Zitat von traderdoc (Beitrag 38799)

Der Sinn liegt in der einmaligen! Alert-Ausgabe, denn alerted wird nach dem Alert auf true gestellt und damit wird die if-Abfrage false.


traderdoc

Also verhindert static ein neuinitialisierung von alerted ?

Gesendet von meinem LG-H850 mit Tapatalk

Ca$hDigger 03.06.17 11:06

Hallo Andreas du kannst auch direkt den Spread rausholen per MarketInfo mit MODE_SPREAD.
https://docs.mql4.com/marketinformation/marketinfo
https://docs.mql4.com/constants/envi...tinfoconstants

Zum csv erstellen:
https://docs.mql4.com/files

Viel Erfolg, C$D

Andreas2016 03.06.17 11:48

Ein Dankeschön für alle Antworten und allen ein schönes WE
Andreas

traderdoc 03.06.17 22:02

Zitat:

Zitat von Collider (Beitrag 38802)
Also verhindert static ein neuinitialisierung von alerted ?

Korrekt! Man hätte alerted auch global deklarieren können.

traderdoc


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