#property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict int decalage=1; double profit=500; double perte=10; double depassement=+5; double securite=15; double protect=10; int risk=5; int suiveur=5; int niveausuiveur=15; int niveaupartiel=20; int taillemax=5000; double spreadmax=19; string Heure_Debut="09"; string Minute_Debut="00"; string Heure_Fin="22"; string Minute_Fin="58"; bool Lundi=True; bool Mardi=True; bool Mercredi=True; bool Jeudi=True; bool Vendredi=True; int nummagic=1111,jmax; string nomordre="Support-Resist-Dax-1H-1111"; double pics[200],haut,hautf,basf,bas,taille,taille1,taille2; int qte=0,j,aa,vv,flag,numorder,jourok; string heure_en_cours; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() {return(INIT_SUCCEEDED);} //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) {} //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Tests Jours et Horaires de Travail //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if ((DayOfWeek()==1 && Lundi==True)||(DayOfWeek()==2 && Mardi==True)||(DayOfWeek()==3 && Mercredi==True)||(DayOfWeek()==4 && Jeudi==True)||(DayOfWeek()==5 && Vendredi==True)) { jourok=1;} else { jourok=0;} if (Minute()<10) {heure_en_cours=IntegerToString(TimeHour(Time[0]))+"0"+IntegerToString(Minute());} else {heure_en_cours=IntegerToString(TimeHour(Time[0]))+IntegerToString(Minute());} if (((StringToInteger(heure_en_cours)>=StringToInteger(Heure_Debut+Minute_Debut)) && (StringToInteger(heure_en_cours)=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if ((OrderMagicNumber()==nummagic)&&((OrderOpenPrice()>(haut+depassement+(spreadmax/20))&&OrderOpenPrice()>bas)||(OrderOpenPrice()taillemax) {taille=taillemax;} qte=(int)(taille/100); taille=taille-qte*100; //------------------------------------------------------------------------------------ // Passage d'ordres //------------------------------------------------------------------------------------ aa=0; vv=0; for (int i=OrdersTotal()-1;i>=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if ((OrderMagicNumber()==nummagic)&&((OrderType()==OP_BUY)||(OrderType()==OP_BUYSTOP))) {aa=aa+1;}}} for (int i=OrdersTotal()-1;i>=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if ((OrderMagicNumber()==nummagic)&&((OrderType()==OP_SELL)||(OrderType()==OP_SELLSTOP))) {vv=vv+1;}}} if (((hautf!=haut)||(basf!=bas))&&((aa==0)||(vv==0))) { hautf=haut; basf=bas; for (int i=OrdersTotal()-1;i>=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if (OrderMagicNumber()==nummagic){numorder=OrderDelete(numorder,clrNONE);}}} for (int i=qte;i>=1;i--) {numorder=OrderSend(NULL,OP_BUYSTOP,100,haut+depassement,0,haut+depassement-perte,haut+depassement+profit,nomordre,nummagic,0,Green); numorder=OrderSend(NULL,OP_SELLSTOP,100,bas-depassement,0,bas-depassement+perte,bas-depassement-profit,nomordre,nummagic,0,Red);} numorder=OrderSend(NULL,OP_BUYSTOP,taille,haut+depassement,0,haut+depassement-perte,haut+depassement+profit,nomordre,nummagic,0,Green); numorder=OrderSend(NULL,OP_SELLSTOP,taille,bas-depassement,0,bas-depassement+perte,bas-depassement-profit,nomordre,nummagic,0,Red);} //------------------------------------------------------------------------------------ // Sécurisation par déplacement de stop //------------------------------------------------------------------------------------ for (int i=OrdersTotal()-1;i>=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if ((OrderMagicNumber()==nummagic && OrderProfit()>0)&&(OrderStopLoss()(OrderOpenPrice()+securite)&& (OrderOpenPrice()>OrderStopLoss())) {numorder=OrderModify(numorder,OrderOpenPrice(),OrderOpenPrice()+protect,OrderTakeProfit(),0,Green);}}} for (int i=OrdersTotal()-1;i>=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if ((OrderMagicNumber()==nummagic) && (OrderProfit()>0)&&(OrderStopLoss()>OrderTakeProfit())&& Ask<(OrderOpenPrice()-securite)&& (OrderOpenPrice()=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if ((OrderMagicNumber()==nummagic && OrderProfit()>0)&&(OrderStopLoss()(OrderOpenPrice()+niveausuiveur)&& (Bid-suiveur)>OrderStopLoss()) {numorder=OrderModify(numorder,OrderOpenPrice(),Bid-suiveur,OrderTakeProfit(),0,Green);}}} for (int i=OrdersTotal()-1;i>=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if ((OrderMagicNumber()==nummagic && OrderProfit()>0)&&(OrderStopLoss()>OrderTakeProfit())&& Ask<(OrderOpenPrice()-niveausuiveur)&& (Ask+suiveur)=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if ((OrderMagicNumber()==nummagic && OrderStopLoss()OrderOpenPrice()+niveaupartiel && OrderLots()==taille) {numorder=OrderClose(numorder,NormalizeDouble(taille/2,0),Ask,0,Green);} if ((OrderMagicNumber()==nummagic && OrderStopLoss()OrderOpenPrice()+niveaupartiel && OrderLots()==100) {numorder=OrderClose(numorder,NormalizeDouble(50,0),Ask,0,Green);}}} for (int i=OrdersTotal()-1;i>=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if ((OrderMagicNumber()==nummagic && OrderStopLoss()>OrderTakeProfit())&&AskOrderTakeProfit())&&Ask=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {numorder=OrderTicket(); if (OrderMagicNumber()==nummagic) {numorder=OrderDelete(numorder,clrNONE); hautf=0; basf=0;}}}} }