/*[[ Name := EnterIndicatorExp Author := Copyright © 2005, HomtSoft Corp. Link := spiky@sinet,spb.ru Lots := 0.1 Stop Loss := 1000 Take Profit := 150 Trailing Stop := 0 ]]*/ Defines : per(21),d(3),depth(12),deviation(5),backstep(3),mgod(2005),porog(300),test(1),imps(30),impb(-30),k1(30),k2(60); Vars : j(0),cnt(0),ZZ2(0),ZZ3(0),cci0(0),cci1(0),ssig(0),bsig(0),nimp(0),b(0),wpr0(0),wpr1(0),bsb(0); Vars : sbo(0),summa(0),bloks(0),blokb(0),down(0),imp(0),pm(0),mlot(0),s(0),blok(1),ZZ0(0),ssum(0),bsum(0); //---------------------------------------------------------------------------------------------------------------------// // per - период всех индикаторов // // d - количество полных периодов при расчёте // // depth,deviation,backstep - параметры индикатора ЗигЗаг // // mgod - год тестирования // // porog - величина отсекаемого тейк-профита при закрытии всех позиций // // test - флаг вывода текущей информации - при 1 выводится в журнал // // imps - пороговое значение положительной волны импульса цены для формирования сигнала на продажу // // impb - пороговое значение отрицательной волны импульса цены для формирования сигнала на покупку // // k1 & k2 - множители для определения величин лотов хедж-ордеров первого и второго уровня. k2/k1=2 - обязательно // //---------------------------------------------------------------------------------------------------------------------// if mgod!=year then exit; if sbo==0 and Balance=FreeMargin and Balance<2000 then Begin Comment("ДЛЯ НОРМАЛЬНОЙ РАБОТЫ УВЕЛИЧЬТЕ ВАШ ДЕПОЗИТ ДО МИНИМАЛЬНОГО РАЗМЕРА В 5000$");exit;end; j=j+1; if j=100 then j=0; imp=iCustom("DayImpuls",per,d,MODE_FIRST,1); nimp=iCustom("DayImpuls",per,d,MODE_FIRST,0); ZZ3=iCustom("Zigzag",depth,deviation,backstep,MODE_FIRST,1); ZZ2=iCustom("Zigzag",depth,deviation,backstep,MODE_FIRST,0); cci1=iCCI(per,1);cci0=iCCI(per,0); wpr1=iWPR(per,1);wpr0=iWPR(per,0); /* if (ZZ3!=0 or ZZ2!=0) and cci0150 and nimp>=imps and imp>nimp then Begin SetArrow(Time[0],H[0]+5*point,242,GreenYellow);ssig=1; Comment("ZZ0=",round(ZZ2)," ZZ1=",round(ZZ3)," CCI0=",round(cci0)," Impuls=",round(nimp), "\n","Если луч iZigZag направлен вверх - продай меня прямо сейчас");end;*/ if (ZZ3!=0 or ZZ2!=0) and ((cci050 and cci0>30 and nimp<0 and imp>0) or (cci0>200 and cci1>cci0 and nimp>100 and imp>nimp)) then Begin SetArrow(Time[0],H[0]+5*point,242,GreenYellow);ssig=1; Comment("ZZ0=",round(ZZ2)," ZZ1=",round(ZZ3)," CCI0=",round(cci0)," Impuls=",round(nimp)," Ssig=",ssig, "\n","Если луч iZigZag направлен вверх - продай меня прямо сейчас");end; /* if (ZZ3!=0 or ZZ2!=0) and cci0>cci1 and cci1<-150 and nimp<=impb and nimp>imp then Begin SetArrow(Time[0],L[0]-5*point,241,Gold);bsig=1; Comment("ZZ0=",round(ZZ2)," ZZ1=",round(ZZ3)," CCI1=",round(cci1)," CCI0=",round(cci0)," Impuls=",round(imp), "\n","Если луч iZigZag направлен вниз - купи меня прямо сейчас");end;*/ if (ZZ3!=0 or ZZ2!=0) and ((cci0>cci1 and cci1<-50 and cci0<-30 and nimp>0 and imp<0) or (cci0<-200 and cci1=impb) then Begin ssig=0;bsig=0; Comment("ZZ0=",round(ZZ2)," ZZ1=",round(ZZ3)," CCI1=",round(cci1)," CCI0=",round(cci0)," Impuls=",round(imp), " СИГНАЛ НА ПРОВЕДЕНИЕ СДЕЛКИ ОТСУТСТВУЕТ");end;*/ if (ZZ2=0 and ZZ3=0) or sbo!=0 or (imp>imps and imp30 and cci0>150 and nimp>50 and imp>nimp then Begin mlot=k1*lots; Setorder(OP_SELL,mlot,PriceBid,3,Bid+StopLoss*point,Bid-TakeProfit*point,Gold);bsb=0;blok=1;exit;end; if s=1 and summa>0 and cci0<-150 and nimp<-50 and imp150 and nimp>50 and imp>nimp then Begin mlot=k1*lots; // Setorder(OP_SELL,mlot,PriceBid,3,Bid+StopLoss*point,Bid-TakeProfit*point,Gold);bsb=0;blok=1;exit;end; if b=1 and summa>30 and cci0<-150 and nimp<-50 and imp0 and cci0>150 and nimp>50 and imp>nimp then Begin mlot=k1*lots; Setorder(OP_SELL,mlot,PriceBid,3,Bid+StopLoss*point,Bid-TakeProfit*point,Gold);bsb=0;blok=1;exit;end; if b=1 and summa<-30 and cci0>150 and nimp>50 and imp>nimp then Begin mlot=k1*lots; Setorder(OP_SELL,mlot,PriceBid,3,Bid+StopLoss*point,Bid-TakeProfit*point,Gold);bsb=0;blok=1;exit;end; //if b=1 and summa<-30 and cci0<-150 and nimp<-50 and impssum and cci0>150 and nimp>50 then Begin mlot=k2*lots; Setorder(OP_SELL,mlot,PriceBid,3,Bid+StopLoss*point,Bid-TakeProfit*point,Gold);bsb=1;exit;end; if ((s=1 and b=1) or s=2 or (s=1 and b=0)) and ssum<0 and bsumsumma then down=(round(summa)); if test=1 then Begin Print ("Data: ",year,".",month,".",day," Time ",hour,":",minute,":",Seconds," Bloks=",bloks," Blokb=",blokb, " Blok=",blok," ZZ0=",round(ZZ2)," ZZ1=",round(ZZ3)," CCI0=",round(cci0)," Imp=",round(nimp), " Prof=",round(summa)," DDown=",round(down/50)," BSB=",bsb);if j<=2 then Comment(" ");end else Begin Comment ("Data: ",year,".",month,".",day," Time ",hour,":",minute,":",Seconds," Bloks=",bloks," Blokb=",blokb, " Blok=",blok," ZZ0=",round(ZZ2)," ZZ1=",round(ZZ3)," CCI0=",round(cci0)," Imp=",round(nimp), " Prof=",round(summa)," DDown=",round(down/50));end; If CurTime-LastTradeTime<15 then exit; if summa>porog then pm=1; if pm==1 then Begin for cnt=1 to TotalTrades Begin if (OrderValue(cnt,VAL_TYPE)=OP_SELL and OrderValue(cnt,VAL_SYMBOL)=Symbol) then Begin CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Ask,5,Red);exit;end; if (OrderValue(cnt,VAL_TYPE)=OP_BUY and OrderValue(cnt,VAL_SYMBOL)=Symbol) then Begin CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,5,Red);exit;end;end;end; if FreeMargin>=2000 and sbo==0 and (Minute=14 or Minute=29 or Minute=44 or Minute=59) and Seconds>=45 then Begin mlot=lots; if ssig=1 and bloks=0 then Begin Setorder(OP_SELL,lots,PriceBid,3,Bid+StopLoss*point,Bid-TakeProfit*point,Gold);blokb=1;bsb=1;blok=0;exit;end; if bsig=1 and blokb=0 then Begin Setorder(OP_BUY,lots,PriceAsk,3,Ask-StopLoss*point,Ask+TakeProfit*point,Gold);bloks=1;bsb=1;blok=0;exit;end;end;