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
#property link ""
//---- input parameters
extern bool AccountIsIBFXmini=false;
extern double Lots=0.1;
extern double MaximumRisk=0.03;
extern double DecreaseFactor=300;
extern double MinLot=0.01;
extern int Slippage=3;
extern double TrailingStop=30;
double StartBalance,StartEquity;
extern bool UseHourTrade = false;
extern int FromHourTrade = 6;
extern int ToHourTrade = 18;
//---- global variables
int dir=0;
int openorders=0;
int cnt;
string pair;
int MagicNumber;
int bsflag=0;
int bstarget=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (Symbol() == "AUDCADm" || Symbol() == "AUDCAD") { MagicNumber = 427101; }
if (Symbol() == "AUDJPYm" || Symbol() == "AUDJPY") { MagicNumber = 427102; }
if (Symbol() == "AUDNZDm" || Symbol() == "AUDNZD") { MagicNumber = 427103; }
if (Symbol() == "AUDUSDm" || Symbol() == "AUDUSD") { MagicNumber = 427104; }
if (Symbol() == "CHFJPYm" || Symbol() == "CHFJPY") { MagicNumber = 427105; }
if (Symbol() == "EURAUDm" || Symbol() == "EURAUD") { MagicNumber = 427106; }
if (Symbol() == "EURCADm" || Symbol() == "EURCAD") { MagicNumber = 427107; }
if (Symbol() == "EURCHFm" || Symbol() == "EURCHF") { MagicNumber = 427108; }
if (Symbol() == "EURGBPm" || Symbol() == "EURGBP") { MagicNumber = 427109; }
if (Symbol() == "EURJPYm" || Symbol() == "EURJPY") { MagicNumber = 427110; }
if (Symbol() == "EURUSDm" || Symbol() == "EURUSD") { MagicNumber = 427111; }
if (Symbol() == "GBPCHFm" || Symbol() == "GBPCHF") { MagicNumber = 427112; }
if (Symbol() == "GBPJPYm" || Symbol() == "GBPJPY") { MagicNumber = 427113; }
if (Symbol() == "GBPUSDm" || Symbol() == "GBPUSD") { MagicNumber = 427114; }
if (Symbol() == "NZDJPYm" || Symbol() == "NZDJPY") { MagicNumber = 427115; }
if (Symbol() == "NZDUSDm" || Symbol() == "NZDUSD") { MagicNumber = 427116; }
if (Symbol() == "USDCHFm" || Symbol() == "USDCHF") { MagicNumber = 427117; }
if (Symbol() == "USDJPYm" || Symbol() == "USDJPY") { MagicNumber = 427118; }
if (Symbol() == "USDCADm" || Symbol() == "USDCAD") { MagicNumber = 427119; }
if (MagicNumber == 0) { MagicNumber = 427199; }
pair = Symbol();
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Calculate open positions |
//+------------------------------------------------------------------+
int GetCurrentOrders()
{
//---- calc open OrderSelect
openorders=0;
dir=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
openorders+=1;
if(OrderType()==OP_BUY) dir=1;
if(OrderType()==OP_SELL) dir=-1;
}
}
}
//+-------------------End Calculate open positions-------------------+
//+------------------------------------------------------------------+
//| Calculate optimal lot size |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
//---- select lot size
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/500.0,1);
//---- calculate number of losses orders without a break
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- return lot size
if(lot>999) lot=999;
if(lot<MinLot) lot=MinLot;
return(lot);
}
//+-------------------End Calculate optimal lot size-----------------+
//+------------------------------------------------------------------+
//| Close Open Position |
//+------------------------------------------------------------------+
int CloseTrade()
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow);
if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
}
}
}
//+----------------------End Close Open Position---------------------+
//+------------------------------------------------------------------+
//| Open Trade Position |
//+------------------------------------------------------------------+
int OpenTrade()
{
int vLots=LotsOptimized();
if (bsflag==1) OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,Slippage,0,Ask+bstarget*Point,"NoLoss",MagicNumber,0,Green);
if (bsflag==2) OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,Slippage,0,Ask-bstarget*Point,"NoLoss",MagicNumber,0,Red);
}
//+----------------------End Open Trade Position---------------------+
//+------------------------------------------------------------------+
//| Buy/Sell Indicator |
//+------------------------------------------------------------------+
int CalcBSI()
{
//---- calc current indicators
//double val1=iCustom("GBPJPY",0,"NoLoss",0,0,0);
//double val2=iCustom("GBPJPY",0,"NoLoss",0,1,0);
//double val3=iCustom("USDJPY",0,"NoLoss",0,0,0);
//double val4=iCustom("USDJPY",0,"NoLoss",0,1,0);
double val1=iOpen("GBPJPY",0,0);
double val2=iClose("GBPJPY",0,0);
double val3=iOpen("USDJPY",0,0);
double val4=iClose("USDJPY",0,0);
double nval1=xDiv(val1,val2);
double nval2=xDiv(val3,val4);
if(nval1>nval2)
{
bsflag=2;
bstarget=(nval1-nval2)*10000;
} else
if(nval1<nval2)
{
bsflag=1;
bstarget=(nval2-nval1)*10000;
}
else
{
bsflag=0;
bstarget=0;
}
if(bstarget<10)
{
bsflag=0;
bstarget=0;
}
}
//+-----------------------End Buy/Sell Indicator---------------------+
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (Period()<PERIOD_H1) { Alert("Only on H1 or larger!"); return(0); } // For use only on H4 --- NO ERROR if activated
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) // check for symbol and magic number
{
if(OrderType()==OP_BUY) // long position is opened
{
// check for trailing stop
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// check for trailing stop
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
//+--------------------End TrailingStop & BreakEven------------------+
if (UseHourTrade)
{
if (!((Hour() >= FromHourTrade) && (Hour() <= ToHourTrade)))
{
Comment("Non-Trading Hours!");
return(0);
}
}
GetCurrentOrders();
CalcBSI();
Comment("\nStart Balance= ",StartBalance,",","Start Equity= ",StartEquity,
"\nBalance: ",AccountBalance(),","," Equity: ",AccountEquity(),","," TotalProfit: ",AccountProfit(),
"\nBSFlag: ",bsflag,"\nbstarget: ",bstarget);
//---- exit trades
if (openorders!=0) {
if ((bsflag==1) && (dir<0)) CloseTrade();
if ((bsflag==2) && (dir>0)) CloseTrade();
}
//---- open trades
else
{
if (bsflag != 0 && bstarget>20) OpenTrade();
}
}
//+---------------------End Expert Start Function--------------------+
double xDiv(double a, double b)
{
if(b==0) return(b); else return(a/b);
}lütfen kimseye yardım edin!
Optimizasyon raporunda ölçüt olarak "kazanılan kısa pozisyonlar yüzdesi" ve "kazanılan uzun pozisyonlar yüzdesi"ni kullanarak strateji test edici raporlarını filtrelemenin bir yolu var mı? Şu anda yalnızca kâr, toplam işlemler, kâr faktörü, beklenen getiri vb. üzerinde filtre uygulayabilirsiniz.
Şimdiden teşekkürler!
MT4 Vs. Ticaret İstasyonu
Herkese selamlar,
Bu tahtada benden daha zeki insanların zenginliğinden geri bildirim/görüş/fikir alıp alamayacağımı merak ediyordum.
MT4'te bir stratejiyi geriye doğru test ettiğimde, Trade Station kullanarak geriye dönük test yaptığımdan farklı sonuçlar alıyorum....kodlama aynı...canlı alım satımları izlerken aynı anda tetiklenip çıkıyorlar vs... ama geriye dönük testler çok farklı sonuçlar veriyor... kime inanayım?
TS verilerinin MT4'ten daha iyi olduğunu duydum ama bazılarınızın ne düşündüğünü öğrenmek istedim...
Herkese teşekkürler
Herkese selamlar,
Bu tahtada benden daha zeki insanların zenginliğinden geri bildirim/görüş/fikir alıp alamayacağımı merak ediyordum.
MT4'te bir stratejiyi geriye doğru test ettiğimde, Trade Station kullanarak geriye dönük test yaptığımdan farklı sonuçlar alıyorum....kodlama aynı...canlı alım satımları izlerken aynı anda tetiklenip çıkıyorlar vs... ama geriye dönük testler çok farklı sonuçlar veriyor... kime inanayım?
TS verilerinin MT4'ten daha iyi olduğunu duydum ama bazılarınızın ne düşündüğünü öğrenmek istedim...
Herkese teşekkürlerBunlar tamamen farklı programlar, farklılıklar olacaktır.
Bunlar tamamen farklı programlar, farklılıklar olacaktır.
Merhaba Linuxser.... cevap için tekrar teşekkürler ve bunu uygun başlığa taşıdığınız için teşekkürler.
Kesinlikle, farklı programlar oldukları için bazı farklılıklar olmasını bekliyorum...Sanırım merak ettiğim şey, birinin geriye dönük test sonuçlarına diğerine güvenmeli miyim? zaman...Örnek olarak...siz (veya buradaki herhangi bir üye) size aynı stratejiyle işlem yapan iki grup sonuçla yaklaşılsaydı ne yapardınız...ikisini de reddedin...en iyi sonucu verene güvenin. ..
Bu yeri bu kadar yararlı hale getirmek için harcadığınız tüm çaba ve zaman için tekrar teşekkür ederiz.
örnek...siz (ya da buradaki herhangi bir üye) aynı stratejiyle işlem yapan iki sonuç kümesiyle karşı karşıya kalsaydınız ne yapardınız...ikisini de reddedin...en iyi sonucu verene güvenin... Herkese tekrar teşekkürler Bu yeri çok yararlı hale getirmek için harcadığınız çaba ve zaman.
Aynı şeyi her zaman yapıyorum. Grafikte kağıt + kalem + excel + sistem + kendi kararım.
Nasıl optimize edersiniz?
Bir EA'yı optimize etmenin en iyi yolu nedir? Optimize edilmesi gereken çok iyi bir EA buldum ve nasıl yapılacağı hakkında hiçbir fikrim yok.
Birisi Alpari için yaptı ve benim IBFX için mi yapmam gerekiyor? Biri yardım edebilir mi?
Herhangi bir yardım için şimdiden teşekkürler.
Bay Cips
Aynı şeyi her zaman yapıyorum. Tabloda kağıt + kalem + excel + sistem + kendi kararım.
Güzel cevap...tekrar teşekkürler.
Farklı Tester sonuçları almak mümkün mü?
Aynı tarih aralığını kullanarak aynı sembol üzerinde aynı EA'yı test ederken farklı sonuçlar alıyorum.
Başlat'ı birden çok kez tıklamak farklı sonuçlar verir. İlk tepkim, EA'da rastgele bir işlev olduğuydu, ancak kodda böyle bir şey göremiyorum. Her bir sipariş satırı için ayrıntılı rapora bakıldığında, Fiyat, S/L ve T/P'de satırlar bir veya iki sent geridedir.
Ne kaçırdım? Bu MT4, yapı 218.
???
------------------------------------