//+------------------------------------------------------------------+ //| FrBestExp02_3.mq4 | //| | //| _3 используем аллигатора | //+------------------------------------------------------------------+ #property copyright "" #property link "" extern double Lots = 1.00; extern int Stop_Loss = 1000; extern int Take_Profit = 1000; extern int Trailing_Stop = 0; // Only for M15 extern int fper=12,sper=26,sigper=9;// периоды индикатора OsMA extern int stop=300;// Уровень отсечки профита extern int hedg=1;// флаг разрешения хеджа extern double kh=10;// коэфф.хеджирования extern int lok;// флаг разрешения локирования позиции extern int rpr=1;// флаг определения просадки позы или по всему тесту extern int ttime=900;// Задержка выставления хедж-ордера на 1 свечу extern int hstop=-3000;// стоп-лосс для хеджа int cnt;// индекс цикла int sigs,sigb;// суммирующий сигнал на проведение операции купли-продажи double ssig,bsig;// сигналы на куплю-продажу от индикатора фракталов double osmanul,osmaone;// сигналы индикатора OsMA от нулевого и первого баров int s,b;// количество активных сэлл и бай ордеров int hml;// флаг закрытия позиции с минусовым профитом (закрывается позиция с меньшим лотом int pl;// флаг закрытия всех позиций по условию наличия установленного положительного профита double summa;// суммарный профит по всем позициям double mlot;// величина торгуемого лота double ssum,bsum;// профит по ордерам сэлл и бай раздельно double pr;// величинга просадки int hblok,shblok,bhblok;// флаг блокирования выставления хедж-ордера и флаги повторного запуска хедж-процедуры double DHMax,DLMin; bool ft=true; int rang; double pt; int nul;// переменные для вычисления поворотной точки при запуске и в 00.00 каждых суток int LastTradeTime; //--------------------------------------------------------------------------------------------------------------- //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ double FractalBest(int Dir) { double up,dw; if(High[3]>High[4] && High[3]>High[5] && High[3]>High[2] && High[3]>High[1]){ up=Low[0]-3*Point; } else{ up=0; } if(Low[3]Low[cnt])DLMin=Low[cnt]; } pt=(DHMax+DLMin+Close[nul])/3;//поворотная точка ft=false; } //---------------------------------------------------------------------------------------------------------------- if(CurTime()-LastTradeTime<20)return(0); //----------------------------Определения общего и позиционного профита, а такжеподсчёт позиций------------------- s=0;b=0;summa=0;bsum=0;ssum=0; for(cnt=0;cnt0 && hedg==1){ for(cnt=0;cnt0){ if(Bid-OrderOpenPrice()>Point*Trailing_Stop){ if(OrderStopLoss()Point*Trailing_Stop){ if(OrderStopLoss()>Ask+Point*Trailing_Stop){ OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*Trailing_Stop,OrderTakeProfit(),0,Red); return(0); } } } } } //---------------------------------------------------Выставление хедж-ордера-------------------------------------- if(hblok==1){ shblok=0;bhblok=0; for(cnt=0;cnt=150 || bsum<-300){ OrderSend(Symbol(),OP_SELL,kh*mlot,Bid,5,Bid+Stop_Loss*Point,Bid-Take_Profit*Point,NULL,0,0,Aqua); //SetArrow(Time[0],H+5*Point,159,Aqua); hblok=1; return(0); } if(bsum>=150 || ssum<-300){ OrderSend(Symbol(),OP_BUY,kh*mlot,Ask,5,Ask-Stop_Loss*Point,Ask+Take_Profit*Point,NULL,0,0,Red); //SetArrow(Time[0],L-5*Point,159,Red); hblok=1; return(0); } } //------------------------------------------Вычисление просадки в процессе торгов------------------------------ if(s+b==0 && rpr==0)pr=0; if(pr>summa && summa<0)pr=MathRound(summa); //-----------------------------------Определение основного сигнала и сигналов индикаторов------------------------ // bsig=iCustom(NULL,0,"FractalBest",0,0); // ssig=iCustom(NULL,0,"FractalBest",1,0); bsig=FractalBest(0); ssig=FractalBest(1); osmanul=iOsMA(NULL,0,fper,sper,sigper,PRICE_CLOSE,0); osmaone=iOsMA(NULL,0,fper,sper,sigper,PRICE_CLOSE,1); double alf=iAlligator(NULL,0,13,8,8,5,5,3,0,0,MODE_GATORTEETH,0); double alm=iAlligator(NULL,0,13,8,8,5,5,3,0,0,MODE_GATORLIPS,0); double als=iAlligator(NULL,0,13,8,8,5,5,3,0,0,MODE_GATORJAW,0); if(ssig>1 && alfVolume[2] && osmaone>osmanul && osmaone<=0 && osmanul<0 && Close[0]>pt){ sigs=1; } else{ sigs=0; } if(bsig>1 && alf>alm && alm>als && Volume[1]>Volume[2] && osmaone=0 && osmanul>0 && Close[0]