/*[[ Name := FaPI Author := Copyright © 2004, MetaQuotes Software Corp. Link := pilot@m-lan.ru Separate Window := NO First Color := Blue First Draw Type := Symbol First Symbol := 108 Use Second Data := Yes Second Color := Red Second Draw Type := Symbol Second Symbol := 108 ]]*/ Input: iPeriodWRP(14), iPeriodCCI(14), Risk_1_2_3(1), CountBars(100); Vars: iSTOmin(25), iSTOmax(75), iWPRmin(75), iWPRmax(25), iCCImax(75), iCCImin(75); VARS: vSTO_Main(0),vSTO_Signal(0),vWRP(0),vCCI(0); Var: shift(0), SignalSec(0); vars: cnt(0), timeout(0); Array: ArrayValue[10451](0); SetLoopCount(0); if CurTime-SignalSec < 10 then Exit; SignalSec = CurTime; ArrayValue[10451] = 0; if Risk_1_2_3<=1 then { iCCImax = 100; iCCImin = 100; iSTOmin = 25; iSTOmax = 75; iWPRmin = 75; iWPRmax = 25; }; if Risk_1_2_3==2 then { iCCImax = 50; iCCImin = 50; iSTOmin = 36; iSTOmax = 63; iWPRmin = 63; iWPRmax = 36; }; if Risk_1_2_3>=3 then { iCCImax = 0; iCCImin = 0; iSTOmin = 50; iSTOmax = 50; iWPRmin = 50; iWPRmax = 50; }; For shift=CountBars Downto 0 Begin ArrayValue[shift] = 0; vSTO_Main = iSTO(5,3,3,MODE_SMA,MODE_MAIN,shift); vSTO_Signal = iSTO(5,3,3,MODE_SMA,MODE_SIGNAL,shift); vWRP = iWPR(iPeriodWRP,shift); vCCI = iCCI(iPeriodCCI,shift); If vSTO_Main <= iSTOmin AND vSTO_Signal <= iSTOmin AND vWRP <= -iWPRmin AND vCCI <= -iCCImin Then ArrayValue[shift] = 1; If vSTO_Main >= iSTOmax AND vSTO_Signal >= iSTOmax AND vWRP >= -iWPRmax AND vCCI >= iCCImax Then ArrayValue[shift] = -1; if ArrayValue[shift+1] == 1 AND ArrayValue[shift] == 0 then { if shift == 0 then //для текущего бара { // Alert (Symbol, " ", Period, " CAN BUY at : ", Bid, " "); SetIndexValue(shift, Bid); timeout = CurTime; } if shift != 0 then SetIndexValue(shift, Open[shift]-point*8);//для других баров }; if ArrayValue[shift+1] == -1 AND ArrayValue[shift] == 0 then { if shift == 0 then //для текущего бара { // Alert(Symbol, " ", Period, " CAN Sell at : ", Ask, " "); SetIndexValue2(shift, Ask ); timeout = CurTime; } if shift != 0 then SetIndexValue2(shift, Open[shift]+point*8);//для других баров }; if ArrayValue[shift+1]==0 then {SetIndexValue2(shift, 0);SetIndexValue(shift, 0);}; End;