//+------------------------------------------------------------------+
//| Martingale 2012.mq4 |
//| Copyright © 2011, NubieFX Software Corp. |
//|
[email protected] |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, NubieFX Software Corp."
#property link "
[email protected]"
#define buy -2
#define sell 2
extern string Hak_Milik ="
[email protected]";
extern string Nama_EA = "Martingale 2012";
extern string Please_Enter_Password = "0";
extern int magic =333;
extern bool Gunakan_Daily_Profit=true;
extern double Daily_TargetProfit=50;
extern double multiplier =2.0;
extern double start_lot =0.01;
extern double jarak_OP =20;
extern double layer =6;
extern double Money =2.0;
double tp =30;
double sl =60;
extern string stoch_tf_setting ="1=1M, 5=5M, 15=15M, 30=30M, 60=1H, 240=4H, 1440=D1, 10080=W1, 43200=MN1";
extern int Stoch_Timeframe_B =240;
extern int Stoch_Timeframe_T =30;
extern int Stoch_Timeframe_K =5;
extern string Seting_Stoch ="Seting Utk Semua Stoch";
extern int kperiod =14;
extern int dperiod =3;
extern int slowing =3;
extern string MA_method ="0=Simple, 1=Exponential, 2=Smoothed, 3=Linear weighted";
extern int method =3;
extern string Price_Field ="0=Low/High, 1=Cloce/Close";
extern int price_field =1;
int stoch_shift =0;
extern int sell_at_OB =80;
extern int buy_at_OS =20;
double pt;
double minlot;
double stoplevel;
int prec=0;
int a=0;
int i=0;
int ticket=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
if(Digits==3 || Digits==5) pt=10*Point;
else pt=Point;
minlot = MarketInfo(Symbol(),MODE_MINLOT);
stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(start_lot<minlot) Print("lotsize is to small.");
if(sl<stoplevel) Print("stoploss is to tight.");
if(tp<stoplevel) Print("takeprofit is to tight.");
if(minlot==0.01) prec=2;
if(minlot==0.1) prec=1;
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
string AccNo = "20903561";
string Real_Acc = AccountNumber();
//----
if (Please_Enter_Password != "Old Stoch Martingale") //change to the password you give the user!
{
Alert ("Wrong Password!");
return (0);
}
if (IsDemo() == FALSE)
{
if (Real_Acc != AccNo)
{
Alert("Sila gunakan akaun yang telah diberi Hak Milik.");
return;
}
}
if(Gunakan_Daily_Profit && dailyprofit()>=Daily_TargetProfit)
{
Comment("\ndaily target achieved.");
return(0);
}
if(dailyprofit()<=Daily_TargetProfit && total()==0 && a==0)
{
if(signal()==buy)
{
ticket=OrderSend(Symbol(),OP_BUY,start_lot,Ask,3,0,0,"Martingale 2012",magic,0,Blue);
}
if(signal()==sell)
{
ticket=OrderSend(Symbol(),OP_SELL,start_lot,Bid,3,0,0,"Martingale 2012",magic,0,Red);
}
}
if(total()>0 && total()<layer)
{
int type; double op, lastlot;
for(i=0; i<OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
type=OrderType();
op=OrderOpenPrice();
lastlot=OrderLots();
}
if(type==0 && Ask<=op-jarak_OP*pt)
{
ticket=OrderSend(Symbol(),0,NormalizeDouble(lastlot*multiplier,prec),Ask,3,0,0,"Martingale 2012",magic,0,Blue);
}
if(type==1 && Bid>=op+jarak_OP*pt)
{
ticket=OrderSend(Symbol(),1,NormalizeDouble(lastlot*multiplier,prec),Bid,3,0,0,"Martingale 2012",magic,0,Red);
}
}
//+------------------------------------------------------------------------------------------------------+
double profit=0;
for(i=0; i<OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic || OrderType()>1) continue;
profit+=OrderProfit();
}
if(profit>=Money || a>0)
{
closeall();
closeall();
closeall();
a++;
if(total()==0) a=0;
}
Comment("\n", " Martingale 2012 Copyright © 2012 -
[email protected]",
"\n", " ========================================",
"\n", " HakMilik :
[email protected]",
"\n", " Company : ",AccountCompany(),
"\n", " No Account : ",AccountNumber(),
"\n", " Pair : ",Symbol(),
"\n", " Daily Target : ",Daily_TargetProfit,
"\n", " Total Daily Profit : ",dailyprofit(),
"\n", " Total Open Post : ",total(),
"\n", " Profit Target : ",Money,
"\n", " Total Profit/Loss : ",AccountProfit(),
"\n", " Acc Equity : ",AccountEquity(),
"\n",
"\n");
//----
return(0);
}
//+------------------------------------------------------------------+
int total()
{
int total=0;
for(int i=0; i<OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
total++;
}
return(total);
}
//+------------------------------------------------------------------+
int signal()
{
double stochMB=iStochastic(Symbol(),Stoch_Timeframe_B,kperiod,dperiod,slowing,method,price_field,MODE_MAIN,stoch_shift);
double stochSB=iStochastic(Symbol(),Stoch_Timeframe_B,kperiod,dperiod,slowing,method,price_field,MODE_SIGNAL,stoch_shift);
double stochMT=iStochastic(Symbol(),Stoch_Timeframe_T,kperiod,dperiod,slowing,method,price_field,MODE_MAIN,stoch_shift);
double stochST=iStochastic(Symbol(),Stoch_Timeframe_T,kperiod,dperiod,slowing,method,price_field,MODE_SIGNAL,stoch_shift);
double stochMK=iStochastic(Symbol(),Stoch_Timeframe_K,kperiod,dperiod,slowing,method,price_field,MODE_MAIN,stoch_shift);
double stochSK=iStochastic(Symbol(),Stoch_Timeframe_K,kperiod,dperiod,slowing,method,price_field,MODE_SIGNAL,stoch_shift);
double weeclose=iClose(Symbol(),PERIOD_W1,1);
double fibo=iCustom(Symbol(),PERIOD_W1,"FiboPiv_v2",0,0);
{
if(Bid>weeclose && stochMB<stochSB && stochMT<stochST && stochMK<stochSK && stochSB>sell_at_OB && stochST>sell_at_OB && stochSK>sell_at_OB) return(sell);
if(Ask<weeclose && stochMB>stochSB && stochMT>stochST && stochMK>stochSK && stochSB<buy_at_OS && stochST<buy_at_OS && stochSK<buy_at_OS) return(buy);
}
return(0);
}
//+--------------------------------------------------------------+
void closeall()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
if(OrderType()>1) OrderDelete(OrderTicket());
else
{
if(OrderType()==0) OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
else OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
}
}
}
//+------------------------------------------------------------------+
double dailyprofit()
{
int day=Day(); double res=0;
for(int i=0; i<OrdersHistoryTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
if(TimeDay(OrderOpenTime())==day) res+=OrderProfit();
}
return(res);
}
//+-----------------------------------------------------------------+