//+------------------------------------------------------------------+ //| //| Copyright © 2009, Щербак Алексей. | //| http://www.metaquotes.net | //-----------------------------------------------------------------+ #property copyright "Copyright © 2009, Щербак Алексей." #property link "http://www.metaquotes.net" extern double porogadx =58;//открытие ордера extern double porogadx4=31;//открытие ордера extern double porogadx1=49;//закрытие ордера extern double porogadx2=99;//закрытие ордера extern double porogadx3=17;//триггер ордера extern double porog5 =17;// extern int stop=1283;//стоп лос extern int profit=1231;//профит extern double lot=0.01; double openord,macdd,taimsign,neotkr,perewor,quw1,dlit,adxh4; double pribs,diwer2,diwer3,diwer4,maxopenord,minopenord,smaxopenord,sminopenord; double maxrsi4,kolsel,kolbuy,prom,prom1; double ordst,ordst1,ordst2,pribys,cen1,cen2,cen3,wers,tim; int ticket,x,y,kols,trigigrn,trigigrw,colory,sqtaimregr,tiketmin,tiketminbuy,tiketminsel,stox,stox1,ster,signw,alsw,sign,signn,alsn,tol; double rabstop,urotkr,rabprof,vol,volm,korsel,korbuy,adx5,volmax,prof1,prof2; double orderstar,maksprof,otstup1,porog,zentr,adx,adxw,adxn,adx1,adxw1,adxn1,adx2,adxw2,adxn2,adx3,adxw3,adxn3,adx4,adxn4,adxw4; //__________инициализация int init() {if(OrdersTotal( )!=0){OrderSelect(0,SELECT_BY_POS);tim=NormalizeDouble((TimeCurrent( )-OrderOpenTime( ))/900,0); wers=iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,0,tim); for(y=tim;y>0;y--) {adx =iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,0,y); if (MathAbs(wers-adx)>=porogadx3){wers=0;}} Alert("Обнаружен открытый ордер . время открытия =",TimeDay(OrderOpenTime( )), " ",TimeHour(OrderOpenTime( )),",",TimeMinute(OrderOpenTime( )),",",TimeSeconds(OrderOpenTime( ))," wers=",wers); // нормализуем ордер под наши стопы if (OrderType( )==OP_BUY ) {colory=Blue; OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-stop*Point,Digits),NormalizeDouble(OrderOpenPrice()+profit*Point,Digits),0,colory);} if (OrderType( )==OP_SELL ) {colory=Red; OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+stop*Point,Digits),NormalizeDouble(OrderOpenPrice()-profit*Point,Digits),0,colory);} }else{Alert("Открытый ОРдер не обнаружен");} return(0);} //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { // МАТЕМАТИЧЕСКИЙ БЛОК RefreshRates(); //Определение возможности входа adxh4 = iADX(NULL,PERIOD_H4,14,PRICE_CLOSE,0,0); adx =iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,0,0); adxw =iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,1,0); adxn =iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,2,0); adx1 =iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,0,1); adxw1=iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,1,1); adxn1=iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,2,1); adx2 =iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,0,2); adxw2=iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,1,2); adxn2=iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,2,2); adx3 =iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,0,3); adxw3=iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,1,3); adxn3=iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,2,3); adx4 =iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,0,4); adxw4=iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,1,4); adxn4=iADX(NULL,PERIOD_M15,14,PRICE_CLOSE,2,4); if (adx-porogadx4>0 && adx-porogadx<0 && adx1-adx<0 && adx2-adx1>0 && adx4-adx3>0 && adx3-adx2>0 && OrdersTotal( )==0){wers=adx; Print("прошло нормально");if(adxn-adxw>0 && adxh4-porog5>0){otkrniz ();} if(adxw-adxn>0 && adxh4-porog5>0){otkrverx();}} if (adx-porogadx4>0 && adx-porogadx<0 && adx1-adx>0 && adx2-adx1<0 && adx4-adx3<0 && adx3-adx2<0){ if(adxn-adxw>0){signw=1;alsw=0;}else{sign=0;Alert("длился ",TimeCurrent()-dlit," секунд wers=",MathAbs(wers-adx));tol=0;} if(adxw-adxn>0){signn=1;alsn=0;}else{sign=0;Alert("длился ",TimeCurrent()-dlit," секунд wers=",MathAbs(wers-adx));tol=0;}} if(signw==1 && alsw==0){Alert("Сигнал открытия вверх",Close[0]);alsw=1;dlit=TimeCurrent( );tol= 1;} if(signn==1 && alsn==0){Alert("Cигнал открытия вниз ",Close[0]);alsn=1;dlit=TimeCurrent( );tol=-1;} ObjectCreate ("wers", OBJ_TEXT, 0,iTime(NULL,PERIOD_M15,0),WindowPriceMax(0)-0.0045); ObjectSetText("wers",DoubleToStr(wers,0),20,"Times New Roman",Red);//ПЕЧАТАЕМ ВЕРС ObjectMove ("wers",0,iTime(NULL,PERIOD_M15,0),WindowPriceMax(0)-0.0045); if (MathAbs(wers-adx)>=porogadx3){wers=0;} if (OrdersTotal( )==0){wers=0;} // ДИСПЕТЧЕР ОРДЕРОВ if(!IsTesting() && !IsConnected()){return(0);}// возврат если нету связи //Print("ОТКРЫТО ",x," ОРДЕРОВ"); for(x=OrdersTotal( );x>0;x--) {if (OrdersTotal( )>0) {if (OrderSelect(x-1, SELECT_BY_POS,MODE_TRADES)==false) {continue;} if (OrderSymbol( )!=Symbol( )){ continue;} else { ticket=OrderTicket( );}} obrabotka(); } return(0);} void obrabotka(){ if (adx-porogadx2<0 && adx-porogadx1>0 && adx-adx1>0 && wers==0){ //Закроем открытые ордераwers if(OrderType( )==OP_SELL && adxn1-adxn>0) {colory=Red;OrderClose(ticket,OrderLots(),NormalizeDouble(Ask,Digits),3 ,colory);} if(OrderType( )==OP_BUY && adxw1-adxw>0) {colory=Blue;OrderClose(ticket,OrderLots(),NormalizeDouble(Bid,Digits),3 ,colory);}} return(0);} //подпрограмма открыватель ордера void otkrverx() {RefreshRates();colory=MediumBlue;ticket=OrderSend(Symbol(),OP_BUY,lot,NormalizeDouble(Ask,Digits),3,NormalizeDouble(Bid-stop*Point,Digits),NormalizeDouble(Ask+profit*Point,Digits),"My order #",16384,7,colory); Alert(ticket);analiz();} void otkrniz() {RefreshRates();colory=Red;ticket=OrderSend(Symbol(),OP_SELL,lot,NormalizeDouble(Bid,Digits),3,NormalizeDouble(Ask+stop*Point,Digits),NormalizeDouble(Bid-profit*Point,Digits),"My order #",16384,7,colory); Alert(ticket);analiz(); } void analiz() {if (ticket==-1) {Print("ошибка=",GetLastError());}}