Price Data Components
0
Views
0
Downloads
0
Favorites
_TRO_COMPASS_XIND_test
//+------------------------------------------------------------------+
//| $ROLLING_RANGE |
//| |
//| Copyright © 2008, Avery T. Horton, Jr. aka TheRumpledOne |
//| |
//| PO BOX 43575, TUCSON, AZ 85733 |
//| |
//| GIFTS AND DONATIONS ACCEPTED |
//| |
//| therumpldone@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Avery T. Horton, Jr. aka TRO"
#property link "http://www.therumpldone.com/"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 0
//#property indicator_minimum 0
//#property indicator_maximum 1
//---- indicator parameters
//extern int win = 1;
extern int price.x.offset= 0 ;//250
extern int price.y.offset= -160 ;//-160
extern bool show.arrow = true ;
extern bool show.value = true ;
//extern int myDecimals = 2 ;
extern string myFont = "Arial Bold" ;
extern int myFontSize = 20 ;
extern int myArrowSize = 40 ;
extern int myDigitSize = 20 ;
extern int xStart = -600 ;
extern int xOffSet = 100 ;
extern string Ind_Name_1 ="$ROLLING_RANGE";
extern string myName ="$ROLLING_RANGE";
extern color myIndColor = DarkGray ;
//extern double iParm1 = 0;
//extern double iParm2 = 0;
extern double iParm3 = -100;
extern double iParm4 = -100;
extern double iParm5 = -100;
extern double iParm6 = -100;
extern double iParm7 = -100;
extern double iParm8 = -100;
extern int iMode = 0;
extern int myPeriod_1 = 5 ;
extern int myPeriod_2 = 15 ;
extern int myPeriod_3 = 20 ;
extern int myPeriod_4 = 30 ;
extern int myPeriod_5 = 45 ;
extern int myPeriod_6 = 60 ;
extern bool UseValue = false;
extern double N_value = -999;
extern double NE_value = 2;
extern double E_value = 3;
extern double SE_value = 1;
extern double S_value = -999;
extern color N_color = Green;
extern color NE_color = Green;
extern color E_color = Yellow;
extern color SE_color = Red;
extern color S_color = Red;
//---- buffers
string Arrow12 = "ñ"; // 12 oclock
string Arrow2 = "ö"; // 2 oclock
string Arrow3 = "ð"; // 3 oclock
string Arrow5 = "ø"; // 5 oclock
string Arrow6 = "ò"; // 6 oclock
string tObjName01 ;
string tObjName02 ;
string tObjName03 ;
string tObjName04 , tObjName05, IndHead ;
double open ;
double close ;
double close1 ;
double high ;
double high1 ;
double low ;
double low1 ;
double mid ;
double mid1 ;
double pCount ;
int HighDir, LowDir, MidDir, Mid1Dir, CloseDir, ClOpDir ;
color HighColor, LowColor, MidColor, Mid1Color, CloseColor ;
string PriceDir ;
string tPeriod ;
double cVal, pVal ;
//+------------------------------------------------------------------+
int totalLabels;
string labelNames;
int corner;
int window;
string shortName ;
int win ;
//+------------------------------------------------------------------+
string TimeFrameToString(int tf)
{
string tfs;
switch(tf) {
case PERIOD_M1: tfs="M1" ; break;
case PERIOD_M5: tfs="M5" ; break;
case PERIOD_M15: tfs="M15" ; break;
case PERIOD_M30: tfs="M30" ; break;
case PERIOD_H1: tfs="H1" ; break;
case PERIOD_H4: tfs="H4" ; break;
case PERIOD_D1: tfs="D1" ; break;
case PERIOD_W1: tfs="W1" ; break;
case PERIOD_MN1: tfs="MN1";
}
return(tfs);
}
//+------------------------------------------------------------------+
color fColor( double i)
{
color rColor ;
if ( i == 1 ) rColor = NE_color ; else {
if ( i == 0 ) rColor = E_color ; else {
rColor = SE_color ; } }
return ( rColor );
}
//+------------------------------------------------------------------+
int fDirection( double i, double j)
{
int rDir ;
if ( i > j ) rDir = 1;
else {
if ( i < j ) rDir = -1;
else rDir = 0; }
return ( rDir );
}
//+------------------------------------------------------------------+
string fCompass( double i )
{
string rCompass ;
if ( i == 1 ) rCompass = Arrow2 ; else {
if ( i == 0 ) rCompass = Arrow3 ; else {
rCompass = Arrow5 ; } }
return ( rCompass );
}
//+------------------------------------------------------------------+
int init()
{
shortName = MakeUniqueName("CI ","");
labelNames = shortName;
IndicatorShortName(shortName);
totalLabels = 0;
return(0);
}
int deinit()
{
while (totalLabels>0) { ObjectDelete(StringConcatenate(labelNames,totalLabels)); totalLabels--;}
DoDelObj( PERIOD_M1 ) ;
DoDelObj( PERIOD_M5 ) ;
DoDelObj( PERIOD_M15 ) ;
DoDelObj( PERIOD_H1 ) ;
DoDelObj( PERIOD_H4 ) ;
DoDelObj( PERIOD_D1 ) ;
DoDelObj( PERIOD_W1 ) ;
DoDelObj( PERIOD_MN1 ) ;
}
//+------------------------------------------------------------------+
int start()
{
int xStart2 = xStart + xOffSet ;
int xStart3 = xStart + xOffSet*2 ;
int xStart4 = xStart + xOffSet*3 ;
int xStart5 = xStart + xOffSet*4 ;
int xStart6 = xStart + xOffSet*5 ;
int xStart7 = xStart + xOffSet*6 ;
int xStart8 = xStart + xOffSet*7 ;
win = WindowFind(shortName);
bool sFirst = true ;
if ( sFirst ) {
sFirst = false ;
ObjectDelete(tObjName04);
ObjectsDeleteAll( win, 21);
ObjectsDeleteAll( win, 22);
ObjectsDeleteAll( win, 23);
}
/*
mladens way of deleting objects
for(int i = ObjectsTotal() - 1; i >= 0; i--)
{
string label = ObjectName(i);
if(StringSubstr(label, 0, 15) == "StochDivergence") ObjectDelete(label);
}
*/
if( iParm3 !=-100) { IndHead = myName ; }
else { IndHead = myName ; }
DoHead(IndHead );
DoWork( myPeriod_1 ) ;
DoShow( myPeriod_1, xStart ) ;
DoWork( myPeriod_2 ) ;
DoShow( myPeriod_2, xStart2 ) ;
DoWork( myPeriod_3 ) ;
DoShow( myPeriod_3, xStart3 ) ;
DoWork( myPeriod_4 ) ;
DoShow( myPeriod_4, xStart4 ) ;
DoWork( myPeriod_5 ) ;
DoShow( myPeriod_5, xStart5 ) ;
DoWork( myPeriod_6 ) ;
DoShow( myPeriod_6, xStart6 ) ;
WindowRedraw();
return(0);
}
//+------------------------------------------------------------------+
void DoWork( int myPeriodx )
{
int myPeriod = 1 ;
/*
if ( Ind_Name_1=="tMid" ) { cVal = (iHigh(NULL, myPeriod, 0 ) + iLow(NULL, myPeriod, 0 ) ) * 0.5 ;
pVal = (iHigh(NULL, myPeriod, 1 ) + iLow(NULL, myPeriod, 1 ) ) * 0.5 ; break;}
*/
while(true)
{
iParm3 = myPeriodx ;
if(iParm3==-100 ) {
cVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iMode,0);
pVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iMode,1);
break ; }
if(iParm3!=-100 && iParm4==-100 && iParm5==-100 && iParm6==-100 && iParm7==-100) {
cVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iMode,0);
pVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iMode,1);
break ; }
if(iParm3!=-100 && iParm4!=-100 && iParm5==-100 && iParm6==-100 && iParm7==-100) {
cVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iMode,0);
pVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iMode,1);
break ; }
if(iParm3!=-100 && iParm4!=-100 && iParm5!=-100 && iParm6==-100 && iParm7==-100) {
cVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iMode,0);
pVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iMode,1);
break ; }
if(iParm3!=-100 && iParm4!=-100 && iParm5!=-100 && iParm6!=-100 && iParm7==-100) {
cVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iParm6,iMode,0);
pVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iParm6,iMode,1);
break ; }
if(iParm3!=-100 && iParm4!=-100 && iParm5!=-100 && iParm6!=-100 && iParm7!=-100) {
cVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iParm6,iParm7,iMode,0);
pVal = iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iParm6,iParm7,iMode,1);
break ; }
break ;
}
pCount = fDirection( cVal , myPeriodx ) ;
CloseColor = fColor( pCount ) ;
PriceDir = fCompass( pCount ) ;
}
//+------------------------------------------------------------------+
void DoDelObj( int lPeriod )
{
tObjName01 = labelNames +lPeriod + "XTN950" ;
tObjName02 = labelNames +lPeriod + "XTN951" ;
tObjName03 = labelNames +lPeriod + "XTN952" ;
//tObjName04 = labelNames + "XIN900" ;
tObjName05 = labelNames +lPeriod + "XTN955" ;
ObjectDelete(tObjName01);
ObjectDelete(tObjName02);
ObjectDelete(tObjName03);
ObjectDelete(tObjName04);
ObjectDelete(tObjName05);
}
//+------------------------------------------------------------------+
void DoShow( int lPeriod , int xInc)
{
tObjName01 = labelNames +lPeriod + "XTN950" ;
tObjName02 = labelNames +lPeriod + "XTN951" ;
tObjName03 = labelNames +lPeriod + "XTN952" ;
tObjName05 = labelNames +lPeriod + "XTN955" ;
tPeriod = lPeriod ;
ObjectCreate(tObjName01, OBJ_LABEL, win, 0, 0);//HiLow LABEL
ObjectSetText(tObjName01, tPeriod, myFontSize, myFont, CloseColor );
ObjectSet(tObjName01, OBJPROP_CORNER, 0);
ObjectSet(tObjName01, OBJPROP_XDISTANCE, xInc+980+price.x.offset); // 760
ObjectSet(tObjName01, OBJPROP_YDISTANCE, 175+price.y.offset); // 160
int sInc = 0 ;
if(show.arrow){
sInc = 50 ;
ObjectCreate(tObjName03, OBJ_LABEL, win, 0, 0);//HiLow LABEL
ObjectSetText(tObjName03, PriceDir , myArrowSize , "Wingdings" , CloseColor );
ObjectSet(tObjName03, OBJPROP_CORNER, 0);
ObjectSet(tObjName03, OBJPROP_XDISTANCE, xInc+980+price.x.offset); // 765
ObjectSet(tObjName03, OBJPROP_YDISTANCE, 210+price.y.offset);
} //if(show.arrow)
if(show.value){
ObjectCreate(tObjName05, OBJ_LABEL, win, 0, 0);//HiLow LABEL
ObjectSetText(tObjName05, DoubleToStr(cVal,0) ,myDigitSize, myFont , CloseColor );
ObjectSet(tObjName05, OBJPROP_CORNER, 0);
ObjectSet(tObjName05, OBJPROP_XDISTANCE, xInc+980+price.x.offset); // 765
ObjectSet(tObjName05, OBJPROP_YDISTANCE, sInc+210+price.y.offset);
} //if(show.value)
}
//+------------------------------------------------------------------+
void DoHead( string dHead )
{
tObjName04 = labelNames + "XIN900" ;
ObjectCreate(tObjName04, OBJ_LABEL, win, 0, 0);//HiLow LABEL
ObjectSetText(tObjName04, dHead, myFontSize, myFont, myIndColor );
ObjectSet(tObjName04, OBJPROP_CORNER, 0);
ObjectSet(tObjName04, OBJPROP_XDISTANCE, 00+price.x.offset); // 760
ObjectSet(tObjName04, OBJPROP_YDISTANCE, 210+price.y.offset); // 160
}
//+------------------------------------------------------------------+
// string next() { totalLabels++; return(totalLabels); }
//+------------------------------------------------------------------+
string MakeUniqueName(string first, string rest)
{
string result = first+(MathRand()%1001)+rest;
while (WindowFind(result)> 0)
result = first+(MathRand()%1001)+rest;
return(result);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---