//ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ// //Ø N7S_AO_194694_0.mq4 v.77.2012 Ø// //Ø Hunter by profit Ø// //Ø Balashiha S&N@yandex.ru Ø// //Ø Version Desember 20, 2007 Ø// //ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ// #property copyright "Copyright © 2007, Shooter777" #property link "S7N@mail.ru" #include <WinUser32.mqh> #include <stderror.mqh> #include <stdlib.mqh> //------------------------------------------------------------------// int HM_ALL = 2; // int Trade = 1; // //------------------------------------------------------------------// extern bool Trd_Up_X = true; int HM_Up_X = 1; // //------------------------------------------------------------------// extern double tpx = 50; extern double slx = 50; extern int px = 10; extern int x1 = 0;extern int x2 = 0;extern int x3 = 0;extern int x4 = 0;int tx = 0; //------------------------------------------------------------------// extern bool Trd_Dn_Y = true; int HM_Dn_Y = 1; // //------------------------------------------------------------------// extern double tpy = 50; extern double sly = 50;extern int py = 10; extern int y1 = 0;extern int y2 = 0;extern int y3 = 0;extern int y4 = 0; int ty = 0; //------------------------------------------------------------------// extern string Text0="BTS F=1"; extern int F = 1; extern int pz = 10; extern int z1 = 0; extern int z2 = 0; extern int z3 = 0; extern int z4 = 0; int tz = 0; //------------------------------------------------------------------// //------------------------------------------------------------------// extern string Text1="Neyro G=4";extern int G = 4; extern string Text2="XXXXXXXXXXXXX"; extern double tpX = 50;extern double slX = 50;extern int pX = 10; extern int X1 = 0;extern int X2 = 0;extern int X3 = 0;extern int X4 = 0;int tX = 0; //------------------------------------------------------------------// extern string Text3="YYYYYYYYYYYYY"; extern double tpY = 50; extern double slY = 50;extern int pY = 10; extern int Y1 = 0; extern int Y2 = 0; extern int Y3 = 0; extern int Y4 = 0; int tY = 0; //------------------------------------------------------------------// extern string Text4="ZZZZZZZZZZZZ";extern int pZ = 10; extern int Z1 = 0;extern int Z2 = 0;extern int Z3 = 0;extern int Z4 = 0;int tZ = 0; //------------------------------------------------------------------// double lots = 0.02; int mn;int mnx1 = 772012055;int mny1 = 772012155;int mnX1 = 772012011;int mnY1 = 772012111; static int prvtm = 0;static double sl = 10;static double tp = 10; bool cm15=false; bool cmH1=false; bool cmH4=false; int MMH1 ;int MN ; static int bu,sll; int i;int ticket = -1;int total;int spread; datetime LFB; double prcptx1=0,prcpty1=0,prcptX1=0,prcptY1=0,prcptZ1=0; static double Delta_G12 ; //+------------------------------------------------------------------+ //| expert init function | //+------------------------------------------------------------------+ int init(){MMH1 = Hour( );LFB = iTime(Symbol(), 0, 0); H1(); Delta_G12 = iAO(NULL, 240, 1)-iAO(NULL, 240, 2);} //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { total = OrdersTotal();spread = MarketInfo(Symbol(), MODE_SPREAD); int iTm = iTime(Symbol(), 0, 0);if(LFB == iTm) return(0); LFB = iTime(Symbol(), 0, 0); int MMM15 = MathMod(Minute( ) , 15); if(cm15) {if(MMM15 == 0 ) {cm15 =false; trl();}} if(MMM15 !=0){cm15=true;} if(Hour() != MMH1) {MMH1 = Hour( ); H1();} int MMH4 = MathMod(Hour( ) , 4); if(cmH4) {if(MMH4 == 0 ) {cmH4 =false; //Print ("H4"); double iCusAO_1 = iAO(NULL, 240, 1); double iCusAO_2 = iAO(NULL, 240, 2); Delta_G12 = iCusAO_1 -iCusAO_2;}} if(MMH4 !=0){cmH4=true;} startM1();} //+ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔ+ double BTS() { if (prcptrnz1() > 0 || F==0) {if (prcptx1 > 0 && Delta_G12>0) {sl = slx; tp = tpx*slx; mn= mnx1; return (1);}} if (prcptrnz1() < 0 || F==0) {if (prcpty1 > 0 && Delta_G12<0) {sl = sly; tp = tpy*sly; mn= mny1 ;return (-1);}} return (0);} //+--------------------------------------------------------------------------------------+ double prcptrnAC(int q1,int q2,int q3,int q4,int pr,int at) {double qw = ((q1-50)+((q2-50)*iA_C(pr)+(q3-50)*iA_C(2*pr)+(q4-50)*iA_C(3*pr))/iA_C(0)); if (MathAbs(qw)>at) return(qw);else return(0);} //+--------------------------------------------------------------------------------------+ double iA_C (int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));} //+--------------------------------------------------------------------------------------+ void BuSll ( int pl, int OrdTp, int mgnmb) // pl-èñòî÷íèê 0-äåéñòâóþùèå 1- çàêðûòûå // OrdTp=òèï îðäåðà 1-ðûíî÷íûå(0è1) 3-LIMIT(2è3) 5-STOP(4è5) { switch(pl) {case 0: bu=0; sll=0; int ChTpBu,ChTpSll; // Print (" OrdTp ",OrdTp); // âûáðàí ïîäñ÷åò B&S ðûíî÷íûõ îðäåðîâ switch(OrdTp) {case 1: ChTpBu=OP_BUY; ChTpSll =OP_SELL; break; case 3: ChTpBu=OP_BUYSTOP; ChTpSll =OP_SELLSTOP; break; case 5: ChTpBu=OP_BUYLIMIT;ChTpSll =OP_SELLLIMIT; break;} for(int i=0;i<OrdersTotal();i++) {OrderSelect(i, SELECT_BY_POS, MODE_TRADES); int OMN=OrderMagicNumber(); if(OrderType()==ChTpBu &&(OMN>=mgnmb && OMN<=mgnmb+99)){ bu++;} if(OrderType()==ChTpSll &&(OMN>=mgnmb+100 && OMN<=mgnmb+199)){sll++;} }break; case 1: int pstv=0, ngtv=0; // âûáðàí àíàëèç èñòîðèè Print ("Ïîäñ÷åò îðäåðîâ â èñòîðèè"); break;}} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ double prcptrnz1() {double qz =(z1-50)*(Close[0]-Open[pz])+(z2-50)*(Open[pz]-Open[pz*2]) +(z3-50)*(Open[pz*2]-Open[pz*3])+(z4-50)*(Open[pz*3]-Open[pz*4]);return(qz);} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void trl(){ total= OrdersTotal(); spread = MarketInfo(Symbol(), MODE_SPREAD); for( i = total - 1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); MN=OrderMagicNumber(); if(OrderSymbol() == Symbol() && MN>= 772012000 && MN<=772012199) { if (MN==772012055) {sl = slx; tp = tpx*slx; mn= mnx1;} if (MN==772012155) {sl = sly; tp = tpy*sly; mn= mny1;} if (MN==772012011) {sl = slX; tp = tpX*slX; mn= mnX1;} if (MN==772012111) {sl = slY; tp = tpY*slY; mn= mnY1;} int prevticket = OrderTicket();if(OrderType() == OP_BUY) {if(DayOfWeek( ) == 5 && Hour( ) >=22) { OrderClose(prevticket,OrderLots( ) ,Bid,3,Red);} if(Bid > (OrderStopLoss() + (sl * 2 + spread) * Point)) { if(BTS()< 0) { OrderClose(prevticket,OrderLots( ) ,Bid,3,Red);} else { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - sl * Point,0, 0, Blue);}}} else {if(DayOfWeek( ) == 5 && Hour( ) >=22) { OrderClose(prevticket,OrderLots( ) ,Ask,3,Blue);} if(Ask < (OrderStopLoss() - (sl * 2 + spread) * Point)) {if(BTS() > 0) { OrderClose(prevticket,OrderLots( ) ,Ask,3,Blue);} else{ OrderModify(OrderTicket(), OrderOpenPrice(), Ask + sl * Point, 0, 0, Blue);}}} return(0);}}} //+ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ+ void startM1() {ticket = -1;RefreshRates(); if (total < HM_ALL) { BuSll (0,1,772012000); if( !(DayOfWeek( ) == 1 && Hour( ) <2) && !(DayOfWeek( ) == 5 && Hour( ) >=18)) {if (Trd_Up_X && VSR() > 0 && bu<HM_Up_X) { OrderSend(Symbol(), OP_BUY, lots, Ask, 1, Bid - sl * Point, Bid + tp * Point, WindowExpertName(), mn, 0, Blue); } if (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y) { OrderSend(Symbol(), OP_SELL, lots, Bid, 1, Ask + sl * Point, Ask - tp * Point, WindowExpertName(), mn, 0, Red); } }}} double VSR() { if(G==4){ if(prcptZ1>0){if(prcptX1>0){sl = slX; tp = tpX*slX; mn= mnX1;return ( 1);}} else {if(prcptY1>0){sl = slY; tp = tpY*slY; mn= mnY1;return (-1);}} return (BTS());} if(G==3){ if(prcptY1>0){sl = slY; tp = tpY*slY; mn= mnY1;return (-1);} else {return (BTS());}} if(G==2){ if(prcptX1>0){sl = slX; tp = tpX*slX; mn= mnX1;return ( 1);} else {return (BTS());}} if(G==9){ if(prcptX1>0 && bu<HM_Up_X){sl = slX; tp = tpX*slX; mn= mnX1;return ( 1);} if(prcptY1>0 && sll<HM_Dn_Y){sl = slY; tp = tpY*slY; mn= mnY1;return (-1);} return (BTS());} return (BTS());} void H1() { prcptx1 = prcptrnAC(x1,x2,x3,x4,px,tx) ; prcpty1 = prcptrnAC(y1,y2,y3,y4,py,ty) ; prcptX1 = prcptrnAC(X1,X2,X3,X4,pX,tX) ; prcptY1 = prcptrnAC(Y1,Y2,Y3,Y4,pY,tY) ; prcptZ1 = prcptrnAC(Z1,Z2,Z3,Z4,pZ,tZ) ; }
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Series array that contains open prices of each bar
Indicator Curves created:
Indicators Used:
Bill Williams Awesome oscillator
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached
Other Features: