Fragen Sie! - Seite 122

 

Hallo, ich bin neu in der MQL4-Programmierung und habe eine Frage. Ich schreibe gerade einen EA. Ich würde gerne die Farbe der Candlesticks ändern, wenn sie meine voreingestellten Kriterien erfüllen. Es wäre auch gut, wenn es ein "Errow"- oder "Check"-Zeichen über oder unter dem Candlestick markieren kann. Ich frage mich, ob das möglich ist? Kann mir jemand helfen? Vielen Dank!

 
Dateien:
 

Hilfe bei EA zur Darstellung des gleitenden Durchschnitts auf dem Bildschirm

Hallo, ich versuche zu lernen, wie man MT4 programmiert und kann nicht herausfinden, wie man einen gleitenden Durchschnitt auf dem Bildschirm darstellt. Ich kann alle anderen Linien und Dinge, die ich will, aber kein gleitender Durchschnitt.

Kann mir jemand einen Beispielcode zeigen?

Vielen Dank im Voraus für Ihre Hilfe.

 

Der gleitende Durchschnitt ist ein Standardindikator in Metatrader.

Finden Sie also diesen Indikator hier

und fügen Sie ihn in den Chart ein.

Lesen Sie auch diesen Thread https://www.mql5.com/en/forum/178706

Dateien:
 
newdigital:
Der gleitende Durchschnitt ist ein Standardindikator in Metatrader.

Also, diesen Indikator finden Sie hier

Lesen Sie auch diesen Thread https://www.mql5.com/en/forum/178706

Nein, Sie haben meine Frage missverstanden. Ich weiß, wie ich einen Indikator anhängen kann, das ist kein Problem. Ich brauche den Code, um den Indikator aus einem EA heraus aufzurufen, so dass, wenn ich meinen EA lade, er automatisch den Indikator auf meinem Bildschirm zeichnet.

Ich hoffe, ich habe mich dieses Mal klar ausgedrückt?

 
jwhite1319:
Nein, Sie haben meine Frage missverstanden. Ich weiß, wie man einen Indikator anhängt, das ist kein Problem. Ich brauche den Code, um den Indikator aus einem EA heraus aufzurufen, so dass er beim Laden meines EAs automatisch auf meinem Bildschirm angezeigt wird. Ich hoffe, ich habe mich diesmal klar ausgedrückt?

Ein Beispiel für einen Code, der 2 MAs auf dem Chart darstellt:

ExtCountedBars=IndicatorCounted();

if (ExtCountedBars<0) return(-1);

if (ExtCountedBars>0) ExtCountedBars--;

int pos=Bars-ExtCountedBars-1;

while(pos>=0)

{

ExtMapBuffer1[pos] = iMA(Symbol(),0,MAslow_period,MAslow_shift,MAslow_type,MAslow_price,pos);

ExtMapBuffer2[pos] = iMA(Symbol(),0,MAfast_period,MAfast_shift,MAfast_type,MAfast_price,pos);

pos--;

}

Ich hoffe, das hilft.

FerruFx

 

Ich fragte mich, ob jemand mir helfen könnte, diese EA erhöhen Lose als das Konto wuchs... So würde es einen Prozentsatz anstelle von festen Lose verwenden. Oder einfach verdoppeln jedes Mal das Konto verdoppeln würde. Vielen Dank im Voraus

#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 = True;

extern double Lots = 1.0;

extern int Slippage = 3;

extern bool UseStopLoss = True;

extern int StopLoss = 200;

extern bool UseTakeProfit = False;

extern int TakeProfit = 60;

extern bool UseTrailingStop = True;

extern int TrailingStop = 200;

int BarCount;

int Current;

bool TickCheck = False;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit() {

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

//+------------------------------------------------------------------+

//| Variable Begin |

//+------------------------------------------------------------------+

double Buy1_1 = iClose(NULL, 0, Current + 0);

double Buy1_2 = iOpen(NULL, 0, Current + 3);

double Sell1_1 = iClose(NULL, 0, Current + 0);

double Sell1_2 = iOpen(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;

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 (Buy1_1 > Buy1_2) Order = SIGNAL_BUY;

if (Sell1_1 < Sell1_2) Order = SIGNAL_SELL;

//+------------------------------------------------------------------+

//| Signal End |

//+------------------------------------------------------------------+

//Buy

if (Order == SIGNAL_BUY && ((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; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "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 && ((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; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "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);

}

//+------------------------------------------------------------------+
 

Hilfe zum Code

Ein Beispiel für einen Code, der 2 MAs im Chart darstellt:

Ich hoffe, das hilft.

Perfekt. Genau das, was ich brauchte. Vielen Dank, FerruFx!

 

Symbolleisten verschwinden.

Weiß jemand, warum meine Symbolleisten jedes Mal verschwinden, wenn ich MT4 herunterfahre? Ich muss durchgehen und die Symbolleisten neu laden, wenn ich MT wieder einschalte....

 

Kompilierproblem

Vielleicht können Sie mir helfen.

Manchmal, wenn ich einen neuen Indikator kompiliere, beschließt MT4, die meisten meiner Indikatoren zu kompilieren, aber nicht alle von ihnen. Einige meiner Indikatoren werden in diesem Fall NICHT im Navigator-Fenster angezeigt, so dass ich sie nicht auf ein Diagramm ziehen kann. Haben Sie eine Idee, warum das passieren kann?

Ich muss einige Indikatoren in einen anderen Ordner verschieben, damit alle meine Indikatoren, die mit "_TRO_" beginnen, kompiliert und im Navigator-Fenster angezeigt werden. Könnte das "_" vor dem Namen die Ursache für das Problem sein?