Bitte füge den Code mittels des SRC Buttons (direkt hier im Editor Fenster) ein.
Ansonsten wird Dir alleine wegen der miesen Lesbarkeit niemand helfen können/wollen.
Okay hab ich geändert siehe oben :).
Hmmm Carl danke dafür aber ich probier bzw. suche jetzt schon so lange das ich nur noch verzweifel. :(
Warum willst Du den denn im OnInit() einbauen und nicht -wie bereits angefangen- in OnEvent() - das Ziel ist, dass Du im laufenden Betrieb an- und ausschalten kannst, richtig?
genau. den EA unten hab ich mir nur über so eine Seite zam gebastelt und ein paar änderungen (Nach meinem unprofessionelen Verständniss fürs programmieren) .
An der Vorlage habe ich noch nichts geändert. hier müsste halt mein EA irgendwie rein. oder Halt anders rum.
Aber wie Du schon sagtest ist das ziel ihn im laufendem Betrieb EIN bzw. Auszuschalten ohne über F7 zu gehen.
genau. den EA unten hab ich mir nur über so eine Seite zam gebastelt und ein paar änderungen (Nach meinem unprofessionelen Verständniss fürs programmieren) .
An der Vorlage habe ich noch nichts geändert. hier müsste halt mein EA irgendwie rein. oder Halt anders rum.
Aber wie Du schon sagtest ist das ziel ihn im laufendem Betrieb EIN bzw. Auszuschalten ohne über F7 zu gehen.
Bau es doch direkt in den EA ein:
Sobald das funktioniert mit der booleschen Abfrage, solltest Du noch am Farbwechsel des Buttons oder einem ausgegebenen String arbeiten, damit Du weißt, ob der EA gerade "scharf" ist oder nicht.
Wenn Du das so realisierst, bleibt natürlich der EA selbst auf Autotrading, also Smiley :-) in der Ecke.
bool Create_DeActivateButton(const long chart_ID=0, // chart's ID const string name="Button_DeActivate", // button name const int x=0, // X coordinate const int y=20, // Y coordinate const int width=60, // button width const int height=20, // button height const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring const string text="DeActivate", // text const string font="Courier New", // font const int font_size=10, // font size const color clr=clrBlack, // text color const color back_clr=clrGray, // background color const bool back=false // in the background ) { //--- reset the error value (optional for deactivation) ResetLastError(); //--- create the button ObjectCreate(chart_ID,name,OBJ_BUTTON,0,0,0); ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); ObjectSetString(chart_ID,name,OBJPROP_FONT,font); ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- successful execution return(true); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- if(id==CHARTEVENT_OBJECT_CLICK) { if(sparam=="Button_DeActivate") { //DeActivate() or EAWorking = false; //ObjectSetInteger(0,"Button_DeActivate",OBJPROP_STATE,false); } } }
naja und das versuche ich ja die ganze zeit. aber ich weiß halt nicht wo ich was rein machen soll :(. hab schon so viel probiert aber ich komm einfach nicht weiter.
Also mein letzter stand ist der hier.
Der button ist zwar da aber der EA läuft halt immer als wäre der Button Inaktiv.
//+------------------------------------------------------------------+ //| This MQL is generated by Expert Advisor Builder | //| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ | //| | //| In no event will author be liable for any damages whatsoever. | //| Use at your own risk. | //| | //+------------------- DO NOT REMOVE THIS HEADER --------------------+ #define SIGNAL_NONE 0 #define SIGNAL_BUY 1 #define SIGNAL_SELL 2 #define SIGNAL_CLOSEBUY 3 #define SIGNAL_CLOSESELL 4 #property copyright "Expert Advisor Builder" #property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/" extern int MagicNumber = 0; extern bool SignalMail = False; extern bool EachTickMode = False; extern double Lots = 1.0; extern int Slippage = 3; extern bool UseStopLoss = True; extern int StopLoss = 70; extern bool UseTakeProfit = True; extern int TakeProfit = 50; extern bool UseTrailingStop = False; extern int TrailingStop = 10; extern int PIP = 10; extern int Alarmpip = 100; extern int OFFSET = 10; int BarCount; int Current; bool TickCheck = False; bool TRADE = False; bool SELL; bool NEWSELL, NEWBUY; bool SendNotification; bool EAWorking = False; string button1ID="Button1"; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int OnInit() { BarCount = Bars; CreateButton(button1ID, "Start",200, 16); if (EachTickMode) Current = 0; else Current = 1; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectDelete(0,button1ID); return(0); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- Check the event by pressing a mouse button if(id==CHARTEVENT_OBJECT_CLICK) { string clickedChartObject=sparam; if(clickedChartObject==button1ID) { bool selected=ObjectGetInteger(0,button1ID,OBJPROP_STATE); if(selected) { if (ObjectGetString(0,button1ID,OBJPROP_TEXT) == "Start") { EAWorking = true; //??? Start von EA= Experts/HD-Turbo.mq4 ObjectSetString(0,button1ID,OBJPROP_TEXT,"Stop"); ObjectSetInteger(0,button1ID,OBJPROP_STATE,0); } else { EAWorking = false; //??? Stop von EA= Experts/HD-Turbo.mq4 ObjectSetString(0,button1ID,OBJPROP_TEXT,"Start"); ObjectSetInteger(0,button1ID,OBJPROP_STATE,0); } } } ChartRedraw(); } } void CreateButton(string name, string text, int x, int y) { ObjectCreate(0,name,OBJ_BUTTON,0,100,100); ObjectSetInteger(0,name,OBJPROP_COLOR,clrWhite); ObjectSetInteger(0,button1ID,OBJPROP_BGCOLOR,clrGreen); //ObjectSetInteger(0,button2ID,OBJPROP_BGCOLOR,clrRed); ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); ObjectSetInteger(0,name,OBJPROP_XSIZE,50);//200); ObjectSetInteger(0,name,OBJPROP_YSIZE,25);//50); ObjectSetString(0,name,OBJPROP_FONT,"Arial"); ObjectSetString(0,name,OBJPROP_TEXT,text); ObjectSetInteger(0,name,OBJPROP_FONTSIZE,10); ObjectSetInteger(0,name,OBJPROP_SELECTABLE,0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int Order = SIGNAL_NONE; int Total, Ticket; double StopLossLevel, TakeProfitLevel; if (!EAWorking) return; if (EachTickMode && Bars != BarCount) TickCheck = False; Total = OrdersTotal(); Order = SIGNAL_NONE; //+------------------------------------------------------------------+ //| Variable Begin | //+------------------------------------------------------------------+ double Buy1_1 = iMA(NULL, 0, 20, 0, MODE_LWMA, PRICE_CLOSE, Current + 0); double Buy1_2 = iSAR(NULL, 0, 0.03, 0.089, Current + 0); double Sell1_1 = iMA(NULL, 0, 20, 0, MODE_LWMA, PRICE_CLOSE, Current + 0); double Sell1_2 = iSAR(NULL, 0, 0.03, 0.089, Current + 0); double CloseBuy1_1 = iBands(NULL, 0, 11, 2, 0, PRICE_TYPICAL, MODE_UPPER, Current + 0); double CloseBuy1_2 = iClose(NULL, 0, Current + 0); double CloseSell1_1 = iSAR(NULL, 0, 0.03, 0.089, Current + 0); double CloseSell1_2 = iClose(NULL, 0, Current + 0); //+------------------------------------------------------------------+ //| Variable End | //+------------------------------------------------------------------+ //Check position bool IsTrade = False; for (int i = 0; i < Total; i ++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { IsTrade = True; if(OrderType() == OP_BUY) { //Close //+------------------------------------------------------------------+ //| Signal Begin(Exit Buy) | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Signal End(Exit Buy) | //+------------------------------------------------------------------+ if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (!EachTickMode) BarCount = Bars; IsTrade = False; continue; } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if(Bid - OrderOpenPrice() > Point * TrailingStop) { if(OrderStopLoss() < Bid - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); if (!EachTickMode) BarCount = Bars; if(Ticket > 0) { if((Bid - OrderOpenPrice() > Point * Alarmpip) || (Bid + OrderOpenPrice() > Point * Alarmpip)) if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { SendNotification ("PIPALARM : "); continue; }} } } } } else { //Close //+------------------------------------------------------------------+ //| Signal Begin(Exit Sell) | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Signal End(Exit Sell) | //+------------------------------------------------------------------+ if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell"); if (!EachTickMode) BarCount = Bars; IsTrade = False; continue; } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange); if (!EachTickMode) BarCount = Bars; continue; } } } } } } //+------------------------------------------------------------------+ //| Signal Begin(Entry) | //+------------------------------------------------------------------+ // if (( Open[1] - Close[1] < Point * PIP) && ( Open[1] - Close[1] > 0) && Open[2] < Close[2] ) Order = SIGNAL_BUY; if (( Open[2] < Close[2] ) && ( Open[1] > Close[1] ) ) Order = SIGNAL_BUY; if (( Open[2] > Close[2] ) && ( Open[1] > Close[1] ) ) NEWBUY = False; else NEWBUY = true; // if (( Close[1] - Open[1] < Point * PIP) && (Close[1] - Open[1] > 0) && Open[2] > Close[2] ) Order = SIGNAL_SELL; if (( Open[2] > Close[2] ) && ( Open[1] < Close[1] ) ) Order = SIGNAL_SELL; if (( Open[2] < Close[2] ) && ( Open[1] < Close[1] ) ) NEWSELL = False; else NEWSELL = true; // if (Sell1_1 < Sell1_2) Order = SIGNAL_SELL; //+------------------------------------------------------------------+ //| Signal End | //+------------------------------------------------------------------+ if (IsTrade && SIGNAL_SELL ) { // Open[2] > Close[2] ) && ( Open[1] < Close[1] || !IsTrade { OrderSelect( SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol()) // check for symbol { if ((OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP) && OP_SELLSTOP) //check for buy stops/limits { OrderDelete(OrderTicket()); }}}} if (IsTrade && SIGNAL_BUY ) { //( Open[2] < Close[2] ) && ( Open[1] > Close[1] ) { OrderSelect( SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol()) // check for symbol { if ((OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)&& OP_BUYSTOP) //check for sell stops/limits { //if (OrderOpenPrice() <= Bid-StopLoss*Point) { OrderDelete(OrderTicket()); } }}}} //Buy if (Order == SIGNAL_BUY && NEWBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { if(!IsTrade) { //Check free margin if (AccountFreeMargin() < (1000 * Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point + OFFSET * Point; else StopLossLevel = 0.0; if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point + OFFSET * Point; else TakeProfitLevel = 0.0; Ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, Ask + (Open[1] - Close[1]) + OFFSET * Point , Slippage, StopLossLevel + (Open[1] - Close[1]), TakeProfitLevel + (Open[1] - Close[1]) , "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue); if(Ticket > 0) { if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print("BUY order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy"); } else { Print("Error opening BUY order : ", GetLastError()); } } if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; return(0); } } //Sell if (Order == SIGNAL_SELL && NEWSELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { if(!IsTrade) { //Check free margin if (AccountFreeMargin() < (1000 * Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point - OFFSET * Point; else StopLossLevel = 0.0; if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point - OFFSET * Point; else TakeProfitLevel = 0.0; Ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, Bid - (Close[1] - Open[1]) - OFFSET * Point, Slippage, StopLossLevel - (Close[1] - Open[1]), TakeProfitLevel - (Close[1] - Open[1]), "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink); if(Ticket > 0) { if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print("SELL order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell"); } else { Print("Error opening SELL order : ", GetLastError()); } } if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; return(0); } } if (!EachTickMode) BarCount = Bars; return(0); } //+------------------------------------------------------------------+
Also ich les mir jetzt nicht den ganzen Code durch,
aber wozu denn das SELECTED in der OnChartEvent() ???
Machs doch einfach so:
if(id==CHARTEVENT_OBJECT_CLICK) { if(sparam==button1ID) { EAWorking=!EAWorking; if (EAWorking) ObjectSetString(0,button1ID,OBJPROP_TEXT,"Stop"); else ObjectSetString(0,button1ID,OBJPROP_TEXT,"Start"); ObjectSetInteger(0,button1ID,OBJPROP_STATE,0); } }
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hey Leute,
ich probiere vergeblich seit Stunden einen Button, zum direkten EIN/Aus schalten meines EA´s vom Chart aus einzufügen.
Ich schaff es aber einfach nicht :(((((.
Kann von Euch vielleicht mal einer kurz drüber schauen oder paar Tipps geben. Wäre echt Super nett von Euch.
Hier der Code für den Button:
und hier mein EA wo es rein soll