//+------------------------------------------------------------------+ //| DigiDon.mq4 | //| Last_Don | //| http://www.mql4.com/ru/users/Last_Don | //+------------------------------------------------------------------+ #property copyright "Last_Don" #property link "http://www.mql4.com/ru/users/Last_Don" //---- input parameters --------- extern int stopLOSS=80; extern int dif = 1480; extern double LOTs =0.1; //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ string s[6]={"_____"," AO "," ADX "," MFI "," MA "," Ichimoku "}; //---- other parameters --------- static int prevtime=0; int ticket=0;int x=1; int Magic_BUY =120;int Magic_SELL =220; //+---------- expert initialization function -------------+ int init(){ if(Digits == 5) x=10;MathSrand(GetTickCount());return(0);} // --- //+-------------expert start function------------------------------------+ int start() { if (Time[0] == prevtime) return(0); prevtime = Time[0]; if (!IsTradeAllowed()) { prevtime=Time[1]; Sleep(30000 + MathRand()); //--- формируем бар--- } //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ int n=Qn(Rand_10(MathRand()));int period_=Qp(n);int m=Rand_10(MathRand()); Trade( Magic_BUY,i_(n,period_,0),i_(n,period_,1),n,period_,m,stopLOSS);//--торги по лонгам n=Qn(Rand_10(MathRand())); period_=Qp(n); m=Rand_10(MathRand()); Trade(Magic_SELL,i_(n,period_,1),i_(n,period_,0),n,period_,m,stopLOSS);//--торги по шортам return(0); } //-----------выход из стартовой функции------------ //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ void Trade(int mn,double a,double aa,int n_,int per_,int m_,int step){ int total=OrdersTotal(); for (int i=0; i aa && Q(MathRand()) && OrdersTotal()==0 && IsTradeAllowed()) { //---вход в рынок --- if (mn<200) { ticket= OrderSend(Symbol(), OP_BUY,lot(),Ask,5*x,Bid-x*step*Point, Ask+(1.5+m_*0.1)*x*step*Point,DoubleToStr(mn,0),mn,0,Blue); dir="BUY"; } else { ticket= OrderSend(Symbol(),OP_SELL,lot(),Bid,5*x,Ask+x*step*Point, Bid-(1.5+m_*0.1)*x*step*Point,DoubleToStr(mn,0),mn,0, Red); dir="SELL"; } RefreshRates(); //---освежаем котиры if ( ticket > 0) Print(s[0]+s[n_]+s[0]+ToStr(per_)+s[0]+DoubleToStr(1.5+m_*0.1,1)+s[0]+dir+s[0]); if ( ticket < 0) { Sleep(30000); prevtime = Time[1]; } } //-- Exit --- return(0); } //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ double lot() { return(LOTs); } //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ string ToStr( int num) { if (num==1440) return ("D1"); return("W");} //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ int Rand_10(int l) { if(l>3000 && l< 3500) return(1); if(l> 6000 && l<6500) return(2); if(l>9000 && l< 9500) return(3); if(l>12000 && l<12500) return(4); if(l>15000 && l<15500) return(5); if(l>18000 && l<18500) return(6); if(l>21000 && l<21500) return(7); if(l>24000 && l<24500) return(8); if(l>27000 && l<27500) return(9); if(l>30000 && l<30500) return(10); return (Rand_10(MathRand())); //---рекурсия вычислений--- } //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ int Qn (int qx) { if(qx==1 || qx==6) return (1);if(qx==2 || qx==7) return (2); if(qx==3 || qx==8) return (3); if (qx==4 || qx==9) return (4); if (qx==5 || qx==10) return (5);} //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ int Qp (int qy) { if (qy==5 || qy==2) return (1440 ); return (10080); } //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ double i_(int in, int ip, int is ) { if (in==1) return (iAO(NULL,ip, is)); if (in==2) if (is==0) { return (iADX(NULL,ip,14,PRICE_TYPICAL,MODE_PLUSDI,0)); } else { return (iADX(NULL,ip,14,PRICE_TYPICAL,MODE_MINUSDI,0)); } if (in==3) return (iMFI(NULL,ip,14,is)); if (in==4) return (iMA(NULL,ip,8,3,MODE_SMA,PRICE_TYPICAL,is)); if (in==5) if (is==0) {return (iIchimoku(NULL, ip, 9, 26, 52, MODE_TENKANSEN, 0)); } else {return (iIchimoku(NULL, ip, 9, 26, 52, MODE_KIJUNSEN, 0)); } return (0); } //$$$$$$$$$$$$$$$$$$$$$$$$$$$ - рандомный механизм - $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ bool Q(int u) { if(u> 3000 && u< 4500-dif) return (true); if(u>6000 && u< 7500-dif) return (true); if(u> 9000 && u<10500-dif) return (true); if(u>12000 && u<13500-dif) return (true); if(u>15000 && u<16500-dif) return (true); if(u>18000 && u<19500-dif) return (true); if(u>21000 && u<22500-dif) return (true); if(u>24000 && u<25500-dif) return (true); if(u>27000 && u<28500-dif) return (true); if(u>30000 && u<31500-dif) return (true); return(false); //------ }