Лучшее от sir



Ремонт советника
2020-01-03 10:04:02Рейтинг 0

Ремонт советника

Помогите найти ошибку в коде. Не работает фильтр дня недели и фильтр времени.
//+------------------------------------------------------------------+
//| Mult.mq4 |
//| Copyright 2020 |
//| |
//+------------------------------------------------------------------+
#property copyright «Copyright 2020»
#property link «www.forexsystems.biz»
#property version «1.00»
#property strict

extern string s=«Выбор валютной пары»;

extern string Symbol1 = «EURUSD»;
extern string Symbol2 = «GBPUSD»;
extern string Symbol3 = «XAGUSD»;
extern string Symbol4 = «USDCAD»;
extern string Symbol5 = «AUDUSD»;
extern string Symbol6 = «NZDUSD»;
extern string Symbol7 = «USDPLN»;
extern string Symbol8 = «USDRUB»;
extern string Symbol9 = «USDCNH»;
extern string Symbol10 = «XAUUSD»;
extern string Symbol11 = «USDJPY»;
extern string Symbol12 = «USDCHF»;

extern string Symbol13 = «EURGBP»;
extern string Symbol14 = «EURNZD»;
extern string Symbol15 = «EURCAD»;
extern string Symbol16 = «EURCHF»;
extern string Symbol17 = «EURJPY»;
extern string Symbol18 = «EURAUD»;

extern string Symbol19 = «GBPNZD»;
extern string Symbol20 = «GBPCAD»;
extern string Symbol21 = «GBPAUD»;
extern string Symbol22 = «GBPJPY»;
extern string Symbol23 = «GBPCHF»;

extern string Symbol24 = «NZDJPY»;
extern string Symbol25 = «AUDJPY»;
extern string Symbol26 = «CADJPY»;
extern string Symbol27 = «CHFJPY»;

extern string Symbol28 = «CADCHF»;
extern string Symbol29 = «NZDCHF»;
extern string Symbol30 = «AUDCHF»;

extern string Symbol31 = «NZDCAD»;
extern string Symbol32 = «AUDCAD»;

extern string Symbol33 = «AUDNZD»;

extern string Symbol34 = «BRENT»;
extern string Symbol35 = ".US30Cash";
extern string Symbol36 = «USDZAR»;

extern string ss=«Настройки советника»;

extern double Lots = 0.01; // лот

extern int Slip = 30; // Проскальзывание
extern int Magic = 124; // Магик

extern string sss=" ";

//--- input ADX parameters
//extern int ADXPeriod=14;

extern int TMAPeriod = 30;
extern double TmaDn = -50.0;
extern double TmaUp = 50.0;
extern double levelOb = 6.0;
extern double levelOs = -6.0;
extern double extremelevelOb = 10;
extern double extremelevelOs = -10;

// exported variables
extern bool FiveDigitBroker150 = true;
extern bool DetectBrokerDigits150 = true;
extern bool Monday914 = true;
extern bool Tuesday914 = true;
extern bool Wednesday914 = true;
extern bool Thursday914 = true;
extern bool Friday914 = false;
extern int HoursFrom916 = 0;
extern int HoursTo916 = 12;
extern int HoursFrom915 = 14;
extern int HoursTo915 = 18;
extern bool Monday921 = false;
extern bool Tuesday921 = false;
extern bool Wednesday921 = false;
extern bool Thursday921 = false;
extern bool Friday921 = true;
extern int HoursFrom920 = 0;
extern int HoursTo920 = 12;
extern int HoursFrom919 = 14;
extern int HoursTo919 = 16;
extern bool FiveDigitBroker = true;
extern bool DetectBrokerDigits = true;

datetime BarTime = 0;
extern double PipValue=1; // this variable is here to support 5-digit brokers
extern bool Terminated =false;
string LF = "\n"; // use this in custom or utility blocks where you need line feeds
extern int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names
int current = 0;
double SL;
double TP;
double Spread;

// ADX
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{NDigits = Digits;
if (false) ObjectsDeleteAll(); // clear the chart
//---
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
void OnEveryTick150()
{
if (DetectBrokerDigits150 == false && FiveDigitBroker150) PipValue = 10;
if (DetectBrokerDigits150 && NDigits == 3 ) PipValue = 10;
{ WeekdayFilter914();
WeekdayFilter921();}
if (DetectBrokerDigits150 && NDigits == 5) PipValue = 100;
{ WeekdayFilter914();
WeekdayFilter921();}
}

void WeekdayFilter914()
{
if ((Monday914 && DayOfWeek() == 1) || (Tuesday914 && DayOfWeek() == 2) || (Wednesday914 && DayOfWeek() == 3) ||
(Thursday914 && DayOfWeek() == 4) || (Friday914 && DayOfWeek() == 5) || (false && DayOfWeek() == 6) || (false && DayOfWeek() == 0))
{
HoursFilter916();
HoursFilter915();
}
}

void HoursFilter916()
{
int datetime800 = TimeLocal();
int hour0 = TimeHour(datetime800);
if ((HoursFrom916 < HoursTo916 && hour0 >= HoursFrom916 && hour0 < HoursTo916) ||
(HoursFrom916 > HoursTo916 && (hour0 < HoursTo916 || hour0 >= HoursFrom916)))
{
}
}

void HoursFilter915()
{
int datetime800 = TimeLocal();
int hour0 = TimeHour(datetime800);
if ((HoursFrom915 < HoursTo915 && hour0 >= HoursFrom915 && hour0 < HoursTo915) ||
(HoursFrom915 > HoursTo915 && (hour0 < HoursTo915 || hour0 >= HoursFrom915)))
{
}
}

void WeekdayFilter921()
{
if ((Monday921 && DayOfWeek() == 1) || (Tuesday921 && DayOfWeek() == 2) || (Wednesday921 && DayOfWeek() == 3) ||
(Thursday921 && DayOfWeek() == 4) || (Friday921 && DayOfWeek() == 5) || (false && DayOfWeek() == 6) || (false && DayOfWeek() == 0))
{
HoursFilter920();
HoursFilter919();
}
}

void HoursFilter920()
{
int datetime800 = TimeLocal();
int hour0 = TimeHour(datetime800);
if ((HoursFrom920 < HoursTo920 && hour0 >= HoursFrom920 && hour0 < HoursTo920) ||
(HoursFrom920 > HoursTo920 && (hour0 < HoursTo920 || hour0 >= HoursFrom920)))
{
}
}

void HoursFilter919()
{
int datetime800 = TimeLocal();
int hour0 = TimeHour(datetime800);
if ((HoursFrom919 < HoursTo919 && hour0 >= HoursFrom919 && hour0 < HoursTo919) ||
(HoursFrom919 > HoursTo919 && (hour0 < HoursTo919 || hour0 >= HoursFrom919)))
{
}
}

//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(Symbol1!=""){OpenPos(Symbol1);//Spread(Symbol1) //ClosePos(Symbol1);
}
if(Symbol2!=""){OpenPos(Symbol2); //ClosePos(Symbol2);
}
if(Symbol3!=""){OpenPos(Symbol3); //ClosePos(Symbol3);
}
if(Symbol4!=""){OpenPos(Symbol4); //ClosePos(Symbol4);
}
if(Symbol5!=""){OpenPos(Symbol5); //ClosePos(Symbol5);
}
if(Symbol6!=""){OpenPos(Symbol6);// ClosePos(Symbol6);
}
if(Symbol7!=""){OpenPos(Symbol7);// ClosePos(Symbol7);
}
if(Symbol8!=""){OpenPos(Symbol8); //ClosePos(Symbol8);
}
if(Symbol9!=""){OpenPos(Symbol9); //ClosePos(Symbol9);
}
if(Symbol10!=""){OpenPos(Symbol10);// ClosePos(Symbol10);
}
if(Symbol11!=""){OpenPos(Symbol11); //ClosePos(Symbol11);
}
if(Symbol12!=""){OpenPos(Symbol12); //ClosePos(Symbol12);
}
if(Symbol13!=""){OpenPos(Symbol13); //ClosePos(Symbol13);
}
if(Symbol14!=""){OpenPos(Symbol14); //ClosePos(Symbol14);
}
if(Symbol15!=""){OpenPos(Symbol15); //ClosePos(Symbol15);
}
if(Symbol16!=""){OpenPos(Symbol16); //ClosePos(Symbol16);
}
if(Symbol17!=""){OpenPos(Symbol17);// ClosePos(Symbol17);
}
if(Symbol18!=""){OpenPos(Symbol18); //ClosePos(Symbol18);
}
if(Symbol19!=""){OpenPos(Symbol19); //ClosePos(Symbol19);
}
if(Symbol20!=""){OpenPos(Symbol20); //ClosePos(Symbol20);
}
if(Symbol21!=""){OpenPos(Symbol21);// ClosePos(Symbol21);
}
if(Symbol22!=""){OpenPos(Symbol22); //ClosePos(Symbol22);
}
if(Symbol23!=""){OpenPos(Symbol23);// ClosePos(Symbol23);
}
if(Symbol24!=""){OpenPos(Symbol24);// ClosePos(Symbol24);
}
if(Symbol25!=""){OpenPos(Symbol25); //ClosePos(Symbol25);
}
if(Symbol26!=""){OpenPos(Symbol26); //ClosePos(Symbol26);
}
if(Symbol27!=""){OpenPos(Symbol27);// ClosePos(Symbol27);
}
if(Symbol28!=""){OpenPos(Symbol28); //ClosePos(Symbol28);
}
if(Symbol29!=""){OpenPos(Symbol29); //ClosePos(Symbol29);
}
if(Symbol30!=""){OpenPos(Symbol30); //ClosePos(Symbol30);
}
if(Symbol31!=""){OpenPos(Symbol31); //ClosePos(Symbol31);
}
if(Symbol32!=""){OpenPos(Symbol32); //ClosePos(Symbol32);
}
if(Symbol33!=""){OpenPos(Symbol33); //ClosePos(Symbol33);
}
if(Symbol34!=""){OpenPos(Symbol34); //ClosePos(Symbol34);
}
if(Symbol35!=""){OpenPos(Symbol35);// ClosePos(Symbol35);
}
if(Symbol36!=""){OpenPos(Symbol36); //ClosePos(Symbol36);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

void PutOrder(int type,double price,string symb)

{
int r=0,d=0;
color clr=Green;
double pp=0;// sl=0,tp=0,

pp= MarketInfo(symb,MODE_POINT);
d =(int)MarketInfo(symb,MODE_DIGITS);
Spread=MarketInfo(symb, 1);

if(type==1 || type==3 || type==5)
{
clr=Red;
if(( (Bid-Spread+800*PipValue*Point)>= NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,9,0), NDigits)*PipValue)||((Bid+Spread+800*PipValue*Point)<=NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,5,0), NDigits)*PipValue))
{SL = NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,5,0), NDigits)*PipValue;
TP = NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,9,0), NDigits)*PipValue;
}
if(( (Bid-Spread+800*PipValue*Point)<= NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,9,0), NDigits)*PipValue)||((Bid+Spread+800*PipValue*Point)>=NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,5,0), NDigits)*PipValue))
{SL = NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,0,0), NDigits)*PipValue;
TP = NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,15,0), NDigits)*PipValue;
}
}

if(type==0 || type==2 || type==4)
{
clr=Blue;
if(( (Ask+Spread+800*PipValue*Point)<= NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,10,0), NDigits)*PipValue)||((Ask-Spread+800*PipValue*Point)>=NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,3,0), NDigits)*PipValue))
{ SL = NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,3,0), NDigits)*PipValue;
TP = NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,10,0), NDigits)*PipValue;
}
if(( (Ask+Spread+800*PipValue*Point) >=NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,10,0), NDigits)*PipValue)||((Ask-Spread+800*PipValue*Point)<=NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,3,0), NDigits)*PipValue))
{ SL = NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,1,0), NDigits)*PipValue;
TP = NormalizeDouble(iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,16,0), NDigits)*PipValue;
}
}

r=OrderSend(symb,type,Lots,NormalizeDouble(price,d),Slip, SL, TP,«Tma»,Magic,0,clr);
return;
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OpenPos(string symb)
{
double bid=0,ask=0;
double p =iCustom(symb, NULL, "+++Tma_Band_Separate",TMAPeriod,TmaDn,TmaUp,8,1);
double p1 =iCustom(symb, NULL, "+++Tma_Band_Separate",TMAPeriod,TmaDn,TmaUp,8,0);
double m = iCustom(symb, NULL, "+++Tma_Band_Separate",TMAPeriod,TmaDn,TmaUp,9,1);
double m1 = iCustom(symb, NULL, "+++Tma_Band_Separate",TMAPeriod,TmaDn,TmaUp,9,0);
double l = iCustom(symb, NULL, «vertex_mod_3.01 alerts + arrows»,levelOb,levelOs,extremelevelOb,extremelevelOs ,7,1);
double n = iCustom(symb, NULL, «vertex_mod_3.01 alerts + arrows»,levelOb,levelOs,extremelevelOb,extremelevelOs ,6,1);
double c =iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,15,0);//верх
double h =iCustom(symb, NULL, «Waddah Attar Weekly Fibo+»,16,0);//низ
if(CountTrades(symb)<1)
{
bid = MarketInfo(symb,MODE_BID);
ask = MarketInfo(symb,MODE_ASK);

//buy
if(p!= 1 && p1 == 1&&l!=4&& c >(Ask+Spread+800*PipValue*Point))
{
PutOrder(0,ask,symb);
}
//sell
if(m!= 1 && m1 == 1&&n!=4 && h < (Bid-Spread+800*PipValue*Point) )
{
PutOrder(1,bid,symb);
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
/*void ClosePos(string symb)
{
double bid=0,ask=0;

if(CountTrades(symb)>0)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==symb && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
if(n != 4&& n1==4 )
{
bid=MarketInfo(symb,MODE_BID);
if(!OrderClose(OrderTicket(),OrderLots(),bid,Slip,White))
Print(«OrderClose error »,GetLastError());
}
}
if(OrderType()==OP_SELL)
{
if(l != 4&& l1==4)
{
ask=MarketInfo(symb,MODE_ASK);
if(!OrderClose(OrderTicket(),OrderLots(),ask,Slip,White))
Print(«OrderClose error »,GetLastError());
}
}
}
}
}
return;
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
*/int CountTrades(string symb)
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==symb && OrderMagicNumber()==Magic)
{
if(OrderType()<2) count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
  • +2
  • Просмотров: 607
  • 3 января 2020, 10:04
  • sir
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!


Комментарии (0)


Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари