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

I____/I 03.10.13 14:10

Simples script
 
Hallo,

bin neu hier und möchte Euch bitten mir zur helfen. Mir geht es nur darum, ein einfaches script zu schreiben, dass einen Signalton und möglichst auch eine Mail versendet, wenn der Indikator "Volumes" einen bestimmten Wert erreicht hat. Gibt es evtl. auch brauchbare Bücher, die mir helfen, solche einfachen Scrpits zu erstellen? (z. B. Expert Advisor Programming: Creating Automated Trading Systems in MQL for MetaTrader 4 [Englisch] [Taschenbuch])

Besten Dank für die geschätzte Hilfe.

Grüße

I_____/I

I____/I 07.10.13 18:48

... keiner eine Idee? Müßten doch genüngend Cracks unter Euch zu finden sein! :confused:

Danke und Grüße.

I____/I 10.10.13 14:02

... keiner einer brauchbare Idee?!? :(

Mast83 10.10.13 14:30

Zitat:

Zitat von I____/I (Beitrag 23898)
... keiner einer brauchbare Idee?!? :(

hast mal im codebase bei mql4 geschaut ob es sowas ähnliches gibt?

Deepack 10.10.13 19:48

hey
im endeffekt ist es eine zeile code

Code:

if(iVolume(Symbol(),Period(),1) > 4) Alert("Volume " + iVolume(Symbol(),Period(),1));
als eigen indikator speichern und
bei jedem tick kommt eine alert meldung

LG

I____/I 10.10.13 23:56

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Deepack,

erst einmal Danke für Dein Feedback. Ich denke ich muß mein Anliegen noch genauer beschreiben.
Mir geht es im Prinzip darum, im 1. Min. Chart von MT einen Alarm ausgegeben zu lassen, wenn ein bestimmtes Volumen erreicht bzw. überschritten wird (z. B. >= 100, siehe auch Anhang). Wenn z. b. nach einiger Zeit wieder dieses Niveau erreicht wird - kann natürlich auch in kürzeren Abständen vorkommen - soll wieder ein Alarm ausgegeben werden (refresh jede Minute). Ist das schwierig zu prgrammieren. Für Tipps bin ich Dir sehr dankbar.

VG

I____/I 10.10.13 23:57

@Mast83

... habe ich, ewig lange. Nix gefunden.

Deepack 11.10.13 07:41

hallo gerne nochmal

Code:

  if(cBar == 0 ) cBar = Bars;
 
  if (cBar != Bars && iVolume(Symbol(),Period(),1) > 100)  PlaySound("alert.wav");
 
  cBar = Bars;

das kommt in die int Start()
und als indikator speichern
jetzt kommt jedes mal wenn das volumen über 100 steigt ein signal
1x pro minute

I____/I 11.10.13 11:03

... super! Herzlichen Dank! :) Werde ich mal ausprobieren. Habe mir zusätzlich o. g. Buch bestellt um mich in die Materie einzuarbeiten.

VG

I____/I 11.10.13 11:28

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Deepack,

habs mal versucht, bekomme aber die Fehlermeldungen im Anhang. Was mache ich falsch? Danke Dir!

Deepack 12.10.13 02:02

hallo
ja klar... du musst die cBar auch definieren

ausserhalb der int Start() sprich ganz oben

int cBar;


das wars

I____/I 12.10.13 14:26

... bin halt noch blutiger Anfänger und kenne mich mit der Syntax noch nicht aus :o. Fehler werden keine mehr angezeigt, super! Das o. g. Buch habe ich auch schon erhalten. Denke, das wird mir die Grundlagen und evtl. ein bißchen mehr näher bringen.

Erstmal vielen Dank für Deine Unterstützung.

LG
I____/I

I____/I 14.10.13 01:38

Liste der Anhänge anzeigen (Anzahl: 1)
... hoffe ich darf nochmals Deine Hilfe in Anspruch nehmen. Habe den Indikator getestet. Es ist jetzt so, dass jedesmal, wenn ein neuer Volumen-Balken begonnen wird, sofort der Alarm ausgelöst wird (als schon bei Volumen 1). Habe bereits mit dem Code etwas herumgespielt und testweise >10 usw. eingegeben (siehe anhängendes Scrpit). Wird irgendwie igrnoriert. Bitte sei doch so gut und test mal das Script, evtl. fehlt eine Kleinigkeit oder ich mache etwas falsch.

Danke Dir.

Deepack 14.10.13 09:21

ich habe playsound selbst noch nie verwendet da ich am vps arbeite

ersetzte mal die playsound funktion durch Alert(iVolume(Symbol(),Period(),1))

und eventuell cBars != Bars weglassen
dann müsste bei jedem neuen tick die meldung über das volume der vorherigen kerze ausgegeben werden

I____/I 14.10.13 10:04

... das funktioniert! Bloß mein Anliegen ist ja dass nur dann ein Alarm und eine Meldung ausgegeben wird, wenn ein bestimmter Wert überschritten wird.

Z. B. wird im Script > 10 angegeben, also wenn das Volumen über den Wert 10 steigt, sollen die entsprechenden Meldungen kommen. Aber das wird ignoriert.

PS: So sieht derzeit meine int start() aus:

int cBar;
int start()
{

if(cBar == 0 ) cBar = Bars;

if (cBar != Bars && iVolume(Symbol(),Period(),1) > 10) Alert(iVolume(Symbol(),Period(),1));

cBar = Bars;

return(0);
}

Deepack 14.10.13 13:36

hallo

iVolume(Symbol(),Period(),1) > 10)
Bezieht sicht auf die vorherige kerze

ersetzte sie durch eine 0 und lasse cBar != Bars weg

dann sollte die meldung erscheinen sobald die aktuelle Bar - Volumen 10 übersteigt

I____/I 14.10.13 16:30

... einwandfrei, funktioniert! :) Das einzige was jetzt noch eine bißchen nervt, ist, dass wenn der entsprechende Wert erreicht wird, bei jedem weiteren Tick ein Alarm ausgegeben wird. Habe versucht das zu beheben, indem ich das = Zeichen verwendet habe, kennt aber MQL4 nicht. Es reicht ja, wenn der Alarm nur 1x ausgegeben wird und erst dann wieder, wenn er das nächstemal erreicht wird (dann natürlich auch nur wieder 1x). Wenn Du dazu noch eine Idee hättest und noch Lust hast :D, wäre ich rundum zufrieden.

Vielen Dank für Deine bisherige Hilfe.

Racki 14.10.13 23:36

Zitat:

Zitat von I____/I (Beitrag 23924)
... das funktioniert! Bloß mein Anliegen ist ja dass nur dann ein Alarm und eine Meldung ausgegeben wird, wenn ein bestimmter Wert überschritten wird.

Z. B. wird im Script > 10 angegeben, also wenn das Volumen über den Wert 10 steigt, sollen die entsprechenden Meldungen kommen. Aber das wird ignoriert.

PS: So sieht derzeit meine int start() aus:

int cBar;
int start()
{

if(cBar == 0 ) cBar = Bars;

if (cBar != Bars && iVolume(Symbol(),Period(),1) > 10) Alert(iVolume(Symbol(),Period(),1));

cBar = Bars;

return(0);
}

Da war der Ansatz mit cBar schon richtig ;)
PHP-Code:

int cBar=0;
int init() { cBar=Bars; return(0); }
int deinit() { return(0); }
int start()
  {
    if (
cBar != Bars && iVolume(Symbol(),Period(),0) > 10)
    {
        
Alert(iVolume(Symbol(),Period(),0));
        
cBar Bars;
    }
  return(
0);
  } 


I____/I 15.10.13 10:10

... wenn ich den Code 1:1 übernehme erhalte ich 2 Fehlermeldungen (siehe unten).

Grüße

2;121;C:\Users\MW\Desktop\Test1.mq4;33:5;'init' - function already defined and has a body
2;121;C:\Users\MW\Desktop\Test1.mq4;34:5;'deinit' - function already defined and has a body

I____/I 15.10.13 13:30

Wäre super, wenn jemand von Euch den Code entsprechend modifizieren würde, damit die Meldung nur einmal erscheint, wenn der entsprechende Wert (z. B. 70, siehe auch Bsp. unten) erreicht wird. Bin damit noch irgendwie überfordert, weil meine Kenntnisse noch nicht ausreichen. Auch wenn ich o. g. Buch gestern erhalten habe. Danke Euch.

Meine int start () sieht momentan wie folgt aus:

int cBar;
int start()
{

if(cBar == 0 ) cBar = Bars;

if (iVolume(Symbol(),Period(),0) > 70) Alert("!Volumen über 70!");

cBar = Bars;

return(0);
}

Deepack 15.10.13 17:49

hallo die meldungen heissen nur dass du die init und deinit 2 mal verwendest

lösche deinen ganzen code und nimm den von racki

der hat ihn ja schon so geschrieben wie du es dir vorstellst

I____/I 15.10.13 20:01

... im nachhinein klatsch man sich gegen die Stirn! :rolleyes: :o
init und deinit gehören zum body oder ich nenne es mal "Grundgerüst" und stehen schon weiter oben. Toll, jetzt habe ich es perfekt!

Besten Dank, auch Dir Racki.

Viele Grüße


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