Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43249
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

Like Tree1Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 17.12.13
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 22
Fibotrader befindet sich auf einem aufstrebenden Ast
Standard

Hallo feelfree,

hab das Skript in den Chart gezogen, ging aber nicht.

Im Protokoll steht der Skript-Name und dann removed. Warum weiß ich nicht. Das Konto ist ganz neu, vielleicht fehlt noch etwas.
  #12 (permalink)  
Alt 17.12.13
Premium Mitglied
 
Registriert seit: Mar 2013
Beiträge: 332
feelfree befindet sich auf einem aufstrebenden Ast
Standard

Servus fibo,

bei mir funktioniert dein Script auf dem DOW einwandfrei.
Auf welchem Chart hast du's denn probiert?

Sollte ja schon > 9500 anzeigen.
  #13 (permalink)  
Alt 17.12.13
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 22
Fibotrader befindet sich auf einem aufstrebenden Ast
Standard

Hi feelfree,

super, dann weiß ich wenigstens das es funzt, danke.

Ich hab es auf den Dax gezogen. Er notiert ja noch etwas drunter, aber die Formel sollte ja trotzdem angenommen werden. In dem Moment, wenn ich die Formel in den Chart ziehe, wird unten im Bereich der Nachrichten bei "Experten" folgendes angezeigt:

loaded successfully, dann OrderSend failed with error#0, dann uninit reason 0 und dann removed. Ich weiß nicht, warum er die Fehlermeldung bringt. Hab gerade mal geschaut, was der Grund "uninit reason 0) bedeutet und folgendes gefunden: Script finished its execution independently.

Ich denke, das Problem liegt irgendwie daran, daß er in meinem Fall beim Dax auf die Order warten muß und beim Dow kann er sie direkt ausführen, weil dieser ja über 9500 notiert. Falls das stimmt ist das natürlich nicht so gut, weil ich ja nicht sofort kaufen will, sondern erst bei Überschreiten einer Marke.

Vielleicht muß ich die Formel ändern: z.B. if(Close[1] crosses over 9500). Muß mal sehen ob es das bei MQL überhaupt gibt.
  #14 (permalink)  
Alt 17.12.13
Premium Mitglied
 
Registriert seit: Mar 2013
Beiträge: 332
feelfree befindet sich auf einem aufstrebenden Ast
Standard

Deepack hat es bereits gestern gepostet.

Zitat:
Zitat von Deepack Beitrag anzeigen
hi
vorab sollte man sagen dass für dich ein skript bestimmt nicht ausreicht
ob du einen EA oder ein skrip schreibst ist völlig egal

aber ein skript wird nur einmal ausgeführt wenn du es anwendest
ein EA bei jedem Tick.

Viel erfolg
Ein EA wartet bis die Bedingung zutrifft. Also schreib gleich einen EA.
Der Aufbau ist derselbe und er arbeitet so lange bis du ihn aktiv aus dem Chart entfernst.

Ein Cross kannst du abfragen indem du die Bedingung wie folgt formulierst
Close[2] < 9500 && Close[1] > 9500

Grüße
Dan
  #15 (permalink)  
Alt 17.12.13
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 22
Fibotrader befindet sich auf einem aufstrebenden Ast
Standard

Hallo Dan,

super, jetzt hat es geklappt

Jetzt hab auch ich endlich verstanden, was der Unterschied zwischen Skript und EA ist.

Allerdings schreibt er mir jetzt alle paar Sekunden (also wahrscheinlich jeden Tick wenn er die Bedingung abfragt) "OrderSend failed with error #0. Das macht er wohl jetzt so lange bis die Bedingung erfüllt ist. Ist das normal oder soll ich das einfach rausnehmen, dann schreibt er nix, und wenn die Order ausgeführt wird, dann ist gut.

Danke nochmal (auch nochmal an Deepack)
  #16 (permalink)  
Alt 17.12.13
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 22
Fibotrader befindet sich auf einem aufstrebenden Ast
Standard

Eine Frage hätte ich doch noch:

Wie oft wird denn der Kaufauftrag ausgeführt? was wäre denn wenn nach dem Close>9500 ein Close<9500 kommt und dann wieder ein Close>9500, kauft er dann nochmal? muss ich vielleicht irgendwie die Anzahl der Orders limitieren?
  #17 (permalink)  
Alt 18.12.13
Premium Mitglied
 
Registriert seit: Mar 2013
Beiträge: 332
feelfree befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Fibotrader Beitrag anzeigen
Eine Frage hätte ich doch noch:

Wie oft wird denn der Kaufauftrag ausgeführt? was wäre denn wenn nach dem Close>9500 ein Close<9500 kommt und dann wieder ein Close>9500, kauft er dann nochmal? muss ich vielleicht irgendwie die Anzahl der Orders limitieren?
Du lernst schnell.

Bevor du deine Order abschickst solltest du natürlich prüfen ob bereits eine Order offen ist.

Genau so verhält es sich mit dem erstgenannten "Fehler" ("OrderSend failed with error #0), der durch die Tatsache entsteht das Tickets solange < 1 ist bis deine Order abgesetzt wird.

Du musst die Bedingung also sinnvoll ineinander verschachteln.
Aktuell steht jede für sich allein.

Programmieren zu lernen ist aufwändig aber ich kann dir jetzt schon versichern dass es sich in vielerlei Hinsicht für dich auszahlen wird.
  #18 (permalink)  
Alt 18.12.13
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 22
Fibotrader befindet sich auf einem aufstrebenden Ast
Standard

Morgen Dan,

ich sehe schon, da brauche ich jetzt nochmal eine Nacht dazu

Ist aber wirklich Klasse, dass du Hilfestellung gibst. So ganz alleine wäre man schon etwas aufgeschmissen.

Na ja, ich schaue mal ob ich da was basteln kann. Kann allerdings erst heute abend damit anfangen.

Ich muß es übrigens lernen, denn ich habe es satt, mein Leben vor dem Rechner zu verbringen. Ich bin seit 15 Jahren diskretionärer Trader und habe sehr sehr viel Zeit vor dem Rechner verbracht. Ich möchte aber behaupten, dass es auch Vorteile hat. Ich kann natürlich den Markt relativ gut abschätzen, meistens liege ich die ersten paar Meter richtig (im Minutenbereich). Ich möchte aber in Zukunft nicht den Ausstieg machen, sondern es dem Computer überlassen. Dadurch nehmen meine Freiräume und wahrscheinlich auch meine durchschnittlichen Gewinnpunkte zu.

Und es macht ja auch keinen Sinn, sich etwas erstellen zu lassen, denn schließlich bin ich naher der, der sein Geld damit riskiert und die Systeme administriert.

Danke dir nochmal
Grüße
Fibo
  #19 (permalink)  
Alt 18.12.13
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 22
Fibotrader befindet sich auf einem aufstrebenden Ast
Standard

hab jetzt auf die Schnelle doch was gemacht.

Macht das Sinn ?? die erste Order bekommt doch die Ordernummer 1, dann müßte es doch gehen.

//+------------------------------------------------------------------+
int start()
{
if(Close[1] > 9500)
{
int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,30,0,0,NULL , 0,0,CLR_NONE);
return;
}
if(ticket<1)
{
Print("OrderSend failed with error #",GetLastError());
return;
}
if(ticket>1)
{Print("max. Lot erreicht");
return;
}
//----
return(0);
}
//+------------------------------------------------------------------+
  #20 (permalink)  
Alt 18.12.13
Premium Mitglied
 
Registriert seit: Mar 2013
Beiträge: 332
feelfree befindet sich auf einem aufstrebenden Ast
Standard

Nein, das macht keinen Sinn.

Der Entscheidungsbaum soll ja wie folgt aussehen:

Ebene 1. Bedingung erfüllt: ja/nein (ja = Ebene 2 / nein = Exit)
Ebene 2. Open Orders: ja/nein (ja = Exit / nein = OrderSend und Fehlercheck)
Ebene 3. OrderSend
Ebene 4. Ticketcheck: ja/nein ( ja = check ok und Exit / nein = error code und Exit)

Du musst mit if und else arbeiten.

So wie es jetzt aufgebaut ist bleibst du immer in Ebene 1 und fragst hintereinander 3 verschiedene Bedingungen ab.

Code:
      ticket=OrderSend(Symbol(),OP_BUY,1,Ask,30,0,0,NULL , 0,0,CLR_NONE);
      if( ticket > 0 )
      {
       if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
       {
        Print("BUY order opened : ",OrderOpenPrice());
       }
      }
      else
      {
       Print("Error opening BUY order : ",GetLastError());
      }
Thema geschlossen

Lesezeichen

Stichworte
kurs, kurs unterschritten, mql4, programmierung, programmierung metatrader

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 +1. Es ist jetzt 16:01 Uhr.





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