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: 43827
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: 608
Gesamt: 608
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 08.05.19
Neues Mitglied
 
Registriert seit: Mar 2017
Beiträge: 8
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);
  #2 (permalink)  
Alt 09.05.19
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
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
  #3 (permalink)  
Alt 09.05.19
Neues Mitglied
 
Registriert seit: Mar 2017
Beiträge: 8
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...
  #4 (permalink)  
Alt 09.05.19
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
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.
  #5 (permalink)  
Alt 11.05.19
Neues Mitglied
 
Registriert seit: Jul 2017
Beiträge: 15
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.
  #6 (permalink)  
Alt 13.05.19
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
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.
Thema geschlossen

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 +1. Es ist jetzt 19:02 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.
-----------------------------------------------------------------------------------------------------------------------------