RosyPipsIndicator

RosyPipsIndicator
Price Data Components
Series array that contains open time of each barSeries array that contains open prices of each barSeries array that contains close prices for each bar
Indicators Used
Stochastic oscillatorParabolic Stop and Reverse system
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
RosyPipsIndicator
#property link      "lightsites@gmail.com"

/**
Louis Christian Stoltz

               	        _____
               	      /  ___  \
               	    /  /  _  \  \
               	  /( /( /(_)\ )\ )\
               	 (  \  \ ___ /  /  )
               	 (    \ _____ /    )
               	 /(               )\
               	|  \             /  |
               	|    \ _______ /    |
               	 \    / \   / \    /
               	   \/    | |    \/
               	         | |
               	         | |
               	         |_|
**/

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Yellow
#property indicator_color2 Yellow
#property indicator_color3 Yellow
#property indicator_color4 Yellow

/**
  Extern variables
**/ 
extern double sar1 = 0.002;
extern double sar2 = 0.2;

extern int profit = 30; //In Pips
extern int loss = 100; //In Pips

/**
  MAX Spread, Important for accurate trading.
**/ 
extern double  spread = 5; //In Pips

/**
  Star
**/
extern int  Star_Body_Length = 15;

/**
  Start Date
**/ 
extern string year = "2014";
extern string month = "01";
extern string day = "01";

color Color_Text = White;

/**
  Arrows
**/ 
double upArrow[];
double downArrow[];
double sArrow[];
double bArrow[];

int init() {
   
   ObjectsDeleteAll(0, OBJ_TEXT);
   ObjectsDeleteAll(0, OBJ_TREND);
   ObjectsDeleteAll(0, DRAW_ARROW);  
   
   SetIndexStyle(0,DRAW_ARROW, EMPTY);
   SetIndexArrow(0,234);
   SetIndexBuffer(0, downArrow);
      
   SetIndexStyle(1,DRAW_ARROW, EMPTY);
   SetIndexArrow(1,233);
   SetIndexBuffer(1, upArrow);
 
   SetIndexStyle(2,DRAW_ARROW, EMPTY);
   SetIndexArrow(2,231);
   SetIndexBuffer(2, bArrow); 

   SetIndexStyle(3,DRAW_ARROW, EMPTY);
   SetIndexArrow(3,231);
   SetIndexBuffer(3, sArrow);
         
   return(0);
}

int deinit() {

   ObjectsDeleteAll(0, OBJ_TEXT);
   ObjectsDeleteAll(0, OBJ_TREND);
   ObjectsDeleteAll(0, DRAW_ARROW);   
   return(0);
}

int start(){

   datetime back_date = StrToTime(year+"."+month+"."+day+" 00:00");
   
   int counter, sc,bc, sh=0, bh=0;
   static datetime prevtime = 0;
   int shift;
   int shift1;
   

   int h=0,n=0;
   
   int lcounter=0, scounter=0;
   double swon=0 ,slossed=0,lwon=0, llossed=0, ll=0, ss=0, S=0;
                                   
   if(prevtime == Time[0]) {
      return(0);
   }
   prevtime = Time[0];

   
   for (shift = 0; shift < Bars; shift++) {

      if(iTime(Symbol(),Period(),shift)<back_date)break;      
      h++;
      
      counter=shift;

      shift1 = shift + 1;

/**
  Signal prediction
**/        
         downArrow[shift1] = 0;
         upArrow[shift1] = 0;
         
         double end;
         
         double setprofit = profit+spread;
         double setloss   = loss+spread;
         
           if(ObjectGet(GetName("line",shift1), OBJPROP_TIME1) > 0)continue;  
                  
              //Buy Signal
              if(BUYSIGNAL(shift1) == TRUE){
                n=1;
                while(n<1000) { 
                  if(shift-n-1 < 0)break;                   
                 
                  end = Open[shift-n-1];

                  bArrow[shift-n] = 0;

                  if(Low[shift-n] == 0)break;      
                  if(shift == 0)break;           
                  if ( Close[shift-n] - Close[shift1]  >= setprofit*Point )
                  {

                    S = end - (Open[shift1-1]+spread*Point);
                    S = S/Point;
                                            
                    lwon = lwon+S;

                    bArrow[shift-n] = Close[shift-n]; 
                    
                    ObjectDelete(GetName("line",shift1));
                    ObjectCreate(GetName("line",shift1), OBJ_TREND, 0, Time[shift1], Close[shift1], Time[shift-n], Close[shift-n]);
                    SetObject(GetName("line",shift1), Time[shift1], Close[shift1], Time[shift-n], Close[shift-n], White);
                    
                    ObjectDelete(GetName("Star",shift1));
                    ObjectCreate(GetName("Star",shift1), OBJ_TEXT, 0, Time[shift-n], Low[shift-n] - 100*Point);
                    ObjectSetText(GetName("Star",shift1), DoubleToStr(S,2), 8, "Times New Roman", Color_Text); 
                                                
                    break;
                  }                  
                  if( Close[shift1] - Close[shift-n] >= setloss*Point ) 
                  {
                  
                    S = ( Open[shift1-1]+spread*Point ) - end;
                    S = S/Point;   
                
                    llossed = llossed+S;

                    bArrow[shift-n] = Close[shift-n];
                    
                    ObjectDelete(GetName("line",shift1));
                    ObjectCreate(GetName("line",shift1), OBJ_TREND, 0, Time[shift1], Close[shift1], Time[shift-n], Close[shift-n]);
                    SetObject(GetName("line",shift1), Time[shift1], Close[shift1], Time[shift-n], Close[shift-n], White);
                    
                    ObjectDelete(GetName("Star",shift1));
                    ObjectCreate(GetName("Star",shift1), OBJ_TEXT, 0, Time[shift-n], Low[shift-n] - 100*Point);
                    ObjectSetText(GetName("Star",shift1), "-"+DoubleToStr(S,2), 8, "Times New Roman", Color_Text);      
                    ll++;                
                    break;
                  }

                  n++;
                }
                
                lcounter++;

                upArrow[shift1] = Close[shift1]; 
                
                if(bh != 0)bc = shift-bh;
                bh = shift;
                ObjectCreate(GetName("Star",shift), OBJ_TEXT, 0, Time[shift1], Low[shift1] - 100*Point);
                ObjectSetText(GetName("Star",shift), "B", 8, "Times New Roman", Color_Text); 
                  
              }
              
              //Sell Signal
              if(SELLSIGNAL(shift1) == TRUE){
                
                n=1;
                while(n<1000) { 
                  if(shift-n-1 < 0)break;    
                                  
                  end = Open[shift-n-1];
   
                  if(end == 0)end = Open[shift-n-1]; 
                           
                  sArrow[shift-n] = 0;
                  
                  if(Low[shift-n] == 0)break;
                  if(shift == 0)break;  
                  if( Close[shift1] - Close[shift-n] >= setprofit*Point ) 
                  {

                    S = ( Open[shift1-1]-spread*Point ) - end;
                    S = S/Point; 

                    swon = swon+S;                    

                    sArrow[shift-n] = Close[shift-n];   
                    
                    ObjectDelete(GetName("line",shift1));
                    ObjectCreate(GetName("line",shift1), OBJ_TREND, 0, Time[shift1], Close[shift1], Time[shift-n], Close[shift-n]);
                    SetObject(GetName("line",shift1), Time[shift1], Close[shift1], Time[shift-n], Close[shift-n], White);
                    
                    ObjectDelete(GetName("Star",shift1));
                    ObjectCreate(GetName("Star",shift1), OBJ_TEXT, 0, Time[shift-n], Low[shift-n] - 100*Point);
                    ObjectSetText(GetName("Star",shift1), DoubleToStr(S,2), 8, "Times New Roman", Color_Text); 
                    
                    break;
                  }
                  if ( Close[shift-n] - Close[shift1] >= setloss*Point )
                  {

                    S = end - ( Open[shift1-1]-spread*Point );
                    S = S/Point;

                    slossed = slossed+S;
                                        
                    sArrow[shift-n] = Close[shift-n]; 
                    
                    ObjectDelete(GetName("line",shift1));
                    ObjectCreate(GetName("line",shift1), OBJ_TREND, 0, Time[shift1], Close[shift1], Time[shift-n], Close[shift-n]);
                    SetObject(GetName("line",shift1), Time[shift1], Close[shift1], Time[shift-n], Close[shift-n], White);
                    
                    ObjectDelete(GetName("Star",shift1));
                    ObjectCreate(GetName("Star",shift1), OBJ_TEXT, 0, Time[shift-n], Low[shift-n] - 100*Point);
                    ObjectSetText(GetName("Star",shift1), "-"+DoubleToStr(S,2), 8, "Times New Roman", Color_Text); 
                     
                    ss++;                   
                    break;
                  } 
                  
                  n++;
                }        
                scounter++;

                downArrow[shift1] = Close[shift1];      
                
                if(sh != 0)sc = shift-sh;
                sh = shift;
                ObjectCreate(GetName("Star",shift), OBJ_TEXT, 0, Time[shift1], Low[shift1] - 100*Point);
                ObjectSetText(GetName("Star",shift), "S", 8, "Times New Roman", Color_Text);
                   
              }
  
   } // End of for loop
      
/**
  Comments
**/       
   double total = (swon-slossed)+(lwon-llossed);
   
   if(total == 0)return(0);
   
   Comment("\n","Stats from ",  TimeToStr(iTime(Symbol(),Period(),h-1),TIME_DATE|TIME_SECONDS), 
      "\n", "Short Trades : ",scounter, " (", ss , ")",
      "\n", "pips : ",DoubleToStr(swon,2), 
      "\n", "loss : ",DoubleToStr(slossed,2), 
      "\n", "total: ",DoubleToStr(swon-slossed,2), 
      "\n",
      "\n", "Long Trades : ",lcounter, " (", ll , ")", 
      "\n", "pips : ", DoubleToStr(lwon,2),
      "\n", "loss : ", DoubleToStr(llossed,2),
      "\n", "total : ", DoubleToStr(lwon-llossed,2),
      "\n",
      "\n", "TOTAL : ", DoubleToStr(total,2),
      
      "\n","\n","Please donate to paypal lightsites@gmail.com");
           
   return(0);
}

string GetName(string aName,int shift)
{
  return(aName+TimeToStr(Time[shift]));
}

void SetObject(string name,datetime T1,double P1,datetime T2,double P2,color clr)
{

  ObjectCreate(name, OBJ_TREND, 0, T1, P1, T2, P2);
  ObjectSet(name, OBJPROP_COLOR, clr);
  ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
  ObjectSet(name, OBJPROP_RAY, FALSE);

}

/**
  BUYSIGNAL
**/ 
bool BUYSIGNAL(int s) {

    double star;
    int n=0, shift=s-1,z=0,x=0; 
    while(n<11) {  
     
     if(Open[shift+n]>Close[shift+n]){
       star = Open[shift+n]-Close[shift+n];
     }   
     else {
       star = Close[shift+n]-Open[shift+n];
     } 
  
     if( star < (Star_Body_Length*Point) )z=1;
  
    n++;   
    }

    n=0;
    while(n<5) {  
    
     if( iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,shift+n) < 25 )x=1;
  
    n++;   
    } 
    
  if ((iSAR(NULL, 0,sar1,sar2, s)<iClose(NULL,0,s)) && (iSAR(NULL, 0,sar1,sar2, s+1)>iOpen(NULL,0, s+1)))
  {
    return(TRUE);
  }
  return(FALSE);
}

/**
  SELLSIGNAL
**/ 
bool SELLSIGNAL(int s) {
    
    double star;
    int n=0, shift=s-1,z=0,x=0; 
    while(n<11) {  
     
     if(Open[shift+n]>Close[shift+n]){
       star = Open[shift+n]-Close[shift+n];
     }   
     else {
       star = Close[shift+n]-Open[shift+n];
     } 
  
   
     if( star < (Star_Body_Length*Point) )z=1;
  
    n++;   
    }
 
    n=0;
    while(n<5) {  
    
      if( iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,shift+n) > 70 )x=1;
      n++;   
      
    } 
    
  if ((iSAR(NULL, 0,sar1,sar2, s)>iClose(NULL,0,s))&&(iSAR(NULL, 0,sar1,sar2, s+1)<iOpen(NULL,0,s+1)))  //Signal Sell
  {
    return(TRUE);
  }
  return(FALSE);
}

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---