Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Text im EA anzeigen (http://www.expert-advisor.com/forum/showthread.php?t=3959)

Auszubildender 16.11.14 12:33

Text im EA anzeigen
 
Ein Hallo an alle zusammen.

Und schon ist wieder ein Neuling im Forum, der nicht selber weiterkommt.
Vielleicht erbarmt sich einer der schon wesentlich weiter ist als ich.

Habe mir ein Code zusammengebaut der mir in einem EA den Spread
auf 1 Kommastelle anzeigen soll.
Aber er zeigt immer eine Null oder eine endloskommastelle an.

Was ist da falsch?


Der eingegebene Code lautet:


double Spread =(Ask-Bid);
double Spread1=Spreet *MarketInfo(Symbol(),MODE_TICKSIZE);
double Spread2 = NormalizeDouble(Spreet1,2);

string CommentText5= "Spreet = " + Spread2 +" Point"; // Text der im Chart erscheinen soll
string CommentLabel5 = "Text auf dem Chart fünf"; // Erkennung
ObjectCreate(CommentLabel5, OBJ_LABEL, 0, 0, 0 );
ObjectSet(CommentLabel5, OBJPROP_CORNER, 0);
ObjectSet(CommentLabel5, OBJPROP_XDISTANCE, 150); // abstand von links
ObjectSet(CommentLabel5, OBJPROP_YDISTANCE, 120 ); // abstand von oben
ObjectSetText(CommentLabel5, CommentText5, 10, "Tahoma", Yellow ); // Schriftgröße, Art und Farbe .

Im Voraus schon mal dem Antworter vielen Dank.

Crashbulle 16.11.14 14:52

Hallo Auszubildender,

schön das du hier das Forum beglückst.

Ich verstehe deun Spread1, Spread2 und Spreed nicht.

Ich laß mir über MT4-Routinen dies über Comment anzeige:

aktueller Spread = ", MarketInfo(Symbol(), MODE_SPREAD),


Über dierse Mode_ -Funktion lassen sich noch andere schöne Sachen anzeigen !

Crashbulle

Auszubildender 16.11.14 15:46

Hoppla, mit so einer schnellen Antwort habe ich nicht gerechnet.
Danke schön an Crashbulle.

Mit nur Comment ging es nicht, da ich hier nicht die Position, Schrittgröße und Farbe wählen kann.
Kann aber sein, dass es irgendwie doch geht nur weiß ich es nicht.
Ebenfalls wusste ich nicht dass man den Spread über Marktinfo abrufen kann.
Daher versuchte ich es mit der Abfrage Ask – Bid und wollte es dann in Voller Zahl mit einer Kommastelle umwandeln.

Habe jetzt den Spread Teil gelöscht, und die erste Zeile umgearbeitet auf
string CommentText5= "Spreet = " + MarketInfo(Symbol(),MODE_SPREAD) +" Point";

Und siehe es geht.
Danke von dem Auszubildenden.

Crashbulle 16.11.14 16:01

War gerade zwischen den verschiedenen Foren an switchen und hatte es gelesen.

Auszubildender 16.11.14 18:38

Und siehe es geht.

Leider nicht ganz zu meiner Zufriedenheit.
Wenn der Broker 0.001/0.00001 die Kurse stellt. Aber mit 0.01/0.001 abrechnet
passt die Komma Stelle nicht.

Nach langen und viele Versuchen Klapte es mit der weiteren Eingaben.

double Spread = MarketInfo(Symbol(),MODE_SPREAD);

Tick_Groese = MarketInfo(Symbol(),MODE_TICKSIZE);
if (Tick_Groese == 0.00001 || Tick_Groese ==0.001 ){ Spread = Spread /10; }
if (Tick_Groese == 0.1 || Tick_Groese ==0.5 || Tick_Groese ==0.005 ){ Spread = Spread /10; }

string CommentText5= "Spreet = " + Spread +" Point";

Crashbulle 16.11.14 20:10

Vielleicht dies hier Einbauen.
Bringt 5-Digit auf 4-Digit Nivaue.
Damit läuft der EA ohne Probleme auf allen Digits.


if (MarketInfo(Symbol(), MODE_PROFITCALCMODE) == 0) {
if(Digits == 3 || Digits == 5) Multiplier = 10;
if(Digits == 6) Multiplier = 100;
if(Digits == 7) Multiplier = 1000;
}

Bloß beim einsetzen von Digitwerten (TP,usw), müssen Pips und keine Points/ Pipetten angeben werden.

pako 16.11.14 23:41

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Auszubildender (Beitrag 27998)
Und siehe es geht.

Leider nicht ganz zu meiner Zufriedenheit.
Wenn der Broker 0.001/0.00001 die Kurse stellt. Aber mit 0.01/0.001 abrechnet
passt die Komma Stelle nicht.

Nach langen und viele Versuchen Klapte es mit der weiteren Eingaben.

double Spread = MarketInfo(Symbol(),MODE_SPREAD);

Tick_Groese = MarketInfo(Symbol(),MODE_TICKSIZE);
if (Tick_Groese == 0.00001 || Tick_Groese ==0.001 ){ Spread = Spread /10; }
if (Tick_Groese == 0.1 || Tick_Groese ==0.5 || Tick_Groese ==0.005 ){ Spread = Spread /10; }

string CommentText5= "Spreet = " + Spread +" Point";

Code:

//+------------------------------------------------------------------+
//|                                                Spread_Points.mq4 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  Comment("Spread  = ",IntegerToString(MarketInfo(Symbol(),MODE_SPREAD),0,' '),"  Point  = ",DoubleToString(MarketInfo(Symbol(),MODE_POINT),Digits()));
  }
//+------------------------------------------------------------------+


Auszubildender 17.11.14 02:39

Danke schön, für Ihre Hilfe.

Bin nun wieder ein Stück weiter.

Leider leuft er nicht so wie er sollte.
Kann mir jemand bei der Fehlersuche helfen.

Auch gegen ein kleines Honorar.

traderdoc 17.11.14 09:17

Nun, was genau! läuft denn noch nicht?

Auszubildender 18.11.14 09:49

Hallo
Hier das Erste Problem von 2, das ich einfach nicht Hinbekomme.

Habe eine Funktion Eingebaut um wählen zu können: Feste Position Größe oder Berechnung nach Konto Größe.

Bei GKFX und Charles FX werden nur Oder ausgeführt wenn ich eine feste Größe habe, jedoch nicht wenn ich die Größe Berechne lasse.
Mit den gleichen EA und den Einstellungen läuft es aber Fehlerfrei bei Aktiv Traders.
Und wiederum bei Q Trader läuft die Short Seite mit beiden Einstellungen aber nur mit fester Größe auf der Long Seite.

extern double Lot_Long= 0.8;// Feste Ordergröße auf der Short Seite.
extern bool Lot_Konto_Long= true; //Short Oder Größe nach Kontostand.
extern double Max_Ver_Long =0.5; //Der Max Short Verlust je Order in %.
extern double Lot_Short= 0.8;// Feste Ordergröße auf der Short Seite.
extern bool Lot_Konto_Short = true; //Short Oder Größe nach Kontostand.
extern double Max_Ver_Short =0.5; //Der Max Short Verlust je Order in %.

//Alle Werte füt Kontogröße Berechen
double Positions_Groesse;
double Positions_Groesse_Long;
double Positions_Groesse_Short;
double Stop_Loss_Long, Stop_Loss_Short;
double MeinePositionsGroesse;
double MiniLot;
double TickWert;
double LotSchritt;
double MiniLotWertjeTick;
double MiniLotWertJePunkt;
int Kerzen_Long =0;
int Kerzen_Short =0;
double Depotwert;
double MaxVerlustinEuro;
double MaxVerlustinEuro_Long;
double MaxVerlustinEuro_Short;
double EuroJePunkt;
double H=0,L=0;
double Lots_L, Lots_S;
double Tick_Groese;



//--------------------------------------------------------------------+
// Preis je kleinste Einheit auslesen, Grunddaten für Größe berechne. |
//--------------------------------------------------------------------+


Depotwert = AccountBalance(); //Depotgröße ermitteln

if (Lot_Konto_Long == true)
{
MaxVerlustinEuro_Long = (Depotwert /100) * Max_Ver_Long ; // Max. Verlust in Euro aus der angegebenen Prozentgröße Errechnen -- Beispiel 10.000 dav 2 % = 200€
}
if (Lot_Konto_Short == true)
{
MaxVerlustinEuro_Short = (Depotwert /100) *Max_Ver_Short ;
}
Tick_Groese = MarketInfo(Symbol(),MODE_TICKSIZE); // DAX z.B. 0.5, bei JPY 0,01 EUR 0,0001
if (Tick_Groese == 0.00001 || Tick_Groese ==0.001 ){ Tick_Groese =0.1; }
if (Tick_Groese == 0.5 ){ Tick_Groese =1; } //beim DAX
if (Tick_Groese == 0.1 ){ Tick_Groese =1; }
TickWert = MarketInfo(Symbol(),MODE_TICKVALUE); // Wert eines Ticks im DAX z.B. 12,5 Euro bei einem ganzen Lot
MiniLot = MarketInfo(Symbol(),MODE_MINLOT); // kleinste handelbare Größe
LotSchritt = MarketInfo(Symbol(),MODE_LOTSTEP); // Schrittgröße der Lots -

//--------------------------------------------------------------------+
// Ordergröße Long |
//--------------------------------------------------------------------+

if ((Lot_Konto_Long == true)&& (Long_zulassen==true))
{
EuroJePunkt =MaxVerlustinEuro_Long /Stop_Loss_Long ; // maximaler ererlaubter Verlust je Punkt -- Beispiel 2,50 Euro
MiniLotWertjeTick = TickWert * MiniLot; // 12,5 * 0,01 = 0,125 -- Sind also im DAX 12,5 Cent je halber Punkt
MiniLotWertJePunkt = (1/Tick_Groese) * MiniLotWertjeTick; //Wert je Punkt bei einem Minilot im DAX 0.25 -- 25 Cent
Positions_Groesse = (EuroJePunkt /MiniLotWertJePunkt)*LotSchritt; //Positionsgröße Berechnen Beispiel: 2,50/ 0,25 = 10 * 0,01 = 0,10
Positions_Groesse_Long =Positions_Groesse;
Positions_Groesse_Long = NormalizeDouble(Positions_Groesse,2); // Auf 2 Nachkommastellen reduzieren.
Lots_L =0;
Lots_L= Positions_Groesse_Long ;
}

//--------------------------------------------------------------------+
// Ordergröße Short. |
//--------------------------------------------------------------------+

if ((Lot_Konto_Short == true)&&(Short_zulassen==true))
{
EuroJePunkt = MaxVerlustinEuro_Short /Stop_Loss_Short ; // maximaler ererlaubter Verlust je Punkt -- Beispiel 2,50 Euro
MiniLotWertjeTick = TickWert * MiniLot; // 12,5 * 0,01 = 0,125 -- Sind also im DAX 12,5 Cent je halber Punkt
MiniLotWertJePunkt = (1/Tick_Groese) * MiniLotWertjeTick; //Wert je Punkt bei einem Minilot im DAX 0.25 -- 25 Cent
Positions_Groesse = (EuroJePunkt /MiniLotWertJePunkt)*LotSchritt; //Positionsgröße Berechnen Beispiel: 2,50/ 0,25 = 10 * 0,01 = 0,10
Positions_Groesse_Short =Positions_Groesse;
Positions_Groesse_Short = NormalizeDouble(Positions_Groesse,2); // Auf 2 Nachkommastellen reduzieren.
Lots_S =0;
Lots_S= Positions_Groesse_Short ;
}


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:03 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum