wip





//+------------------------------------------------------------------+
//|                                                          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); }}



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains close prices for each bar


Indicator Curves created:


Indicators Used:

Stochastic oscillator


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

It Closes Orders by itself

Other Features: