![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Merhaba, MQL4 programlamada yeniyim ve bir sorum var. Şu anda bir EA yazıyorum. Bu mum çubuğunun rengini, önceden belirlenmiş kriterlerimi karşıladığında değiştirmek istiyorum. Şamdanın üstünde veya altında bir "Hata" veya "Kontrol" işareti işaretleyebilmesi de iyi olacaktır. Merak ediyorum, mümkün mü? Biri bana yardım edebilir mi? Teşekkürler.
Ekranda Hareketli ortalamayı çizmek için EA ile yardım
Merhaba, MT4'ü nasıl programlayacağımı öğrenmeye çalışıyorum ve ekranda hareketli bir ortalamayı nasıl çizeceğimi çözemiyorum. İstediğim diğer tüm satırları ve şeyleri alabilirim, ancak hareketli ortalama yok.
Biri beni örnek bir koda yönlendirebilir mi?
Yardımlarınız için şimdiden teşekkür ederiz.
Hareketli ortalama, Metatrader'da standart göstergedir.
Yani, bu göstergeyi burada bulun
ve tabloya ekleyin.
Bu konuyu da okuyun https://www.mql5.com/en/forum/178706
Hareketli ortalama, Metatrader'da standart göstergedir.
Yani, bu göstergeyi burada bulun
Bu konuyu da okuyun https://www.mql5.com/en/forum/178706Hayır, sorumu yanlış anladın. Bir göstergenin nasıl ekleneceğini biliyorum, orada sorun yok. Göstergeyi bir EA içinden çağırmak için koda ihtiyacım var, böylece ea'mı yüklediğimde göstergeyi ekranıma otomatik olarak çizecek.
Umarım bu sefer temizimdir?
Hayır, sorumu yanlış anladın. Bir göstergenin nasıl ekleneceğini biliyorum, orada sorun yok. Göstergeyi bir EA içinden çağırmak için koda ihtiyacım var, böylece ea'mı yüklediğimde göstergeyi ekranıma otomatik olarak çizecek. Umarım bu sefer temizimdir?
2 MA'yı grafikte çizen bir kod örneği:
if (ExtCountedBars<0) return(-1);
if (ExtCountedBars>0) ExtCountedBars--;
int pos=Barlar-ExtCountedBars-1;
süre(konum>=0)
{
ExtMapBuffer1[konum] = iMA(Symbol(),0,MAslow_period,MAslow_shift,MAslow_type,MAslow_price,pos);
ExtMapBuffer2[konum] = iMA(Symbol(),0,MAfast_period,MAfast_shift,MAfast_type,MAfast_price,pos);
konum--;
}Umarım yardımcı olur.
FerruFx
Hesap büyüdükçe bu EA artış lotlarını yapmama yardım edebilecek biri olup olmadığını merak ediyordum.. Bu yüzden sabit lotlar yerine bir yüzde kullanacak. Veya hesap her ikiye katlandığında ikiye katlayın.. Şimdiden teşekkürler![](https://c.mql5.com/forextsd/smiles/smile.png)
#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);
}
//+------------------------------------------------------------------+kod ile yardım
2 MA'yı grafikte çizen bir kod örneği:
Umarım yardımcı olur.
Mükemmel. Tam ihtiyacım olan şey. Teşekkürler, FerruFx!![](https://c.mql5.com/forextsd/smiles/party.png)
![](https://c.mql5.com/forextsd/smiles/party.png)
araç çubukları kayboluyor.
MT4'ü her kapattığımda araç çubuklarımın neden kaybolduğunu bilen var mı? MT'yi tekrar açtığımda araç çubuklarını gözden geçirmem ve yeniden yüklemem gerekiyor....![](https://c.mql5.com/forextsd/smiles/sad_smile.png)
derleme sorunu
Belki bana yardım edebilirsin.
Bazen yeni bir gösterge derlediğimde, MT4 göstergelerimin çoğunu derlemeye karar veriyor ama hepsini değil. Bu olduğunda göstergelerimden bazıları Gezgin penceresinde GÖRÜNMEZ, bu yüzden onları bir tabloya sürükleyemem. Bunun neden olabileceğine dair bir fikriniz var mı?
"_TRO_" ile başlayan tüm göstergelerimin derlenip Navigator penceresinde görünmesini sağlamak için bazı göstergeleri farklı bir klasöre taşımam gerekiyor. Adın önündeki "_" soruna neden olabilir mi?