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: 43253
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: 215
Gesamt: 215
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree1Likes
  • 1 Post By traderdoc
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 09.08.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard RSI-Crossline Signal (Bitte um Hilfe)

Hey Leute,

ich versuche gerade ein Liquidierungssignal für meinen EA zu erstellen und bin dabei aber auf erhebliche Probleme gestoßen.

Zitat:
if (OrdersTotal() > 0)
{

if (iRSI(NULL,0,14,PRICE_OPEN,0) > 70 > iRSI(NULL,0,14,PRICE_CLOSE,0)) //Erst schließen, wenn RSI von oben nach unten durch die 70er linie geht.
{

Alert ("Order closing now, because of RSI-Signal!");
Sleep(2000);

bool result;
result = OrderClose(OrderSelect(ticket, SELECT_BY_POS),OrderLots(),Bid,10); //Komisch: Wenn ich SELECT_BY_TICKET auswähle, funktioniert der Trailingstop nicht
if (result == true)
{
Alert ("Orderclosing succeeded");
}
else
{
Alert ("Orderclosing failed: #",GetLastError());
}


} else Print ("Fehler beim Positionsliquidieren!",GetLastError());
}
Der Sinn soll sein, dass die offene Long-Order geschlossen wird, wenn der RSI von oben nach unten durch die 70er Linie läuft.
Aber irgendwie kriege ich die if - Bedingung dafür nicht so ganz gebacken.

Würde mich riesig über Hilfe freuen, bin nämlich an diesem EA schon ne ganze Weile am verzweifeln.

LG
TrololoTromberino
  #2 (permalink)  
Alt 09.08.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
if (OrdersTotal() > 0)
{

if (iRSI(NULL,0,14,PRICE_OPEN,0) > 70 > iRSI(NULL,0,14,PRICE_CLOSE,0)) //Erst schließen, wenn RSI von oben nach unten durch die 70er linie geht. 
{ 

//besser wäre die Betrachtung auf geschlossenen Kerzen mittels
//if (iRSI(NULL, 0, 14, PRICE_CLOSE, 2) > 70 && iRSI(NULL, 0, 14, PRICE_CLOSE, 1) < 70)
//damit nicht bei jedem Tick diese Abfrage getätigt wird, sollte das über den Kerzenwechsel geregelt werden und damit eine einmalige Abfrage bei Öffnen der neuen Kerze erfolgen!

Alert ("Order closing now, because of RSI-Signal!");
// überflüssig! -> Sleep(2000);

bool result; 
result = OrderClose(OrderSelect(ticket, SELECT_BY_POS),OrderLots(),Bid,10); //Komisch: Wenn ich SELECT_BY_TICKET auswähle, funktioniert der Trailingstop nicht

//ja woher auch, wenn der OrderClose-Funktion evtl. der Wert der Variablen ticket zugeordnet wird, obwohl dort die OrderPosition hingehört!

if (result == true)
{
Alert ("Orderclosing succeeded");
}
else
{
Alert ("Orderclosing failed: #",GetLastError());
}


} else Print ("Fehler beim Positionsliquidieren!",GetLastError());
}
traderdoc
trololotromberino likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 11.08.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard

Code:
bool result; 
result = OrderClose(OrderSelect(ticket, SELECT_BY_POS),OrderLots(),Bid,10); //Komisch: Wenn ich SELECT_BY_TICKET auswähle, funktioniert der Trailingstop nicht

//ja woher auch, wenn der OrderClose-Funktion evtl. der Wert der Variablen ticket zugeordnet wird, obwohl dort die OrderPosition hingehört!
Vielen, vielen Dank ersteinmal!
Ich habe noch eine Frage: Wieso meinst Du, dass es falsch wäre, die Variable aufzurufen? Ich meine, ich gebe ihr doch vorher die Position:
Code:
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,sl,0, "My Order",16384,0,Green);
Eigentlich sollte er doch die Order aufnehmen und dann löschen. Aber leider will er immer noch keine Order beim RSI aus dem Markt nehmen.
Ich habe auch mal das hier versucht, klappt aber leider auch nicht:
Code:
result = OrderClose(OrderSelect(OrderTicket(), SELECT_BY_POS),OrderLots(),Bid,10);
Er erkennt leider die Position nicht.
Auch SELECT_BY_POS durch SELECT_BY_TICKET zu ersetzen hat leider keine Wirkung im gewünschten Sinne gezeigt.

Eine Idee?

LG
TrololoTromberino

PS: Eine Frage noch:
Code:
iRSI(NULL,0,14,PRICE_OPEN,0)
Folgerung aus deiner Antwort: 0 heißt jeder Tick, 1 heißt Open und 2 heißt Close, korrekt? Steht in der Hilfe leider nicht drin
  #4 (permalink)  
Alt 11.08.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von trololotromberino Beitrag anzeigen

...
Ich habe noch eine Frage: Wieso meinst Du, dass es falsch wäre, die Variable aufzurufen? Ich meine, ich gebe ihr doch vorher die Position:
Code:
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,sl,0, "My Order",16384,0,Green);
Nein, das ist nicht die Position, sondern die Ticketnummer.

Eigentlich sollte er doch die Order aufnehmen und dann löschen. Aber leider will er immer noch keine Order beim RSI aus dem Markt nehmen.
Ich habe auch mal das hier versucht, klappt aber leider auch nicht:
Code:
result = OrderClose(OrderSelect(OrderTicket(), SELECT_BY_POS),OrderLots(),Bid,10);
OrderTicket() kann nur einen Wert enthalten, wenn vorher die entsprechende Order selektiert wurde (über die Position oder per Ticketnummer).

regeln über
for (int i = OrdersTotal()-1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS)
//hier werden die Orders per Position aufgerufen


oder nur und direkter per
OrderSelect(ticket, SELECT_BY_TICKET)
also über die vorher abgespeicherte Ticketnummer


Er erkennt leider die Position nicht.
Auch SELECT_BY_POS durch SELECT_BY_TICKET zu ersetzen hat leider keine Wirkung im gewünschten Sinne gezeigt.

Wenn es dann per Ticket immer noch nicht gehen sollte, dann stimmt entweder die Variable "ticket" nicht oder im nachfolgenden Code ist ein Fehler.

Eine Idee?

LG
TrololoTromberino

PS: Eine Frage noch:
Code:
iRSI(NULL,0,14,PRICE_OPEN,0)
Folgerung aus deiner Antwort: 0 heißt jeder Tick, 1 heißt Open und 2 heißt Close, korrekt? Steht in der Hilfe leider nicht drin
Nein, kann so auch nicht drin stehen, weil:
die 0 am Ende bedeutet eine Indikatorberechnung auf der aktuellen Kerze, die 1 eine Berechnung auf der 1. geschlossenen Kerze und die 2 eine Berechnung auf der 2. geschlossenen Kerze. Wenn man nun in der Regel nicht repaintende Indikatorwerte möchte, sollte man nicht auf der aktuellen Kerze berechnen lassen. Und eine Kreuzung bedeutet immer die Berechnung zweier Werte vor und zweier Werte nach der Kreuzung


traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
liquidierungssignal, mql4, programmierung, programmierung metatrader, rsi, rsi crossline, rsi-crossline signal, signal

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 09:46 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.
-----------------------------------------------------------------------------------------------------------------------------