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: 43827
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 16.12.19
Uli Uli ist offline
Neues Mitglied
 
Registriert seit: Dec 2019
Beiträge: 4
Uli befindet sich auf einem aufstrebenden Ast
Standard EA Programmierung (Rectangle)

Hallo zusammen!

Ich brauche mal dringend Hilfe.
Kann mir vieleicht jemand zeigen wie man mit einem EA ein
Rechteck auf den MT4 bringt welches über x,y frei bewegt werden
kann. Desweiteren sollte das Rechteck mit Text beschreibbar sein.

Und noch eine Frage.
Kann man die Reiter auf der Chartleiste mit einem EA ansteuern?
Ist das überhaupt möglich?


MfG Uli
  #2 (permalink)  
Alt 16.12.19
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Schreibst Du genauso wie in einem Indikator;
setze die Eigenschaft OBJPROP_SELECTABLE,true
dann kannst das Rechteck anwählen und verschieben;
Textbeschreibung geht mit OBJPROP_TEXT,"Beschriftung"
oder als PopUp mit OBJPROP_TOOLTIP,"Beschriftung\nZweiteZeile"

Ich hoffe, das ist was Du brauchst. AVT
(im Editor: Hilfe-Referenz-Index-'OBJ_RECTANGLE')
  #3 (permalink)  
Alt 17.12.19
Uli Uli ist offline
Neues Mitglied
 
Registriert seit: Dec 2019
Beiträge: 4
Uli befindet sich auf einem aufstrebenden Ast
Standard EA Programmierung (Rectangle)

Hallo AVT!

Vielen Dank für Deine Hilfe.
Ich habe aber einen anderen Weg gefunden und
konnte nun das Rechteck auf den MT4 legen.
So weit so gut.
Aber ich hätte noch ein Paar Fragen.

1. Wie bekomme ich ein Kommentar-String in
dieses Rechteck?

2.Kann man die "Reiter" unten auf der Chartleiste
mit einem EA ansteuern? (Via Button)

Zum besseren Verständnis habe ich meinen EA hier mal gepostet.

// Programm: Mein EA
#property strict
//CrossOver--1.Teil--Anfang
int Ticket;
input int SmallEMA = 20;
input int BigEMA = 50;
input double VolumenSell = 8;
input double VolumenBuy = 8;
input int AbstandSell = 10;
input int AbstandBuy = 10;

//CrossOver--1.Teil--Ende
int OnInit()
{
//Rechteck--1.Teil--Anfang
int b = 1118;
CreateRectangle("rectangle1",NULL,b,5,240,270,Yell ow,MediumBlue,White,12);
//Rechteck--1.Teil--Ende

//Button--1.Teil--Anfang
int x = 470;
CreateButton("button1","Buy",x,5,150,30,Yellow,Gre en,White,11);
CreateButton("button2",Symbol(),x,5,150,30,Yellow, Maroon,White,11);
CreateButton("button3","Sell",x,5,150,30,Yellow,Re d,White,11);

return(INIT_SUCCEEDED);
}

void CreateButton(string btnName,
string btnText,
int &x,
int y,
int w,
int h,
color clrText,
color clrBg,
color clrBorder,
int fontSize)
{
ObjectCreate(0,btnName,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,btnName,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,btnName,OBJPROP_YDISTANCE,y);
ObjectSetInteger(0,btnName,OBJPROP_XSIZE,w);
ObjectSetInteger(0,btnName,OBJPROP_YSIZE,h);
ObjectSetString(0,btnName,OBJPROP_TEXT,btnText);
ObjectSetInteger(0,btnName,OBJPROP_COLOR,clrText);
ObjectSetInteger(0,btnName,OBJPROP_BGCOLOR,clrBg);
ObjectSetInteger(0,btnName,OBJPROP_BORDER_COLOR,cl rBorder);
ObjectSetInteger(0,btnName,OBJPROP_BORDER_TYPE,BOR DER_FLAT);
ObjectSetInteger(0,btnName,OBJPROP_HIDDEN,true);
ObjectSetInteger(0,btnName,OBJPROP_STATE,false);
ObjectSetInteger(0,btnName,OBJPROP_FONTSIZE,fontSi ze);
x=x+w+10;
}

void DeleteButtons()
{
for(int i=ObjectsTotal()-1; i>-1; i--)
{
if(StringFind(ObjectName(i),"button")>=0) ObjectDelete(ObjectName(i));
}
}
//Button--1.Teil--Ende

//Rechteck--2.Teil--Anfang
void CreateRectangle(string recName,
string recText,
int &b,
int y,
int w,
int h,
color clrText,
color clrBg,
color clrBorder,
int fontSize)
{
ObjectCreate(0,recName,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,recName,OBJPROP_XDISTANCE,b);
ObjectSetInteger(0,recName,OBJPROP_YDISTANCE,y);
ObjectSetInteger(0,recName,OBJPROP_XSIZE,w);
ObjectSetInteger(0,recName,OBJPROP_YSIZE,h);
ObjectSetString(0,recName,OBJPROP_TEXT,recText);
ObjectSetInteger(0,recName,OBJPROP_COLOR,clrText);
ObjectSetInteger(0,recName,OBJPROP_BGCOLOR,clrBg);
ObjectSetInteger(0,recName,OBJPROP_BORDER_COLOR,cl rBorder);
ObjectSetInteger(0,recName,OBJPROP_BORDER_TYPE,BOR DER_FLAT);
ObjectSetInteger(0,recName,OBJPROP_HIDDEN,true);
ObjectSetInteger(0,recName,OBJPROP_STATE,false);
ObjectSetInteger(0,recName,OBJPROP_FONTSIZE,fontSi ze);
ObjectSetInteger(0,recName,OBJPROP_SELECTABLE,true );
b=b+w+10;
}

void DeleteRectangle1()
{
for(int i=ObjectsTotal()-1; i>-1; i--)
{
if(StringFind(ObjectName(i),"rectangle1")>=0) ObjectDelete(ObjectName(i));
}
}
//Rechteck--2.Teil--Ende

void OnDeinit(const int reason)
{
DeleteButtons(); //zu Button
DeleteRectangle1(); //zu Rechteck
}

void OnTick()
{
//Rechteck--3.Teil--Anfang
Comment(_Symbol
+"\n\nKonto in "+AccountCurrency()
+"\n\nUhrzeit: "+TimeToStr (TimeLocal(),TIME_DATE|TIME_MINUTES) //(Time[1])
+"\n\nBroker: "+AccountCompany()
+"\n\nHebel: "+AccountLeverage()
+"\n\nKontostand: "+DoubleToStr(AccountBalance(),2)
+"\n\nMargin: "+DoubleToStr(AccountMargin(),2)
+"\n\nMargin-Level in %: "+DoubleToStr(AccountEquity()/AccountMargin()*100,2)
+"\n\nG/V: "+DoubleToStr(AccountProfit(),2)
);
//Rechteck--3.Teil--Ende

//CrossOver--2.Teil--Anfang
string signal = "";

double SmallMovingAverage1 = iMA ( _Symbol,_Period,SmallEMA,0,MODE_EMA,PRICE_CLOSE,1) ;

double BigMovingAverage1 = iMA ( _Symbol,_Period,BigEMA,0,MODE_EMA,PRICE_CLOSE,1);

double SmallMovingAverage2 = iMA ( _Symbol,_Period,SmallEMA,0,MODE_EMA,PRICE_CLOSE,2) ;

double BigMovingAverage2 = iMA ( _Symbol,_Period,BigEMA,0,MODE_EMA,PRICE_CLOSE,2);

if (BigMovingAverage1 > SmallMovingAverage1)

if (BigMovingAverage2 < SmallMovingAverage2)

{
signal = "Verkaufen";
}

if (BigMovingAverage1 < SmallMovingAverage1)

if (BigMovingAverage2 > SmallMovingAverage2)

{
signal = "Kaufen";
}

if (signal == "Kaufen" && OrdersTotal() == 0)
{
Ticket = OrderSend (_Symbol,OP_BUY,VolumenBuy,Ask,3,0,Ask+AbstandBuy* _Point,NULL,0,0,Green);
}

if (signal == "Verkaufen" && OrdersTotal() == 0)
{
Ticket = OrderSend (_Symbol,OP_SELL,VolumenSell,Bid,3,0,Bid-AbstandSell*_Point,NULL,0,0,Red);
}

//CrossOver--2.Teil--Ende
}
//Button--2.Teil--Anfang
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(sparam=="button1")
{
Action_Button1();
ObjectSetInteger(0,"button1",OBJPROP_STATE,false);
}
else if(sparam=="button2")
{
Action_Button2();
ObjectSetInteger(0,"button2",OBJPROP_STATE,false);
}
else if(sparam=="button3")
{
Action_Button3();
ObjectSetInteger(0,"button3",OBJPROP_STATE,false);
}
}

void Action_Button1()
{
PlaySound("ok.wav");
}

void Action_Button2()
{
PlaySound("alert.wav");
}

void Action_Button3()
{
PlaySound("news.wav");
//Button--2.Teil--Ende
}

Wenn du den EA ausprobierst ...
...die Daten oben links sind ein Kommentar-String und die hätte
ich gerne oben rechts im Rechteck.

Ich habe ein Paar Button installiert mit womit ich die "Reiter" auf der
Chartleiste ansprechen möchte.
Vieleicht hast du eine Idee.

So, erstmal bis hier her.


MfG Uli
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 19:02 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.
-----------------------------------------------------------------------------------------------------------------------------