#property version "1.6"
#property strict
#include <stderror.mqh>
#include <stdlib.mqh>
enum curr
{
EUR,
GBP,
USD,
JPY
};
input double Lots =0.01; // Lot size
input double TakeProfit =0.0; // Take profit (Points)
input double StopLoss =5.0; // Stop loss (Points)
input double StartDistance =5.0; // Spacing from current price (Points)
input double SpacingBetweenOrders =10.0; // Spacing between orders (Points)
input double TrailingStop =0.0; // Trailing Stop
input int NumberOfOrders =1; // Number of orders of each type
input int ExpireMinutes =5; // Order expiration time (Minutes)
input int MagicNumber =0; // Magic Number
input int Slippage =3; // Slippage
input string Comments =""; // Comment
input curr NewsCurrency =USD; // News impact currency
input bool MajorsMinors =True; // Open trade in majors and minors
input bool ThisChart =True; // Open trade in this chart symbol
input bool BuyLimit =True; // Open Buy Limit orders
input bool SellLimit =True; // Open Sell Limit orders
input bool BuyStop =True; // Open Buy Stop orders
input bool SellStop =True; // Open Sell Stop orders
void ProcessOrders(string str);
void CheckCurrencyPairs();
void SetTrailingStop();
void DeleteOrders();
int Max(int value1,int value2);
int OnInit()
{
// код доступен только после оплаты
}
int Max(int value1,int value2)
{
if(value1>value2) return value1;
else return value2;
}
void DeleteOrders()
{
int i,Total,Type;
bool Flag=True;
datetime TimeEnd=TimeLocal()+5*60;
while(Flag && TimeLocal()<=TimeEnd)
{
Flag=False;
Total=OrdersTotal();
for(i=0;i<Total;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
Type=OrderType();
if(Type!=OP_BUY && Type!=OP_SELL)
if(OrderDelete(OrderTicket(),clrNONE)==false)
Flag=True;
}
else
Flag=True;
}
}
return;
}
void CheckCurrencyPairs()
{
string Pairs[]={"EUR","GBP","USD","JPY"};
string CurrencySymbol;
bool Flag=True;
int i;
if(MajorsMinors)
{
for(i=0;i<4;i++)
{
if(i==NewsCurrency) continue;
if(i<NewsCurrency)
CurrencySymbol=StringConcatenate(Pairs[i],EnumToString(NewsCurrency));
else if(i>NewsCurrency)
CurrencySymbol=StringConcatenate(EnumToString(NewsCurrency),Pairs[i]);
ProcessOrders(CurrencySymbol);
if(CurrencySymbol==Symbol())
Flag=False;
}
}
if(ThisChart && Flag)
ProcessOrders(Symbol());
return;
}
void SetTrailingStop()
{
int i,Total,Type;
double OpenPrice,MarketPrice,TSPrice,Points,Spread;
string CurrencySymbol;
datetime TimeEnd=TimeLocal()+Max(ExpireMinutes,15)*60;
Total=OrdersTotal();
while(TimeLocal()<=TimeEnd && Total>0)
{
if(TrailingStop==0.0) continue;
Total=OrdersTotal();
for(i=0;i<Total;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
Type=OrderType();
if(Type==OP_BUY)
{
OpenPrice=OrderOpenPrice();
CurrencySymbol=OrderSymbol();
Points=MarketInfo(CurrencySymbol,MODE_POINT);
Spread=MarketInfo(CurrencySymbol,MODE_SPREAD);
MarketPrice=MarketInfo(CurrencySymbol,MODE_ASK);
TSPrice=OpenPrice+MathMax(MathCeil(TrailingStop),Spread)*Points;
if(MarketPrice>TSPrice && OrderStopLoss()<TSPrice)
if(OrderModify(OrderTicket(),OpenPrice,TSPrice,OrderTakeProfit(),OrderExpiration(),clrNONE)==False)
Alert(ErrorDescription(GetLastError()));
}
else if(Type==OP_SELL)
{
OpenPrice=OrderOpenPrice();
CurrencySymbol=OrderSymbol();
Points=MarketInfo(CurrencySymbol,MODE_POINT);
Spread=MarketПоказано первые 50% кода (символов: 6066)
Введите ваш email и нажмите кнопку, чтобы перейти к оплате.