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: 4229
Beiträge: 40304
Benutzer: 6.529
Aktive Benutzer: 255
Links: 80
Wir begrüßen unseren neuesten Benutzer: mt4user
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einem Tag
- mt4user
vor einem Tag
- htnob77
vor 2 Tagen
- pitpitrows...
vor 2 Tagen
- Neldam
vor 3 Tagen
- Gerik

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

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: Mar 2017
Beiträge: 7
daytrader0815 befindet sich auf einem aufstrebenden Ast
Standard if-Anweising in MQL4

Hallo!

Ich befinde mich noch am Anfang der MQL4-Programmierung und habe deshalb eine Frage: meine if-Anweisung ist irgendwie falsch geschrieben. Bei zwei oder mehreren offen Positionen werden keine weiteren gesetzt. Das Script soll immer nur eine neue Position bis zum nächsten Signal setzen, wenn der RSIWert>70 ist. Was muss ich nun ändern?
Danke!


if (RSIWert>70&&OrdersTotal()<2)

// dann Order

OrderSend ("EURUSD",OP_SELL,3.0,Bid,3,0,Bid-20*_Point,"RSI",55,0,Red);
Mit Zitat antworten
  #2 (permalink)  
Alt vor 2 Wochen
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 148
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von daytrader0815 Beitrag anzeigen
Hallo!
... meine if-Anweisung ist irgendwie falsch geschrieben. Bei zwei oder mehreren offen Positionen werden keine weiteren gesetzt. Das Script soll immer nur eine neue Position bis zum nächsten Signal setzen, wenn der RSIWert>70 ist. Was muss ich nun ändern?
Versuche mal den Code zu verstehen, was der sagt:
Code:
if (   RSIWert > 70      // RSI über 70 => also 71,72,73,....
    && OrdersTotal() < 2 // Anzahl aller Orders weniger als 2 => also 0 oder 1
   )
Beachten bei OrdersTotal() geht es um alle, egal ob es gerade laufende Positionen oder noch auf Aktivierung wartende Stop- oder Limitorders sind, und auch egal ob das nun in einem Index, einer Währung, bei Rohstoffen oder Aktien ist.
Du mußt Dir die Bedingung wirklich haarklein überlegen.
Zitat:
nur eine neue Position bis zum nächsten Signal setzen, wenn der RSIWert>70 ist
ist für mich zum Beispiel völlig unklar, was da genau passieren soll. Und die Anzahl der OrdersTotal() wirst Du warscheinlich (oder auch nicht?) einschränken wollen?
Das ist alles, was ich Dir hier erst mal als Anregung geben kann. AVT
Mit Zitat antworten
  #3 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: Mar 2017
Beiträge: 7
daytrader0815 befindet sich auf einem aufstrebenden Ast
Standard

Hi,

ich denke die Funktion OrdersTotal ist die falsche, oder?
Wenn der RSIWert>70 ist, dann eine Position öffnen. Kurs geht <70 und irgendwann wieder >70, nun eine neue Position öffnen. So soll es sein, ich weiß nur nicht wie...
Mit Zitat antworten
  #4 (permalink)  
Alt vor 2 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.201
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
datetime OldBar;   //in die globalen Variablen schreiben
if (OldBar != Time[0]) {
   if (iRSI(NULL, 0, 14, PRICE_CLOSE, 2) < 70 && iRSI(NULL, 0, 14, PRICE_CLOSE, 1) > 70) {
      //Action
   }
   OldBar = Time[0];
}
Hierbei wird immer nach Kerzenwechsel geprüft, ob der RSI der vorletzten geschlossenen Kerze unter 70 und der RSI der letzten geschlossenen Kerze über 70 war. (am Beispiel der RSI-Periode 14 und des PRICE_CLOSE)

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #5 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: Jul 2017
Beiträge: 11
TraderDirk befindet sich auf einem aufstrebenden Ast
Standard

Code:
datetime Bar15M;
if (Bar15M!= iTime(NULL,PERIOD_M15,0)) {
   if (iRSI(NULL, PERIOD_M15, 14, PRICE_CLOSE, 2) < 70 && iRSI(NULL,PERIOD_M15, 14, PRICE_CLOSE, 1) > 70) {
      ..................
   }
   Bar15M= iTime(NULL,PERIOD_M15,0);
}
wenn Du unterschidliche TimeFrames Auswerten möchtest, kannst Du auch
statt Time[0] / iTime(NULL,PERIOD_M15,14,PRICE_CLOSE,1) nehmen.
So kannst Du mehrere TimeFrames auswerten.
Mit Zitat antworten
  #6 (permalink)  
Alt vor einer Woche
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 49
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Warum nicht einfach ein Flag setzen, wenn die Order geöffnet wurde?

Wenn RSI<70 wird das Flag zurückgesetzt.
Mit Zitat antworten
Antwort

Lesezeichen


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 +2. Es ist jetzt 07:34 Uhr.


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