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: 4972
Beiträge: 43246
Benutzer: 7.216
Aktive Benutzer: 84
Links: 84
Wir begrüßen unseren neuesten Benutzer: bb1107
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Tagen
- bb1107
vor einer Woche
- rg-trader
vor 2 Wochen
- toshistyle
vor 2 Wochen
- Robin
vor 3 Wochen
- mMmaanu

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 09.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
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...
  #2 (permalink)  
Alt 09.01.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
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.
  #3 (permalink)  
Alt 09.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
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
  #4 (permalink)  
Alt 09.01.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
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.
  #5 (permalink)  
Alt 09.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
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.... :-) ....
  #6 (permalink)  
Alt 09.01.17
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
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?
  #7 (permalink)  
Alt 09.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
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
  #8 (permalink)  
Alt 09.01.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
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.
  #9 (permalink)  
Alt 10.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
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
  #10 (permalink)  
Alt 10.01.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard

...hier die Datei
Angehängte Dateien
Dateityp: mq4 CrossingStoch.mq4 (9,2 KB, 5x aufgerufen)
Thema geschlossen

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 05:55 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.
-----------------------------------------------------------------------------------------------------------------------------