/*[[ Name := MurrayMath Author := Copyright c 2005, FAB4X Link := ENTRY PRICES ARE CALCULATED ONLY FROM START OF 00GMT TILL CLOSE OF 23GMT. Notes := Lots := 1 Stop Loss := 40 Take Profit := 0 Trailing Stop := 0 ]]*/ defines: Slippage(5),startHourOfDay(0),endofDAY(23),StopYear(2005),StopMonth(1); var: i(0),lotsi(0),p1(0),p2(0),orders(0),openedBuy(0),openedSell(0); VAR: Pivot(0),MYPIVOTB(0),MYPIVOTS(0); var: yesterday_open(0); var: yesterday_high(0); var: yesterday_low(0); var: yesterday_close(0),b(0),d(0); VAR: vtime(0); defines : beginer(24); defines : periodtotake(24); Var : shift(0); Var : sum(0); Var : v1(0); Var : v2(0); Var : fractal(0); Var : v45(0); Var : mml00(0); Var : mml0(0); Var : mml1(0); Var : mml2(0); Var : mml3(0); Var : mml4(0); Var : mml5(0); Var : mml6(0); Var : mml7(0); Var : mml8(0); Var : mml9(0); Var : mml98(0); Var : mml99(0); Var : range(0); Var : octave(0); Var : mn(0); Var : mx(0); Var : finalH(0); Var : finalL(0); Var : x1(0); Var : x2(0); Var : x3(0); Var : x4(0); Var : x5(0); Var : x6(0); Var : y1(0); Var : y2(0); Var : y3(0); Var : y4(0); Var : y5(0); Var : y6(0); if year < StopYear then exit; if month < StopMonth and year <> 2005 then exit; //Sorry, only works with H1 timeframe. //If Period <> 60 then Alert("DIMONX6 System only works on H1 timeframe.") Exit; //If (DayOfWeek <3 or DayOfWeek >5 ) then exit; orders=0; lotsi=Lots; For i=1 to TotalTrades { If Ord(i,Val_Symbol)=Symbol then { orders++; If Ord(i,VAL_TYPE)=OP_BUY then openedBuy=1; If Ord(i,VAL_TYPE)=OP_SELL then openedSell=1; }; }; if openedBuy=1 then for i=1 to TotalTrades { If Ord(i,Val_Symbol)=Symbol and Ord(i,VAL_TYPE)=OP_SELLLIMIT then { DeleteOrder(ord(i,VAL_TICKET),red); exit; }; }; if openedSell=1 then for i=1 to TotalTrades { If Ord(i,Val_Symbol)=Symbol and Ord(i,VAL_TYPE)=OP_BUYLIMIT then { DeleteOrder(ord(i,VAL_TICKET),red); exit; }; }; if Hour=endofDAY then { openedBuy=0; openedSell=0; for i=1 to TotalTrades { //close trades at the end of day If Ord(i,Val_Symbol)=Symbol and (Ord(i,VAL_TYPE)=OP_BUYSTOP or Ord(i,VAL_TYPE)=OP_SELLSTOP) OR (Ord(i,VAL_TYPE)=OP_BUYLIMIT or Ord(i,VAL_TYPE)=OP_SELLLIMIT) then { DeleteOrder(ord(i,VAL_TICKET),red); exit; }; If Ord(i,Val_Symbol)=Symbol and (Ord(i,VAL_TYPE)=OP_BUY or Ord(i,VAL_TYPE)=OP_SELL) then { CloseOrder(ord(i,VAL_TICKET),lots,ord(i,VAL_CLOSEPRICE),slippage,red); exit; }; }; }; //d=0; //If b-startHourOfDay>=0 then d=open[b-startHourOfDay]; //if TimeHour(time[0])=startHourOfDay and TimeHour(time[1])<>startHourOfDay then //new day //b=TimeHour(Time[0]); v1 = (L[lowest(MODE_LOW,beginer,periodtotake)]); //price H v2 = (H[highest(MODE_HIGH,beginer,periodtotake)]); //price L //determine fractal..... If v2 <= 250000 AND V2 > 25000 Then fractal = 100000 Else If v2 <= 25000 AND V2 > 2500 Then fractal = 10000 Else If v2 <= 2500 AND V2 > 250 Then fractal = 1000 Else If v2 <= 250 AND V2 > 25 Then fractal = 100 Else If v2 <= 25 AND V2 > 12.5 Then fractal = 12.5 Else If v2 <= 12.5 AND V2 > 6.25 Then fractal = 12.5 Else If v2 <= 6.25 AND V2 > 3.125 Then fractal = 6.25 Else If v2 <= 3.125 AND V2 > 1.5625 Then fractal = 3.125 Else If v2 <= 1.5625 AND V2 > 0.390625 Then fractal = 1.5625 Else If v2 <= 0.390625 AND V2 > 0 Then fractal = 0.1953125; range = (v2 - v1); sum = Floor(log(fractal / range) / log(2)); octave = fractal * (pow(0.5,sum)); mn = Floor(v1 / octave) * octave; If (mn + octave) > v2 Then mx = mn + octave Else mx = mn + (2 * octave); // calculating xx If (v1 >= 3 / 16 * (mx - mn) + mn) and (v2 <= 9 / 16 * (mx - mn) + mn) Then x2 = mn + (mx - mn) / 2 Else x2 = 0; //x2 If (v1 >= mn - (mx - mn) / 8) and (v2 <= 5 / 8 * (mx - mn) + mn) and x2 = 0 Then x1 = mn + (mx - mn) / 2 Else x1 = 0; //x1 If (v1 >= mn + 7 * (mx - mn) / 16) and (v2 <= 13 / 16 * (mx - mn) + mn) Then x4 = mn + 3 * (mx - mn) / 4 Else x4 = 0; //x4 If (v1 >= mn + 3 * (mx - mn) / 8) and (v2 <= 9 / 8 * (mx - mn) + mn) and x4 = 0 Then x5 = mx Else x5 = 0; //x5 If (v1 >= mn + (mx - mn) / 8) & (v2 <= 7 / 8 * (mx - mn) + mn) & x1 = 0 & x2 = 0 & x4 = 0 & x5 = 0 Then x3 = mn + 3 * (mx - mn)/4 Else x3 = 0; //x3 If x1 + x2 + x3 + x4 + x5 = 0 Then x6 = mx Else x6 = 0; //x6 finalH = x1 + x2 + x3 + x4 + x5 + x6; // calculating yy If x1 > 0 Then y1 = mn Else y1 = 0; //y1 If x2 > 0 Then y2 = mn + (mx - mn) / 4 Else y2 = 0; //y2 If x3 > 0 Then y3 = mn + (mx - mn) / 4 Else y3 = 0; //y3 If x4 > 0 Then y4 = mn + (mx - mn) / 2 Else y4 = 0; //y4 If x5 > 0 Then y5 = mn + (mx - mn) / 2 Else y5 =0 ; //y5 If finalH > 0 and (y1 + y2 + y3 + y4 + y5 = 0) Then y6 = mn Else y6 = 0; //y6 finalL = y1 + y2 + y3 + y4 + y5 + y6; v45 = (finalH - finalL) / 8; mml00 = (finalL - v45 * 2); //-2/8 mml0 = (finalL - v45); //-1/8 mml1 = (finalL); // 0/8 mml2 = (finalL + v45); // 1/8 mml3 = (finalL + 2 * v45); // 2/8 mml4 = (finalL + 3 * v45); // 3/8 mml5 = (finalL + 4 * v45); // 4/8 mml6 = (finalL + 5 * v45); // 5/8 mml7 = (finalL + 6 * v45); // 6/8 mml8 = (finalL + 7 * v45); // 7/8 mml9 = (finalL + 8 * v45); // 8/8 mml99 = (finalL + 9 * v45); //+1/8 mml98 = (finalL + 10 * v45); //+2/8 comment(" PLACE A BUYSTOP ORDER AT ", mml1 ," PLACE A SELLSTOP ORDER AT " , mml9); IF open < mml1 THEN { if vTime != Time[0] then { If hour > 0 and orders<1 and openedBuy=0 then { openedBuy=2; SetOrder(OP_BUYSTOP,lotsi,mml1,Slippage,mml1-StopLoss*Point,mml5,blue); vTime = Time[0]; exit; }; }; }; IF open > mml1 THEN { if vTime != Time[0] then { If hour > 0 and orders<1 and openedBuy=0 then { openedBuy=2; SetOrder(OP_BUYlimit,lotsi,mml1,Slippage,mml1-StopLoss*Point,mml5,blue); vTime = Time[0]; exit; }; }; }; IF open > mml9 THEN { if vTime != Time[0] then { If hour >0 and orders<1 and openedSell=0 then { openedSell=2; SetOrder(OP_SELLSTOP,lotsi,mml9,Slippage,mml9+StopLoss*Point,mml5,RED); vTime = Time[0]; exit; }; }; };//}; IF OPEN < mml9 THEN { if vTime != Time[0] then { If hour > 0 and orders<1 and openedSell=0 then { openedSell=2; SetOrder(OP_SELLLIMIT,lotsi,mml9,Slippage,mml9+StopLoss*Point,mml5,RED); vTime = Time[0]; exit; }; }; };