Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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 MT4 kodlayıcıları,
Birinin bana yardım edip edemeyeceğini merak ediyorum. Bir EA'ya "Gövde hareketli ortalama 2 katı nmc" göstergesini uygulamaya çalışıyorum.
Karşılaştığım sorun, Göstergenin rapor günlüğüne göre MT4'e tekrar tekrar yüklenmesi, ayrıca EA'nın bir ticaret açmamasıdır. Bildiğim kadarıyla iCustom gösterge çağrısıyla ilgili bir sorun temel neden olabilir.
Yapmaya çalıştığım şey bu:
EA, Hull hareketli ortalama 2 katı nmc yeşil olduğunda ve Hull hareketli ortalama 2 katı nmc kırmızı olduğunda kısa olduğunda UZUN gitmelidir.
extern int HMAPeriod = 35;
extern int HMAPrice = 0; // PRICE_CLOSE
extern double HMASpeed = 2;
[/CODE]
[CODE]
// Forex TSD Hull Moving Average
double hma0 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 0);
double hma1 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 1);
double hma2 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 2);
Buy = (hma0 > hma1 && hma1 > hma2);
Sell = (hma0 < hma1 && hma1 < hma2);
Yardımınız için şimdiden teşekkür ederim.
Merhaba MT4 kodlayıcıları,
Birinin bana yardım edip edemeyeceğini merak ediyorum. Bir EA'ya "Gövde hareketli ortalama 2 katı nmc" göstergesini uygulamaya çalışıyorum.
Karşılaştığım sorun, Göstergenin rapor günlüğüne göre MT4'e tekrar tekrar yüklenmesi, ayrıca EA'nın bir ticaret açmamasıdır. Bildiğim kadarıyla iCustom gösterge çağrısıyla ilgili bir sorun temel neden olabilir.
Yapmaya çalıştığım şey bu:
EA, Hull hareketli ortalama 2 katı nmc yeşil olduğunda ve Hull hareketli ortalama 2 katı nmc kırmızı olduğunda UZUN gitmelidir.
extern int HMAPeriod = 35;
extern int HMAPrice = 0; // PRICE_CLOSE
extern double HMASpeed = 2;
[/CODE]
[CODE]
// Forex TSD Hull Moving Average
double hma0 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 0);
double hma1 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 1);
double hma2 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 2);
Buy = (hma0 > hma1 && hma1 > hma2);
Sell = (hma0 < hma1 && hma1 < hma2);
tfi_markets
Bir parametreyi kaçırıyorsunuz (birincisi, TimeFrame parametresi). iCustom() çağrısını şu şekilde değiştirin:
iCustom(Symbol(),0,"Gövde hareketli ortalama 2 katı nmc", "", HMAPeriod, HMAPrice,HMASpeed,0,2,0);
ve tamam çalışacak
Merhaba Mladen,
yardımın için çok teşekkürler!
Önerinizi uyguladım, hata gitti, bu çok iyi. Ancak EA ne yazık ki hala bir ticaret açmıyor. Sıralama mantığını gözden geçirirseniz sevinirim, acaba burada yanlış bir şey mi yapıyorum?
int Extra_Pips=1;
extern int HMA_Period=21;
extern int HMA_Price=PRICE_CLOSE; //0
extern double HMA_Speed= 2;
//+------------------------------------------------------------------+
//| ORDER Logic / Indicators |
//+------------------------------------------------------------------+
if(openedOrders<=0)
{
// Forex TSD Hull Moving Average
double hma0 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,0);
double hma1 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,1);
double hma2 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,2);
//+------------------------------------------------------------------+
//| BUY |
//+------------------------------------------------------------------+
if(hma0>hma1 && hma1>hma2)
{
// Wait some pips
double pipsExtra1=Extra_Pips*Point; // Get distance from cross signal
OpenBuy();
return(0);
}
//+------------------------------------------------------------------+
//| SELL |
//+------------------------------------------------------------------+
if(hma0<hma1 && hma1<hma2)
{
// Wait some pips
double pipsExtra2=Extra_Pips*Point; // Get distance from cross signal
OpenSell();
return(0);
}
}
Biri bana, her pip karı 10 birim para birimi olacak şekilde farklı çiftler için lot büyüklüğü hesaplama kodu konusunda yardımcı olabilir mi? Örneğin, "ProfitPerPip = 10" ise EURUSD için lot 1.00 olacaktır.
Teşekkür ederim.
Merhaba Mladen,
yardımın için çok teşekkürler!
Önerinizi uyguladım, hata gitti, bu çok iyi. Ancak EA ne yazık ki hala bir ticaret açmıyor. Sıralama mantığını gözden geçirirseniz sevinirim, acaba burada yanlış bir şey mi yapıyorum?
int Extra_Pips=1;
extern int HMA_Period=21;
extern int HMA_Price=PRICE_CLOSE; //0
extern double HMA_Speed= 2;
//+------------------------------------------------------------------+
//| ORDER Logic / Indicators |
//+------------------------------------------------------------------+
if(openedOrders<=0)
{
// Forex TSD Hull Moving Average
double hma0 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price,HMA_Speed,0,2,0);
double hma1 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,1);
double hma2 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,2);
//+------------------------------------------------------------------+
//| BUY |
//+------------------------------------------------------------------+
if(hma0>hma1 && hma1>hma2)
{
// Wait some pips
double pipsExtra1=Extra_Pips*Point; // Get distance from cross signal
OpenBuy();
return(0);
}
//+------------------------------------------------------------------+
//| SELL |
//+------------------------------------------------------------------+
if(hma0<hma1 && hma1<hma2)
{
// Wait some pips
double pipsExtra2=Extra_Pips*Point; // Get distance from cross signal
OpenSell();
return(0);
}
}
tfi_markets
En basit yol, trend arabelleğini (tampon 3) kontrol etmektir.
Bunun gibi bir şey:
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
if (trendc!=trendp)
{
if (trendc == 1) // code for buy
if (trendc == -1) // code for sell
}
tfi_markets
En basit yol, trend arabelleğini (tampon 3) kontrol etmektir.
Bunun gibi bir şey:
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
if (trendc!=trendp)
{
if (trendc == 1) // code for buy
if (trendc == -1) // code for sell
}
Merhaba Mladen,
kusura bakmayın sizi tekrar rahatsız edeceğim şimdiden önerileriniz için çok teşekkür ederim
Ben şu şekilde uyguladım ama ne yazık ki trend değişimini tam olarak yakalayamamış görünüyor,
ve satın alma siparişlerini açarken çılgınca çalışıyor, lütfen ekteki ekran görüntüsüne bakın.
Açılış emirleri için kod:
if(openedOrders<=0)
{
// Forex TSD Hull Moving Average
double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
if(trendc!=trendp)
{
if(trendc==1) // code for buy
OpenBuy();
return(0);
}
if(trendc==-1) // code for sell
{
OpenSell();
return(0);
}
}
//+------------------------------------------------------------------+
//| Open Buy |
//+------------------------------------------------------------------+
void OpenBuy()
{
double lbStop = 0; if(lStopLoss>0) lbStop = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)-lStopLoss *pPoint*pipMultiplier,digit);
double lbTake = 0; if(lTakeProfit>0) lbTake = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)+lTakeProfit*pPoint*pipMultiplier,digit);
if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; }
//
//
//
if(!EcnBroker)
dummyResult=OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,lbStop,lbTake,ExpertName,MAGIC,0,clOpenBuy);
else
{
int buyTicket= OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenBuy);
if(buyTicket>= 0)
bool buyOrderMod=OrderModify(buyTicket,OrderOpenPrice(),lbStop,lbTake,0,CLR_NONE);
if(buyOrderMod==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert=StringConcatenate("Modify Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",buyTicket," Stop: ",lbStop," Profit: ",lbTake);
Print(ErrLog);
}
}
}
//+------------------------------------------------------------------+
//| Open Sell |
//+------------------------------------------------------------------+
void OpenSell()
{
double lsStop = 0; if(sStopLoss>0) lsStop = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)+sStopLoss *pPoint*pipMultiplier,digit);
double lsTake = 0; if(sTakeProfit>0) lsTake = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)-sTakeProfit*pPoint*pipMultiplier,digit);
if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; }
//+------------------------------------------------------------------+
//| ECN Broker |
//+------------------------------------------------------------------+
if(!EcnBroker)
dummyResult=OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,lsStop,lsTake,ExpertName,MAGIC,0,clOpenSell);
else
{
int sellTicket = OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenSell);
if(sellTicket >= 0)
bool sellOrderMod=OrderModify(sellTicket,OrderOpenPrice(),lsStop,lsTake,0,CLR_NONE);
if(sellOrderMod==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert=StringConcatenate("Modify Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",sellTicket," Stop: ",lsStop," Profit: ",lsTake);
Print(ErrLog);
}
}
}
[/CODE]
Code for closing orders:
[CODE]
void CheckForClose()
{
RefreshRates();
double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!= MAGIC) continue;
if(OrderSymbol() != s_symbol) continue;
if(trendc_c!=trendp_c) // Check Trend
{
if(OrderType()==OP_BUY)
{
if(trendc_c==1) //is BUY?
{
bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);
if(buyClose==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts == true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
if(trendc_c!=trendp_c) // Check trend
{
if(OrderType()==OP_SELL)
{
if(trendc_c==-1) // is SELL?
{
bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);
if(sellClose == false)
{
ErrorCode = GetLastError();
ErrDesc = ErrorDescription(ErrorCode);
ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
}
}
Şimdiden teşekkür ederim!
Merhaba Mladen,
kusura bakmayın sizi tekrar rahatsız edeceğim şimdiden önerileriniz için çok teşekkür ederim
Ben şu şekilde uyguladım ama ne yazık ki trend değişimini tam olarak yakalayamamış görünüyor,
ve satın alma siparişlerini açarken çılgınca çalışıyor, lütfen ekteki ekran görüntüsüne bakın.
Açılış emirleri için kod:
if(openedOrders<=0)
{
// Forex TSD Hull Moving Average
double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
if(trendc!=trendp)
{
if(trendc==1) // code for buy
OpenBuy();
return(0);
}
if(trendc==-1) // code for sell
{
OpenSell();
return(0);
}
}
//+------------------------------------------------------------------+
//| Open Buy |
//+------------------------------------------------------------------+
void OpenBuy()
{
double lbStop = 0; if(lStopLoss>0) lbStop = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)-lStopLoss *pPoint*pipMultiplier,digit);
double lbTake = 0; if(lTakeProfit>0) lbTake = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)+lTakeProfit*pPoint*pipMultiplier,digit);
if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; }
//
//
//
if(!EcnBroker)
dummyResult=OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,lbStop,lbTake,ExpertName,MAGIC,0,clOpenBuy);
else
{
int buyTicket= OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenBuy);
if(buyTicket>= 0)
bool buyOrderMod=OrderModify(buyTicket,OrderOpenPrice(),lbStop,lbTake,0,CLR_NONE);
if(buyOrderMod==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert=StringConcatenate("Modify Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",buyTicket," Stop: ",lbStop," Profit: ",lbTake);
Print(ErrLog);
}
}
}
//+------------------------------------------------------------------+
//| Open Sell |
//+------------------------------------------------------------------+
void OpenSell()
{
double lsStop = 0; if(sStopLoss>0) lsStop = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)+sStopLoss *pPoint*pipMultiplier,digit);
double lsTake = 0; if(sTakeProfit>0) lsTake = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)-sTakeProfit*pPoint*pipMultiplier,digit);
if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; }
//+------------------------------------------------------------------+
//| ECN Broker |
//+------------------------------------------------------------------+
if(!EcnBroker)
dummyResult=OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,lsStop,lsTake,ExpertName,MAGIC,0,clOpenSell);
else
{
int sellTicket = OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenSell);
if(sellTicket >= 0)
bool sellOrderMod=OrderModify(sellTicket,OrderOpenPrice(),lsStop,lsTake,0,CLR_NONE);
if(sellOrderMod==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert=StringConcatenate("Modify Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",sellTicket," Stop: ",lsStop," Profit: ",lsTake);
Print(ErrLog);
}
}
}
[/CODE]
Code for closing orders:
[CODE]
void CheckForClose()
{
RefreshRates();
double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!= MAGIC) continue;
if(OrderSymbol() != s_symbol) continue;
if(trendc_c!=trendp_c) // Check Trend
{
if(OrderType()==OP_BUY)
{
if(trendc_c==1) //is BUY?
{
bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);
if(buyClose==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts == true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
if(trendc_c!=trendp_c) // Check trend
{
if(OrderType()==OP_SELL)
{
if(trendc_c==-1) // is SELL?
{
bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);
if(sellClose == false)
{
ErrorCode = GetLastError();
ErrDesc = ErrorDescription(ErrorCode);
ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
}
}
Şimdiden teşekkür ederim!
Bir soru : neden alış sinyali geldiğinde alış emirlerini kapatıyor ve satış sinyali geldiğinde sat emirlerini neden kapatıyorsunuz? Bunun tersine çevrilmesi gerekmez mi? Ve şimdi bazı şeylerin olmasını engelleyeceğini düşünüyorum
Mql5 hakkında basit bir soru, alt pencerenin üstündeki gösterge değerlerini/etiketlerini nasıl gizleyebiliriz? mql4'te "SetIndexLabel(0,NULL);" ile olduğunu biliyorum, ancak mt5 için bulamıyorum. Çok teşekkürler.
Mql5 hakkında basit bir soru, alt pencerenin üstündeki gösterge değerlerini/etiketlerini nasıl gizleyebiliriz? mql4'te "SetIndexLabel(0,NULL);" ile olduğunu biliyorum, ancak mt5 için bulamıyorum. Çok teşekkürler.
hava görevi
Kullanın: PlotIndexSetInteger(0,PLOT_SHOW_DATA,false); bunun için
Merhaba Mladen. Metatrader'ın son sayısından önce kullandığım bir uzmanı ekledim. Şimdi çalışmıyor.
Sihirli değneğinizi onun üzerine örebilir ve tekrar çalışmasını sağlayabilirsiniz. Yapabilirseniz, herkesin kullanması beni mutlu eder .... bu iyi bir şey (Ya da öyleydi!)