//+------------------------------------------------------------------+
//| martingale_script.mq4 |
//| Copyright © 2010, Aiman |
//| Aiman |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Aiman."
#property link "Aiman CG"
#property show_inputs
#include <stdlib.mqh>
extern bool instantOrder = false;
extern bool buylimit = false;
extern bool selllimit = false;
extern double Lots = 0.1;
extern double multiplier = 2;
extern int layer = 3;
extern int Pips = 100;
extern int StopLoss = 0;
extern int TakeProfit = 0;
int Slippage = 5;
int start()
{
double ask, bid, lot, sl, tp;
int ticket, retry;
double spread = MarketInfo(Symbol(),MODE_SPREAD)*Point;
if (instantOrder)
{
ask = Ask;
bid = Bid;
lot = Lots;
if (buylimit)
{
ticket = 0;
retry = 0;
while (ticket<1 && retry<10)
{
if (StopLoss>0) sl=ask-(StopLoss*Point); else sl=0;
if (TakeProfit>0) tp=(ask+spread)+(TakeProfit*Point); else tp=0;
ticket=OrderSend(Symbol(),OP_BUY,lot,ask,Slippage,sl,tp,"",0,0,CLR_NONE);
if (ticket<1) Print ("Order buy failed with error ", ErrorDescription(GetLastError()));
Sleep (1000);
retry++;
}
}
if (selllimit)
{
ticket = 0;
retry = 0;
while (ticket<1 && retry<10)
{
if (StopLoss>0) sl=bid+(StopLoss*Point); else sl=0;
if (TakeProfit>0) tp=(bid-spread)-(TakeProfit*Point); else tp=0;
ticket=OrderSend(Symbol(),OP_SELL,lot,bid,Slippage,sl,tp,"",0,0,CLR_NONE);
if (ticket<1) Print ("Order sell failed with error ", ErrorDescription(GetLastError()));
Sleep (1000);
retry++;
}
}
}
for (int i=layer; i>0; i--)
{
if (ask==0) ask = Ask-Pips*Point;
else ask = ask-Pips*Point;
if (bid==0) bid = Bid+Pips*Point;
else bid = bid+Pips*Point;
if (lot==0) lot = Lots;
else lot = NormalizeDouble(lot*multiplier,2);
if (buylimit)
{
ticket = 0;
retry = 0;
while (ticket<1 && retry<10)
{
if (StopLoss>0) sl=ask-(StopLoss*Point); else sl=0;
if (TakeProfit>0) tp=(ask+spread)+(TakeProfit*Point); else tp=0;
ticket=OrderSend(Symbol(),OP_BUYLIMIT,lot,ask,Slippage,sl,tp,"",0,0,CLR_NONE);
if (ticket<1) Print ("Order buy limit failed with error ", ErrorDescription(GetLastError()));
Sleep (1000);
retry++;
}
}
if (selllimit)
{
ticket = 0;
retry = 0;
while (ticket<1 && retry<10)
{
if (StopLoss>0) sl=bid+(StopLoss*Point); else sl=0;
if (TakeProfit>0) tp=(bid-spread)-(TakeProfit*Point); else tp=0;
ticket=OrderSend(Symbol(),OP_SELLLIMIT,lot,bid,Slippage,sl,tp,"",0,0,CLR_NONE);
if (ticket<1) Print ("Order sell limit failed with error ", ErrorDescription(GetLastError()));
Sleep (1000);
retry++;
}
}
}
return(0);
}