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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3425
Beiträge: 34299
Benutzer: 5.466
Aktive Benutzer: 642
Links: 79
Wir begrüßen unseren neuesten Benutzer: albertodlb
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 5 Stunden
- albertodlb
vor 15 Stunden
- GuitarMike...
vor einem Tag
- Chartist
vor 2 Tagen
- RedBaron
vor 2 Tagen
- djcorna

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 47
Gesamt: 49
Team: 0
Team:  
Benutzer:  taubekette, Trader89
Freunde anzeigen

Empfehlungen

Werbung

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 18
Ado1964 befindet sich auf einem aufstrebenden Ast
Question Fehler bei Berechnung oder Send?

Hi Leute, ich versuche schon seit stunden den Fehler zu finden. Der EA läuft an sich. Ziel ist, dass er byu-/send-Orders auslöst, wenn sich Main und Signal kreuzen, wobei die Variable Distance den Abstand zwischen Main und Signal darstellt. Solange kein neues Crossing von Main und signal stattfindet (inkl. der Distance) soll nix passieren, ansonsten soll er zB Sell schliessen und buy öffnen.

{


if(PositionOpen()) return(0);

crossedup = false;
crosseddown = false;

for(int i = 0;i < 3;i++)
{
mline[i] = iStochastic(NULL, Period(),K_Period, D_Period, Slowing, MA_Method, 0, MODE_MAIN, i);
sline[i] = iStochastic(NULL, Period(),K_Period, D_Period, Slowing, MA_Method, 0, MODE_SIGNAL, i);
}
if ((mline[1] < sline[1]) && (mline[2] -Distance> sline[2])) crosseddown = true;
else if ((mline[1] > sline[1]) && (mline[2]+Distance < sline[2])) crossedup = true;
else return(0);


if (crossedup) GoLong();
if (crosseddown) GoShort();


return(0);
}

.....

int GoLong()

{

longtkt = -1;
cnt = 0;
while((longtkt < 0) && (cnt < 20))
{
longtkt = OrderSend(Symbol(), OP_BUY, AdvancedMM(), Ask, 2, 0,0, NULL, MagicNumber, 0, Green);
cnt++;
}
if (longtkt>0)
{
OrderSelect(longtkt, SELECT_BY_TICKET);

OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStoppLoss,Digits),NormalizeDouble(TheT akeProfit,Digits),0,Green);
}


OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(), Slippage,Red);

return(longtkt);

}
...

bool PositionOpen()
{
t = OrdersTotal();
for(int z = 0;z < t;z++)
{
OrderSelect(z, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol()) return(true);
}
return(false);



Habe ich das Distance falsch gesetzt? Oder wortan kann es liegen?

Danke euch vielmals für die Zeit...
Mit Zitat antworten
  #2 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.572
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Na ja, ist eben immer wieder dasselbe. Bei einem unvollständigen Code wird man nie eine exakte Aussage treffen können.
Ich vermute! mal, dass es daran liegt, wiel Distance über die Anzahl Pips definiert wird und diese Pips nicht in eine tatsächliche Kursdifferenz umgerechnet wurde.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #3 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 18
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard

...sorry...
distance ist folgendermaßen definiert:

extern double Distance = 5.2; // Distance between Main / Signal

eine weitere Umrechnung o.ä. erfolgt nicht, nur eben die Definition

...danke
Mit Zitat antworten
  #4 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.572
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ja nun, dann hast Du ja den Fehler!!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #5 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 18
Ado1964 befindet sich auf einem aufstrebenden Ast
Cool

.hhmmm....

@ doc: könnte ich dir mal den gesamten Code zusenden zum Prüfen oder verbessern/modifizieren?...stehe momentan irgendwie auf dem Schlauch......wäre sehr nett.... :-) ....
Mit Zitat antworten
  #6 (permalink)  
Alt vor einer Woche
Premium Mitglied
 
Registriert seit: Sep 2015
Beiträge: 472
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Lad hoch. Gibts bestimmt schon irgendwo gratis.

Sorry, fals ichs überlesen hab, aber was soll diese Distanz-Rechnung?
Mit Zitat antworten
  #7 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 18
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard

....die Distance soll eigentlich verhindern, dass der ea auch bei kleinen Abweichungen beim Crossing eine order auslöst..oder ist das ein logischer Fehler?...sinn des ganzen ea soll wie gesagt sein, dass bei aufwärts-crossing eine buy-order ausgelöst und eine evtl. bestehende sell-order geschlossen wird und umgekehrt
Mit Zitat antworten
  #8 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.572
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ja nun mal langsam.
Probiere das hier aus:

Distance = Distance*Point;
(falls Du einen 5-DigitBroker hast und die 5,2 sollen tatsächlich reale 5,2 Pips sein, dann muss Distance = Distance*Point*10; genommen werden)

Damit solltest Du für Distance dann 0,00052 bekommen und dann sollte das auch mit
mline[2] -Distance> sline[2])
funktionieren.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #9 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 18
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard

...vielen Dank zunächst...
ich bin bisher davon ausgegangen, dass die Variablen mline und sline die jeweilige Position des Stoch zurückgeben, also einen Wert zwischen 0 und 100, so dass Distance eben den Abstand zwischen den Linien definiert, also eine Umrechnung in Pips o.ä. nmicht erforderlich ist

zB wenn M2=S2-Distance UND M2<S2 UND M2<M1
.... dann Sell-Order und schliessen einer offenen Buy-Order ( so das Ziel)


ich habe mal den Code angehängt

wäre euch für Tipps und Hinweise auf mögliche Fehler dankbar
Mit Zitat antworten
  #10 (permalink)  
Alt vor einer Woche
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 18
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard

...hier die Datei
Angehängte Dateien
Dateityp: mq4 CrossingStoch.mq4 (9,2 KB, 3x aufgerufen)
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
berechnung fehler, fehler, mql4, order, ordersend, programmierung, programmierung metatrader, programmierung mql4, send


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 22:51 Uhr.



-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 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.
-----------------------------------------------------------------------------------------------------------------------------