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

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 18.05.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 157
piptrade befindet sich auf einem aufstrebenden Ast
Standard Rectangles = optimale, graph. Darstellg. von TradingResults

So, ...!

Nun also das neue Thema: Wie kann man TradingResults graphisch optimal darstellen ?

Anstatt der bereits erörterten Graph-Standarddarstellungen (letztes Thema) für Open, Close, TP und SL, mittels kleiner Markierungen (welche sich kaum verändern lassen), sollen nun hinzugesetzte, farblich unterschiedene Rectangles (Red/Green), eine optisch wesentlich bessere TradeAuswertung ermöglichen.
In diesem Zusammenhang sind also Rectangles zu kreieren, welche die Profit- oder LossTrades, einschl. ihres Wert-Umfanges, darstellen.

(Zur besseren Veranschaulichung - siehe Picture im Anhang)

Die ersten Überlegungen könnten dann ggf., wie folgt, aussehen:
Ermittlung 1. Koordinate: OpenOrderTime und OpenOprderPrice
2. Koordinate: OrderCloseTime und OrderClosePrice
3. Bedingung: wenn das so ist: if(...) == true ( = Green )
wenn nicht: else == false ( = Red )

Ist diese Herangehensweise soweit richtig und sinnvoll.
Wie auch in der vorherigen Beiträgen wäre ich für Eure Unterstüzung sehr dankbar.

LG. piptrade
Angehängte Grafiken
Dateityp: jpg myEA_var_C3b.jpg (96,4 KB, 16x aufgerufen)
  #2 (permalink)  
Alt 20.05.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 157
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Also: - die ersten Versuche, meinen Wunsch Wirklichkeit werden zu lassen, würden darin bestehen,
die ganze Angelegenheit erst einmal zu vereinfachen, so dass sie möglichst schnell im MT4 überprüft werden kann:
Und dies würde zu 1. bedeuten, dass vorerst nicht von einem Trade mit Open und Close usw. ausgegangen wird, sondern erst einmal nur ein Rectangle überhaupt / und dass zwischen zwei Zeitbestimmungen / erzeugt wird.
Das könnte in einem 1. Schritt dann ggf. "SO" aussehen:

// 1. Step; Deklaration der Variablen:
extern string TimeOpen = "13:55";
extern string TimeClose = "14:35";
double PriceOpen;
double PriceClose;
extern color ProfitCLR = Green;
extern color LossesCLR = Maroon;

... wird "SO" ev. ein "Schuh" daraus ?

In einem 2. Schritt sollte dann wahrscheinlich Time/string in Time/Integer umgewandelt werden ?

Sind diese ersten Ansätze soweit richtig ?

In optimistischer Stimmung und mit LG: piptrade
  #3 (permalink)  
Alt 24.05.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 157
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Da sich keiner so richtig an das Thema heranzutrauen scheint (vielleicht wird aber auch nur mehr Eigeninitiative erwartet), habe ich nunmehr versucht, die ersten Schritte alleine zu gehen:

1.Um eine sehr langwierige Kontrolle an aktuellen Trades zu umgehen, wurde vorerst alles etwas vereinfacht: als Time_1 und Time _2 wurden extern einstellbare, fixe Zeiten deklariert und Price_1 mit „Open" / Price_2 mit „Close" vorgegeben.

2. So dann: Create Rectangle - mit Time_1 und Price_1 bzw. Time_2 und Price_2 für die notwendigen Koordinaten.

3. Fast analog dann: Create Text - mit Open_Price und Close_Price.

Bis alles wunschgemäß funktionierte, war ich mehrmals der Verzweiflung nahe: - dennoch kann sich das erreichte (Zwischen-) Ergebnis erst einmal sehen lassen (siehe Picture im Angang).

Und hier der entsprechende, komplette Code:

Code:
#property indicator_chart_window

//--- parameter timezones------------------------------------------------+
extern int    NumberOfDays =   1;      
extern string TimeOpen     =  "02:52";
extern string TimeClose    =  "03:21";
extern color  LossesCLR    =  Maroon;
//extern color  ProfitCLR    =  DarkGreen;

extern bool   ShowPrice    =  True; 
extern color  clFont       =  Silver; 
extern int    SizeFont     =  9;
extern int    OffSet       =  10;

//+--- initialization TimeFunction -------------------------------------+ 
void init() {
  DeleteObjects();
  for (int i=0; i<NumberOfDays; i++) {
    CreateObjects("ST_1"+i, LossesCLR);    // "ST_1" = ShortTrade_1 
  }
  Comment("");
}
//+--- deinitialization TimeFunction -----------------------------------+
void deinit() {
  DeleteObjects();
  Comment("");
}
//+--- create object ----------------------------------------------------+
void CreateObjects(string no, color cl) {
  ObjectCreate(no, OBJ_RECTANGLE,0, 0,0, 0,0);
  ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID);
  ObjectSet(no, OBJPROP_COLOR, LossesCLR);
  ObjectSet(no, OBJPROP_BACK, True);
}
//+--- object delate ----------------------------------------------------+
void DeleteObjects() {
  for (int i=0; i<NumberOfDays; i++) {
    ObjectDelete("ST_1"+i);
  }
    ObjectDelete("ST_1up");  // NEU
    ObjectDelete("ST_1dn");  // NEU
}
//+--- interation function ----------------------------------------------+
void start() {
  datetime dt=CurTime();
  
  for (int i=0; i<NumberOfDays; i++){
    if (ShowPrice && i==0) {
      DrawPrices(dt,"ST_1",TimeOpen,TimeClose);
    }
    DrawObjects(dt, "ST_1"+i,TimeOpen,TimeClose);
    }
}
//+--- draw objects -----------------------------------------------------+
void DrawObjects(datetime dt, string no, string tb, string te) 
{
  datetime t1, t2;
  double   p1, p2;
  int      b1, b2;

  t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb);
  t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te);
  b1=iBarShift(NULL, 0, t1);
  b2=iBarShift(NULL, 0, t2);
  p1=Open[b1];
  p2=Close[b2];
  ObjectSet(no, OBJPROP_TIME1 , t1);
  ObjectSet(no, OBJPROP_PRICE1, p1);
  ObjectSet(no, OBJPROP_TIME2 , t2);
  ObjectSet(no, OBJPROP_PRICE2, p2);
}

//+--- draw prices -------------------------------------------------------+
void DrawPrices(datetime dt, string no, string tb, string te) {
  datetime t1, t2;
  double   p1, p2;
  int      b1, b2;

  t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb);
  t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te);
  b1=iBarShift(NULL, 0, t1);
  b2=iBarShift(NULL, 0, t2);
  //p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)];
  p1=Open[b1];
  //p2=Low [Lowest (NULL, 0, MODE_LOW , b1-b2, b2)];
  p2=Close[b2];
  

//+--- obere Price-Angabe
  if (ObjectFind(no+"up")<0) ObjectCreate(no+"up", OBJ_TEXT, 0, 0,0);
  ObjectSet(no+"up", OBJPROP_TIME1   , t2);
  ObjectSet(no+"up", OBJPROP_PRICE1  , p1+OffSet*Point);
  ObjectSet(no+"up", OBJPROP_COLOR   , clFont);
  ObjectSet(no+"up", OBJPROP_FONTSIZE, SizeFont);
  ObjectSetText(no+"up", DoubleToStr(p1, Digits));// p1"+Ask-Bid" entnommen / jetzt Price-Angaben = ok.

//+--- untere Price-Angabe
  if (ObjectFind(no+"dn")<0) ObjectCreate(no+"dn", OBJ_TEXT, 0, 0,0);
  ObjectSet(no+"dn", OBJPROP_TIME1   , t2);
  ObjectSet(no+"dn", OBJPROP_PRICE1  , p2);
  ObjectSet(no+"dn", OBJPROP_COLOR   , clFont);
  ObjectSet(no+"dn", OBJPROP_FONTSIZE, SizeFont);
  ObjectSetText(no+"dn", DoubleToStr(p2, Digits));
}
//+----------------------------------------------------------------------+

Kann der o.a. Code einfacher, ggf. ev. auch eleganter, programmiert werden? Ist diese Programmierung überhaupt sinnvoll, wenn der vollendete Indikator nach Long- oder ShortOrder unterscheiden und dementsprechend nur noch eine Ziffer (Loss oder Profit) darstellen soll?

And but last not least: Wo muß ich jetzt für die Unterscheidung Long-/ShortOrder ansetzten und wie realisiere ich die Loss-/Profit Darstellung am besten?

Ohne Eure Unterstützung komme ich hier wahrscheinlich nicht weiter, so dass ich mich riesig über eine helfende Hand freuen würde. Hierfür schon `mal ein kleines Dankeschön.

LG: piptrade
Angehängte Grafiken
Dateityp: jpg TradeIndicator.jpg (156,9 KB, 12x aufgerufen)
  #4 (permalink)  
Alt 25.05.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 157
piptrade befindet sich auf einem aufstrebenden Ast
Standard

... und wieder ein wichtiger Schritt in Richtung "Erfolg":

Profit- und LossTrades werden in unterschiedlichen Farben angezeigt (siehe Picture im Anhang) !

Und das alles mit minimalstem Aufwand:
Code:
extern bool  LongOrder   =  true;
extern bool  ShortOrder  =  false;

if((LongOrder   &&  Close[1] >= Open[2])  || (ShortOrder  &&  Close[1] < Open[2])) 
   { 
        cl=ProfitCLR; // Green
   }
   else cl=LossesCLR; // Maroon
Anstatt der 2 Price-Angaben darf jetzt nur noch eine Wertangabe erfolgen, entweder die für Loss oder die für Profit. Das wäre die nächste Herausforderung, bei der ich für etwas Unterstützung sehr dankbar wäre.

LG. piptrade
Angehängte Grafiken
Dateityp: jpg TradeIndi_CLR.jpg (163,9 KB, 8x aufgerufen)
  #5 (permalink)  
Alt 26.05.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 157
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Wie bekomme ich das nur hin? - nur eine einzige Price_Differenz für Losses bzw. Profit ?
Pleace help, pleace, pleace help !

LG. piptrade
  #6 (permalink)  
Alt 26.05.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 157
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Wenn Dir keiner hllft, so hilf Dir selbst, in dem das Ziel den Weg beschreibt!

Unter diesem Motto konnte ich den kleinen Indikator nunmehr fertigstellen (siehe Picture im Anhang).
Den Code ein wenig "aufräumen", ggf. von "Ballast" befreien, Variablen von "Simulieren" auf "Live" ändern und dann die ersten Tests an realen Trades - werden die abschließenden Schritte sein.

Anbei bedanke ich mich für das rege Interesse an diesem Beitrag, wünsche der TraderGemeinde allzeit TopPips und verbleibe bis zum nächsten Thema mit

LG. piptrade

Fakt ist und bleibt, ich hab` ne Menge dazu gelernt und damit letztendlich selbst von diesem Beitrag profitiert.
Angehängte Grafiken
Dateityp: jpg TradeIndic_OK_var_01.jpg (196,8 KB, 7x aufgerufen)
Thema geschlossen

Lesezeichen

Stichworte
grafik, grafische darstellung, mql4, programmierung, programmierung metatrader, rectangle, rectangles

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 06:08 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.
-----------------------------------------------------------------------------------------------------------------------------