//+------------------------------------------------------------------+
//|                                                          wip.mq4 |
//|                              Copyright © 2007, fxid10t@yahoo.com |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, fxid10t@yahoo.com"
#property link      "http://www.metaquotes.net"
//internal variables
double sto15s,sto60s,sto240s,sto1440s,sto10080s,sto43200s;
double sto15m,sto60m,sto240m,sto1440m,sto10080m,sto43200m;
double rng,sum.rng,avg.rng;
string DR;
int ticket,cnt,total;
double profit;
int MagicNumber=9876543210;
extern double lots=0.01;
extern double min.profit=0.05;
datetime TimePrev;
string Ordercomment="";
color Color;
//--**--
int init()  {return(0);}
int deinit()   {return(0);}
int start() {  Pivot.Plot();
//stoch signal
sto15s = iStochastic(Symbol(),15,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
sto60s = iStochastic(Symbol(),60,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
sto240s = iStochastic(Symbol(),240,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
sto1440s = iStochastic(Symbol(),1440,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
/*
sto10080s = iStochastic(Symbol(),10080,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
sto43200s = iStochastic(Symbol(),43200,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);    */
//stoch main
sto15m = iStochastic(Symbol(),15,5,3,3,MODE_SMA,0,MODE_MAIN,0);
sto60m = iStochastic(Symbol(),60,5,3,3,MODE_SMA,0,MODE_MAIN,1);
sto240m = iStochastic(Symbol(),240,5,3,3,MODE_SMA,0,MODE_MAIN,1);
sto1440m = iStochastic(Symbol(),1440,5,3,3,MODE_SMA,0,MODE_MAIN,1);
/*
sto10080m = iStochastic(Symbol(),10080,5,3,3,MODE_SMA,0,MODE_MAIN,1);
sto43200m = iStochastic(Symbol(),43200,5,3,3,MODE_SMA,0,MODE_MAIN,1);      */
//
total=OrdersTotal();
if(total>0)  {
   for(cnt=0; cnt<OrdersTotal(); cnt++) {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
         profit=0;
         if(OrderType()==OP_BUY) {  profit=OrderProfit();
            if(OrderComment()=="Oversold Daily" && sto240s>=80.0000 && profit > min.profit &&
               sto15m > 80.0000)   {
               OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),Olive);
               return;   }
            if(OrderComment()=="Oversold 4hr" && sto60m>=80.0000 && profit > min.profit)    {
               OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),Olive);
               return;   }
            if(OrderComment()=="Oversold uptrend" && sto15s > 80.0000 && profit > min.profit)  { 
               OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),Olive);
               return;   }
            if(profit <= (-3.00/0.01)*lots) {
               OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),Olive);
               return;   }
            if(sto15m >= 75.000 && profit > min.profit && OrderComment()=="")  {
               OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),MintCream);
               return;   }
              }  }
         if(OrderType()==OP_SELL)   {  profit=OrderProfit();
            if(OrderComment()=="Overbought Daily" && sto240s<=20.0000 && profit > min.profit &&
               sto15m < 20.0000)   {
               OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),Violet);
               return;  }
            if(OrderComment()=="Overbought 4hr" && sto60m<=20.0000 && profit > min.profit)     {
               OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),Violet);
               return;  }
            if(OrderComment()=="Overbought downtrend" && sto15s < 20.0000 && profit > min.profit) {
               OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),Violet);
               return;  }
            if(profit <= (-3.00/0.01)*lots) {
               OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),Violet);
               return;  }             
            if(sto15m <= 25.000 && profit > min.profit && OrderComment()=="") {
               OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),MintCream);
               return;  }
              }  }  }
comments();
Ordercomment="";
Daily.Range();
if( Time[0] == TimePrev ) { return(0); }
//---- Yes we have a new bar ... set TimePrev & continue
TimePrev = Time[0] ;
if(sto15m==0   || sto15s==0   ||
   sto60m==0   || sto60s==0   ||
   sto240m==0  || sto240s==0  ||
   sto1440m==0 || sto1440s==0)   {return(0);}
if(sto1440s > 90.0000 && sto15m >80.0000)   {
   Ordercomment="Overbought Daily"; Color=Red; Sell();   }
if(sto1440s < 10.0000 && sto15m < 20.0000)   {
   Ordercomment="Oversold Daily"; Color=Blue; Buy();  }        
/*
if(sto240s > 90.0000 && sto60m > 80 && sto15m > 80.0000)   {
   Ordercomment="Overbought 4hr"; Color=Crimson; Sell(); }     sells to early
if(sto240s < 10.0000 && sto60m < 20 && sto15m < 20.0000)   {
   Ordercomment="Oversold 4hr"; Color=MediumBlue; Buy(); }     buys to early*/
if( sto1440m > 20.0000 &&/* sto240s  > 20.0000 &&
    (sto1440m < sto1440s) &&*/ (sto240m  < 75.0000)  && 
    sto60s > 80.0000 && sto15s > 80.0000)  {
   Ordercomment="Overbought downtrend"; Color=OrangeRed; Sell();  }
if( sto1440m < 80.0000 &&/* sto240s  < 80.0000 &&
    (sto1440m > sto1440s) &&*/ (sto240m  > 25.0000)  && 
    sto60s < 20.0000 && sto15s < 20.0000)  {
   Ordercomment="Oversold uptrend"; Color=RoyalBlue; Buy();   }
/*
if( sto15m > 80.0000 && sto60m > 80.0000)   {
   Ordercomment=""; Color=DeepPink; Sell();  }
if( sto15m < 20.0000 && sto60m < 20.0000)   {
   Ordercomment=""; Color=Lime; Buy(); }           */
// origional scripting
if( ((sto1440s < 80 && (sto1440m > sto1440s)) || sto1440m < 10) &&
  ( ((sto240s  < 80 && (sto240m  > sto240s))  || sto240m  < 10)  &&
     sto60s<20 && sto15s<20) ) {
//   buy...
   Ordercomment=""; Color=Lime; Buy(); }
   
if( ((sto1440s > 20 && (sto1440m < sto1440s)) || sto1440m > 90) &&
  ( ((sto240s  > 20 && (sto240m  < sto240s))  || sto240m  > 90)  &&
     sto60s>80 && sto15s>80)  ) {
//   sell...
   Ordercomment=""; Color=DeepPink; Sell();  }
return(0);}
//+------------------------------------------------------------------+
void Buy()  {
   ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,//Ask
                    MarketInfo(Symbol(),MODE_SPREAD),//slippage
                    0,//no stoploss defined
                    0,//no tp defined
                    Ordercomment,//comment
                    MagicNumber,
                    0,//time expire,
                    Color);
                    if(ticket>0)   {
                        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))  {Print(ticket);}
                        else Print("Error Opening BuyStop Order: ",GetLastError());
                    return(0);   }  }
void Sell() {
   ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,//Bid
                    MarketInfo(Symbol(),MODE_SPREAD),//slippage
                    0,//no stoploss set when stop order is executed
                    0,//no tp defined
                    Ordercomment,
                    MagicNumber,
                    0,//time expire,
                          Color);
                          if(ticket>0)   {
                              if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))   {Print(ticket);}
                              else Print("Error Opening SellStop Order: ",GetLastError());
                          return(0);   }  }
void comments()   {
if(MarketInfo(Symbol(),MODE_SWAPLONG)>0) string swap="longs,"; else swap="shorts.";
if(MarketInfo(Symbol(),MODE_SWAPLONG)<0 && MarketInfo(Symbol(),MODE_SWAPSHORT)<0) swap="your broker, :(";
   Comment("Last Tick: ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),"\n",
           "Swap favors ",swap,
           " Swap Long ",MarketInfo(Symbol(),MODE_SWAPLONG),
           ", Swap Short ",MarketInfo(Symbol(),MODE_SWAPSHORT),"\n",
           /*"Average Daily Range: ",NormalizeDouble(avg.rng,Digits),"\n",*/
           "Current Spread: ",Ask-Bid,", Profit:   ",profit,"\n",
           "sto15s:   ",sto15s,"   sto15m:   ",sto15m,"\n",
           "sto60s:   ",sto60s,"   sto60m:   ",sto60m,"\n",
           "sto240s:  ",sto240s,"  sto240m:  ",sto240m,"\n",
           "sto1440s: ",sto1440s," sto1440m: ",sto1440m,"\n",
           "AccountProfit() ",AccountProfit(),"\n",
           "AccountBalance() ",AccountBalance(),"\n",
           "AccountEquity() ",AccountEquity()); }
double Daily.Range() {
   if(DR==TimeToStr(TimeCurrent(),TIME_DATE)) 
{return(NormalizeDouble(avg.rng,Digits));}
   //Print(DR,"  ",NormalizeDouble(avg.rng,Digits));
   rng=0;sum.rng=0;avg.rng=0;
   for(int i=0;i<iBars(Symbol(),1440);i++) {
      rng=(iHigh(Symbol(),PERIOD_D1,i)-iLow(Symbol(),PERIOD_D1,i));
      sum.rng+=rng;}
   double db=iBars(Symbol(),1440);   
   avg.rng=sum.rng/db;
   DR=TimeToStr(TimeCurrent(),TIME_DATE);
return(NormalizeDouble(avg.rng,Digits));}
void Pivot.Plot()  {
   string t1,t2,PPn,s1n,s2n,r1n,r2n,LOPS1n,LOPS2n,HOPS1n,HOPS2n;
   double PP,s1,s2,r1,r2,LOPS1,LOPS2,HOPS1,HOPS2,H,L,C;
   
   PPn="PP "+TimeToStr(CurTime(),TIME_DATE);
   s1n="S1 "+TimeToStr(CurTime(),TIME_DATE);
   s2n="S2 "+TimeToStr(CurTime(),TIME_DATE);
   r1n="R1 "+TimeToStr(CurTime(),TIME_DATE);
   r2n="R2 "+TimeToStr(CurTime(),TIME_DATE);
   LOPS1n="LOPS1 "+TimeToStr(CurTime(),TIME_DATE);
   LOPS2n="LOPS2 "+TimeToStr(CurTime(),TIME_DATE);
   HOPS1n="HOPS1 "+TimeToStr(CurTime(),TIME_DATE);
   HOPS2n="HOPS2 "+TimeToStr(CurTime(),TIME_DATE);
   
   H=iHigh(Symbol(),PERIOD_D1,1);
   L=iLow(Symbol(),PERIOD_D1,1);
   C=iClose(Symbol(),PERIOD_D1,1);
   LOPS1=iLow(Symbol(),PERIOD_D1,1);
   LOPS2=iLow(Symbol(),PERIOD_D1,2);
   HOPS1=iHigh(Symbol(),PERIOD_D1,1);
   HOPS2=iHigh(Symbol(),PERIOD_D1,2);
   
   t1=TimeToStr(CurTime(),TIME_DATE)+" 00:00:00";
   t2=TimeToStr(CurTime(),TIME_DATE)+" 23:59:59";
   
   PP=NormalizeDouble((H+L+C)/3,Digits);
   s1=NormalizeDouble((PP*2)-H,Digits);
   r1=NormalizeDouble((PP*2)-L,Digits);
   s2=NormalizeDouble(PP-(r1-s1),Digits);
   r2=NormalizeDouble(PP+(r1-s1),Digits);
   ObjectCreate(PPn,OBJ_TREND,0,StrToTime(t1),PP,StrToTime(t2),PP);
   ObjectSet(PPn,10,false);
   ObjectSet(PPn,6,Gray);
   ObjectSet(PPn,7,STYLE_DOT);
   ObjectSet(PPn,9,true);
   ObjectCreate(s1n,OBJ_TREND,0,StrToTime(t1),s1,StrToTime(t2),s1);
   ObjectSet(s1n,10,false);
   ObjectSet(s1n,6,LightCoral);
   ObjectSet(s1n,7,STYLE_DOT);
   ObjectSet(s1n,9,true);
   ObjectCreate(s2n,OBJ_TREND,0,StrToTime(t1),s2,StrToTime(t2),s2);
   ObjectSet(s2n,10,false);
   ObjectSet(s2n,6,Tomato);
   ObjectSet(s2n,7,STYLE_DOT);
   ObjectSet(s2n,9,true);
   ObjectCreate(r1n,OBJ_TREND,0,StrToTime(t1),r1,StrToTime(t2),r1);
   ObjectSet(r1n,10,false);
   ObjectSet(r1n,6,LightGreen);
   ObjectSet(r1n,7,STYLE_DOT);
   ObjectSet(r1n,9,true);
   ObjectCreate(r2n,OBJ_TREND,0,StrToTime(t1),r2,StrToTime(t2),r2);
   ObjectSet(r2n,10,false);
   ObjectSet(r2n,6,SpringGreen);
   ObjectSet(r2n,7,STYLE_DOT);
   ObjectSet(r2n,9,true);
   ObjectCreate(LOPS1n,OBJ_TREND,0,StrToTime(t1),LOPS1,StrToTime(t2),LOPS1);
   ObjectSet(LOPS1n,10,false);
   ObjectSet(LOPS1n,6,LightGreen);
   ObjectSet(LOPS1n,7,STYLE_DASH);
   ObjectSet(LOPS1n,9,true);
   ObjectCreate(LOPS2n,OBJ_TREND,0,StrToTime(t1),LOPS2,StrToTime(t2),LOPS2);
   ObjectSet(LOPS2n,10,false);
   ObjectSet(LOPS2n,6,SpringGreen);
   ObjectSet(LOPS2n,7,STYLE_DASH);
   ObjectSet(LOPS2n,9,true);
   ObjectCreate(HOPS1n,OBJ_TREND,0,StrToTime(t1),HOPS1,StrToTime(t2),HOPS1);
   ObjectSet(HOPS1n,10,false);
   ObjectSet(HOPS1n,6,LightCoral);
   ObjectSet(HOPS1n,7,STYLE_DASH);
   ObjectSet(HOPS1n,9,true);
   ObjectCreate(HOPS2n,OBJ_TREND,0,StrToTime(t1),HOPS2,StrToTime(t2),HOPS2);
   ObjectSet(HOPS2n,10,false);
   ObjectSet(HOPS2n,6,Tomato);
   ObjectSet(HOPS2n,7,STYLE_DASH);
   ObjectSet(HOPS2n,9,true);
   if(Period()>=1440)   {ObjectDelete(PPn);   ObjectDelete(s1n);   ObjectDelete(s2n);   ObjectDelete(r1n);
                         ObjectDelete(r2n);   ObjectDelete(LOPS1n);ObjectDelete(LOPS2n);ObjectDelete(HOPS1n);
                         ObjectDelete(HOPS2n); }}
             
            
            
            
Comments