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: 43323
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Stunden
- Thomas75
vor 17 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 19.05.20
Neues Mitglied
 
Registriert seit: May 2020
Beiträge: 18
berndao befindet sich auf einem aufstrebenden Ast
Standard

Ich will ja auch gar nichts gesagt haben :-)

Ich glaube, so langsam kriege ich den Dreh raus.
Habe mir mal einen EA gebaut, der guckt ob für 5 hintereinanderfolgende Balken sich der Abstand von oberer Linie zu Mittellinie koninuierlich verringert :-)

Sowie eine Funktion, die mir bei jedem balken anzeigt wie sich prozentual der Abstand verändert hat :-)


Code:
//+------------------------------------------------------------------+
//|                                                        Test3.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

datetime LastActiontime;


bool BBcontract(){
   for(int i=1;i<=5;i++){
      double Band_Highcur = iBands(NULL,0,20,2.0,0,PRICE_CLOSE,MODE_UPPER,i);
      double Band_Modecur = iBands(NULL,0,20,2.0,0,PRICE_CLOSE,MODE_MAIN,i);
      double Band_Highprev = iBands(NULL,0,20,2.0,0,PRICE_CLOSE,MODE_UPPER,i+1);
      double Band_Modeprev = iBands(NULL,0,20,2.0,0,PRICE_CLOSE,MODE_MAIN,i+1);
   
     if((Band_Highprev-Band_Modeprev)*0.98<(Band_Highcur-Band_Modecur)){
       return false;
     }
  }
  return true; 
}


double BBContpercent(){

      double Band_Highcur = iBands(NULL,0,20,2.0,0,PRICE_CLOSE,MODE_UPPER,1);
      double Band_Modecur = iBands(NULL,0,20,2.0,0,PRICE_CLOSE,MODE_MAIN,1);
      double Band_Highprev = iBands(NULL,0,20,2.0,0,PRICE_CLOSE,MODE_UPPER,2);
      double Band_Modeprev = iBands(NULL,0,20,2.0,0,PRICE_CLOSE,MODE_MAIN,2);
   
      return ((Band_Highcur-Band_Modecur) /(Band_Highprev-Band_Modeprev)); 
}


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
  Print("Start Time is= ",TimeCurrent());
  LastActiontime=Time[1];
  //Print("die Zahl ",1.23456789," gerundet auf die ",_Digits,"te Nachkommastelle ergibt ", roundD(1.23456789));
  Print("");
  //Print( DoubleToString(Wert, _Digits) );
   
//---
   return(INIT_SUCCEEDED);
  }
  
  
  
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick() {
  if(LastActiontime==Time[1]){
    return;
  }
  else
  {
     LastActiontime=Time[1];
  }
   
  //Print("Last Bar Time is= ",Time[1], "and last Close Price is= ",DoubleToString(Close[1],_Digits));
  Print("At the previous Bar, are the Bollinger Bands contracting? ", BBcontract() );
  Print("by how much compared to the previous bar? ", DoubleToString(BBContpercent(),2));
  Print("");
  
//+------------------------------------------------------------------+
}





//Round a double number down to the last visible digit
double roundD(double number){
  double n=number*MathPow(10,_Digits);
  int b=MathRound(n);
  double c=b;
  double result=c/MathPow(10,_Digits);
  return result;

}
  #12 (permalink)  
Alt 20.05.20
Neues Mitglied
 
Registriert seit: May 2020
Beiträge: 18
berndao befindet sich auf einem aufstrebenden Ast
Standard

Eine Frage habe ich doch noch:
Je nahcdem, werde ich eventuell mehrere EAs auf dem selben Chart arbeiten lassen.

In jedem Fall wird es aber wohl so kommen dass mehrere EAs Orders öffnen und schließen.

Natürlich sollen sich die EAs nicht gegenseitig in die Quere kommen.

Daher wäre es praktisch wenn ich in einer zeile den EA einen Trade machen lasse und mir im nächsten befehl direkt die ID oder was auch immer des Trades espeichere (Hauptsache was, was den trade eindeutig identifizierbar macht)
Sodass ich später anhand der ID oder Ähnlichem den trade direkt wieder schließen kann.
Je nach Lust und Laune bastel ich mir vielleicht auch irgendwann ein Array (wer weiß ob der EA nicht irgendwann mehrere Trades gleichzeitig laufen hat) in der die IDs aller von diesem EA eröffneten Trades gespeichert sind oder so.

So oder so will ich mir , direkt nachdem vom EA ein Trade gemacht wurde, diesen irgendwie speichern für später.

Gibts da eine gute Variante?

Habe gelesen dass man sich eine Lsite aller offenen Trades besorgen kann.
Durch die ich mich dann durcharbeiten mpüsste und mit opentimes oder so abgleichen mpsste, welcher der richtige sein könnte.

Kann ich nicht irgendwie direkt den Trade abfangen und abspeichern?
  #13 (permalink)  
Alt 20.05.20
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Das machst du mit OrderSelect() OrderSymbol() und der Magic Number der Order.
  #14 (permalink)  
Alt 20.05.20
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Beim öffnen des Trades gibt dir die OrdnerSend () Funktion als Rückgabewert die Ticketnummer der Ordner zurück. Danach kannst du ebenfalls suchen um die Order zu managen
  #15 (permalink)  
Alt 23.05.20
Neues Mitglied
 
Registriert seit: May 2020
Beiträge: 18
berndao befindet sich auf einem aufstrebenden Ast
Standard

Ich habe gerade ein kleines Verständnisproblem (hat nicht mal was direkt mit der Programmierung zu tun):
neben anderen Sachen kann ich ja den aktuellen Ask und Bid Preis rausfinden.

Der Chart, der gezeichnet wird, hat ja auch einen eigenen Preis, der sich dauernd ändert (und dessen maximum in einer periode den high wert, tief punkt den low wert, etc. ergibt)

wenn ich nun eine order öffne, benutze ich ja bei einem buy order den ask price und bei einer sell order den bid preis.

aber wenn ich nun einen dieser trades laufen hab und diesen schließen will, welchn preis benutze ich da? sprich: zu welchem reis schließe ich letztlich einen trade? oder ist das nur das "gegenstück" zum eröffnungspreis?
(also beio buy order ask zum öffnen, bid zum schließen. und bei sell order umgekehrt)

hintergrund ist dass ich mir einen trailing stoploss basteln will, der den stoploss jeden tick , falls erforderlich, nahczieht.

zwangsläufig komme ich zu der bedingung
OrderStopLoss()<aktuellerPreis-stoplosswert*point

diesen aktuellen preis, welcher Wert ist das dann nochmal?
  #16 (permalink)  
Alt 23.05.20
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 berndao Beitrag anzeigen
hintergrund ist dass ich mir einen trailing stoploss basteln will, der den stoploss jeden tick , falls erforderlich, nahczieht.

zwangsläufig komme ich zu der bedingung
OrderStopLoss()<aktuellerPreis-stoplosswert*point

diesen aktuellen preis, welcher Wert ist das dann nochmal?
Beim SL mußt Du drauf achten, daß der "Gegenwert" den SL nicht trifft:
Kaufe zum Ask, dann achte drauf, daß Bid nicht den SL trifft.
Verkaufen zum Bid, dann achte drauf, daß Ask den SL nicht trifft.
Klar soweit? AVT
  #17 (permalink)  
Alt 23.05.20
Neues Mitglied
 
Registriert seit: May 2020
Beiträge: 18
berndao befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AVT Beitrag anzeigen
Beim SL mußt Du drauf achten, daß der "Gegenwert" den SL nicht trifft:
Kaufe zum Ask, dann achte drauf, daß Bid nicht den SL trifft.
Verkaufen zum Bid, dann achte drauf, daß Ask den SL nicht trifft.
Klar soweit? AVT
Das heißt, wenn ich bspw eine buy order habe, dann öffne ich diese zum jeweiligen ask price und schließe sie zum bid preis?
Okay, das macht dann sinn :-)
  #18 (permalink)  
Alt 24.05.20
Neues Mitglied
 
Registriert seit: May 2020
Beiträge: 18
berndao befindet sich auf einem aufstrebenden Ast
Standard

Okay, ich frage mich gerade:
schwankt der spread (=ask-bid preis) eigentlich im Laufe der Zeit?

Weil ich überlege gerade schwer wie ich das beim Stoploss ansetze.
Meines Wissens nach ist der CHartpreis ja üblicherweise der bid preis.

sollte ich den Stoploss am bid oder ask preis besser orientieren?

ich meine, wenn sich im laufe der Zeit der spread ändern könnte, insbesondere größeren werden könnte, dann wäre ich ja bei bspw. stoploss 20 pips unter ask preis in Gefahr dass vielleicht der spread zu groß wird und ich rein dadurch ausgestoppt werden würde.

Wobei ich gerade eins nicht checke bzw. vermute:
Wonach richten sich eigentlich Stoploss und take profit, nahc welchem preis?
bspw. bei einem buy trade wäre es irgendwie nur logisch, beides nach dem bid preis zu orientieren.
geht der bid preis unter den stoploss, wird die order geschlossen.
ebenso wird geschlossen wenn der bid preis den takeprofit wert übersteigt.

Das würde dann weiter heißen das nach dem öffnen des trades eignetlich der ask price unwichtig geworden ist und, egal ob takeprofit oder stoploss, sich alles nur noch danach richtig wo der bid preis gerade ist?

das heißt, eigentlich müsste ich mich bei meinen überlegungen zur formel für takeprofit und stoploss gar nicht wirklich mit spreead befassen.

im endergebnis würde es so oder so nur bedeuten dass der endprofit (egal ob positiv oder negativ) eben noch um die 4 pips spread verringert ist.



demnach brauche ich mich eigentlich, solange ich nciht unbedingt zu einem bestimmten kurs einkaufen will, mich nicht näher mit ask preis zu beschäftigen.

ich muss das Ganze mal schwer durchdenken...

Edit:
Sehe ich folgendes recht:
wenn ich bei einem Buy Trade einfahc mal gucken will, welchen Endgewinn ich gemacht habe, bestimme ich das dann letztlich über
-bidnow-spread+bidlater=(bidlater-bidnow)-spread?
wobei bidnow eben der bid preis zum eröffnungszeitpunkt ist, bidlater beim schließungszeitpunkt und spread eben der spread?

sprich endgewinn= die bidpreisdifferenz abzüglich dem spread (vorausgesetzt, der verändert sich nicht im laufe der zeit)?
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 15:31 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.
-----------------------------------------------------------------------------------------------------------------------------