I realised the Tidane trend is the best indicator when digging down in to individual pairs. So have been coding the tidane in to the EA. I have not used iCustom. When I have used iCustom in an EA it tells you re code the indicators because it is too slow. A few weeks ago I had asked in some one elses thread for assistance in being to code the tidane. No one responded. Guess nobody's ever tried it . So for coder's who would want the code here it is;
extern string tida="----Tidane Imputs ----";
extern ENUM_TIMEFRAMES timeframe = PERIOD_H1; // B Bands Time Frame TF
extern int Length =20; // Bollinger Bands Period
extern int Deviation =2; // Deviation
extern double MoneyRisk =0.5; // Offset Factor
extern int Signal =1; // Display signals mode: 1-Signals & Stops; 0-only Stops; 2-only Signals;
extern int Line =1; // Display line mode: 0-no,1-yes
extern int Nbars =40;
/////////
//+----------a--------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool TidaneGreen(string cymbol)
{
bool tidanegreen = false;
bool tidanered = false;
int ix;
int trend=0;
int counthigh =0;
int countlow =0;
double smax=0;double smin=0;double bsmax=0;double bsmin=0;
double smaxi=0;double smini=0; double bsmaxi=0; double bsmini=0;
for(ix = Nbars-Length-1; ix >=0; ix--)
{
smax=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,ix);
smin=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,ix);
smaxi=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER, ix + 1);
smini=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER, ix + 1);
bsmax =smax + 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Upper Tidane current RED
bsmin =smin - 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Lower Tidane current GREEN
bsmaxi =smaxi + 0.5 * (MoneyRisk-1) * (smaxi -smini );// Upper Tidane previous bar RED
bsmini =smini - 0.5 * (MoneyRisk-1) * (smaxi -smini );// Lower Tidane previous bar GREEN
if ( iClose(cymbol,timeframe,ix + 1) > bsmaxi )
// set to "i+1" to be able to read out the counted bars till next bars open
counthigh = 0; // counter set back to zero
if ( iClose(cymbol, timeframe, ix + 1 ) < bsmini )
// set to "i+1" to be able to read out the counted bars till next bars open
countlow = 0; // counter set back to zero
if ( iClose(cymbol,timeframe,ix ) < bsmax ) // close less than red
counthigh++;
if ( iClose(cymbol,timeframe,ix ) > bsmin ) // close greater than green
countlow++;
}
if(countlow > counthigh) tidanegreen = true; //green
if(countlow < counthigh) tidanered = true; //red
if(tidanegreen) return(true);
return(false);
}
//+----------a--------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool TidaneRed(string cymbol)
{
bool tidanegreen = false;
bool tidanered = false;
int ix;
int trend=0;
int counthigh =0;
int countlow =0;
double smax=0;double smin=0;double bsmax=0;double bsmin=0;
double smaxi=0;double smini=0; double bsmaxi=0; double bsmini=0;
for(ix = Nbars-Length-1; ix >=0; ix--)
{
smax=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,ix);
smin=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,ix);
smaxi=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER, ix + 1);
smini=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER, ix + 1);
bsmax =smax + 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Upper Tidane current RED
bsmin =smin - 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Lower Tidane current GREEN
bsmaxi =smaxi + 0.5 * (MoneyRisk-1) * (smaxi -smini );// Upper Tidane previous bar RED
bsmini =smini - 0.5 * (MoneyRisk-1) * (smaxi -smini );// Lower Tidane previous bar GREEN
if ( iClose(cymbol,timeframe,ix + 1) > bsmaxi )
// set to "i+1" to be able to read out the counted bars till next bars open
counthigh = 0; // counter set back to zero
if ( iClose(cymbol, timeframe, ix + 1 ) < bsmini )
// set to "i+1" to be able to read out the counted bars till next bars open
countlow = 0; // counter set back to zero
if ( iClose(cymbol,timeframe,ix ) < bsmax ) // close less than red
counthigh++;
if ( iClose(cymbol,timeframe,ix ) > bsmin ) // close greater than green
countlow++;
}
if(countlow > counthigh) tidanegreen = true; //green
if(countlow < counthigh) tidanered = true; //red
if(tidanered) return(true);
return(false);
}
//+----------a--------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double TidaneGreenPrice(string cymbol)
{
int ix;
double smax=0;double smin=0;double bsmax=0;double bsmin=0;
double smaxi=0;double smini=0; double bsmaxi=0; double bsmini=0;
for(ix = Nbars-Length-1; ix >=0; ix--)
{
smax=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,ix);
smin=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,ix);
smaxi=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER, ix + 1);
smini=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER, ix + 1);
bsmax =smax + 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Upper Tidane current RED
bsmin =smin - 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Lower Tidane current GREEN
bsmaxi =smaxi + 0.5 * (MoneyRisk-1) * (smaxi -smini );// Upper Tidane previous bar RED
bsmini =smini - 0.5 * (MoneyRisk-1) * (smaxi -smini );// Lower Tidane previous bar GREEN
}
return(bsmin);
}
//+----------a--------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double TidaneRedPrice(string cymbol)
{
int ix;
double smax=0;double smin=0;double bsmax=0;double bsmin=0;
double smaxi=0;double smini=0; double bsmaxi=0; double bsmini=0;
for(ix = Nbars-Length-1; ix >=0; ix--)
{
smax=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,ix);
smin=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,ix);
smaxi=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER, ix + 1);
smini=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER, ix + 1);
bsmax =smax + 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Upper Tidane current RED
bsmin =smin - 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Lower Tidane current GREEN
bsmaxi =smaxi + 0.5 * (MoneyRisk-1) * (smaxi -smini );// Upper Tidane previous bar RED
bsmini =smini - 0.5 * (MoneyRisk-1) * (smaxi -smini );// Lower Tidane previous bar GREEN
}
return(bsmax);
}
extern string tida="----Tidane Imputs ----";
extern ENUM_TIMEFRAMES timeframe = PERIOD_H1; // B Bands Time Frame TF
extern int Length =20; // Bollinger Bands Period
extern int Deviation =2; // Deviation
extern double MoneyRisk =0.5; // Offset Factor
extern int Signal =1; // Display signals mode: 1-Signals & Stops; 0-only Stops; 2-only Signals;
extern int Line =1; // Display line mode: 0-no,1-yes
extern int Nbars =40;
/////////
//+----------a--------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool TidaneGreen(string cymbol)
{
bool tidanegreen = false;
bool tidanered = false;
int ix;
int trend=0;
int counthigh =0;
int countlow =0;
double smax=0;double smin=0;double bsmax=0;double bsmin=0;
double smaxi=0;double smini=0; double bsmaxi=0; double bsmini=0;
for(ix = Nbars-Length-1; ix >=0; ix--)
{
smax=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,ix);
smin=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,ix);
smaxi=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER, ix + 1);
smini=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER, ix + 1);
bsmax =smax + 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Upper Tidane current RED
bsmin =smin - 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Lower Tidane current GREEN
bsmaxi =smaxi + 0.5 * (MoneyRisk-1) * (smaxi -smini );// Upper Tidane previous bar RED
bsmini =smini - 0.5 * (MoneyRisk-1) * (smaxi -smini );// Lower Tidane previous bar GREEN
if ( iClose(cymbol,timeframe,ix + 1) > bsmaxi )
// set to "i+1" to be able to read out the counted bars till next bars open
counthigh = 0; // counter set back to zero
if ( iClose(cymbol, timeframe, ix + 1 ) < bsmini )
// set to "i+1" to be able to read out the counted bars till next bars open
countlow = 0; // counter set back to zero
if ( iClose(cymbol,timeframe,ix ) < bsmax ) // close less than red
counthigh++;
if ( iClose(cymbol,timeframe,ix ) > bsmin ) // close greater than green
countlow++;
}
if(countlow > counthigh) tidanegreen = true; //green
if(countlow < counthigh) tidanered = true; //red
if(tidanegreen) return(true);
return(false);
}
//+----------a--------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool TidaneRed(string cymbol)
{
bool tidanegreen = false;
bool tidanered = false;
int ix;
int trend=0;
int counthigh =0;
int countlow =0;
double smax=0;double smin=0;double bsmax=0;double bsmin=0;
double smaxi=0;double smini=0; double bsmaxi=0; double bsmini=0;
for(ix = Nbars-Length-1; ix >=0; ix--)
{
smax=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,ix);
smin=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,ix);
smaxi=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER, ix + 1);
smini=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER, ix + 1);
bsmax =smax + 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Upper Tidane current RED
bsmin =smin - 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Lower Tidane current GREEN
bsmaxi =smaxi + 0.5 * (MoneyRisk-1) * (smaxi -smini );// Upper Tidane previous bar RED
bsmini =smini - 0.5 * (MoneyRisk-1) * (smaxi -smini );// Lower Tidane previous bar GREEN
if ( iClose(cymbol,timeframe,ix + 1) > bsmaxi )
// set to "i+1" to be able to read out the counted bars till next bars open
counthigh = 0; // counter set back to zero
if ( iClose(cymbol, timeframe, ix + 1 ) < bsmini )
// set to "i+1" to be able to read out the counted bars till next bars open
countlow = 0; // counter set back to zero
if ( iClose(cymbol,timeframe,ix ) < bsmax ) // close less than red
counthigh++;
if ( iClose(cymbol,timeframe,ix ) > bsmin ) // close greater than green
countlow++;
}
if(countlow > counthigh) tidanegreen = true; //green
if(countlow < counthigh) tidanered = true; //red
if(tidanered) return(true);
return(false);
}
//+----------a--------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double TidaneGreenPrice(string cymbol)
{
int ix;
double smax=0;double smin=0;double bsmax=0;double bsmin=0;
double smaxi=0;double smini=0; double bsmaxi=0; double bsmini=0;
for(ix = Nbars-Length-1; ix >=0; ix--)
{
smax=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,ix);
smin=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,ix);
smaxi=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER, ix + 1);
smini=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER, ix + 1);
bsmax =smax + 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Upper Tidane current RED
bsmin =smin - 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Lower Tidane current GREEN
bsmaxi =smaxi + 0.5 * (MoneyRisk-1) * (smaxi -smini );// Upper Tidane previous bar RED
bsmini =smini - 0.5 * (MoneyRisk-1) * (smaxi -smini );// Lower Tidane previous bar GREEN
}
return(bsmin);
}
//+----------a--------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double TidaneRedPrice(string cymbol)
{
int ix;
double smax=0;double smin=0;double bsmax=0;double bsmin=0;
double smaxi=0;double smini=0; double bsmaxi=0; double bsmini=0;
for(ix = Nbars-Length-1; ix >=0; ix--)
{
smax=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,ix);
smin=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,ix);
smaxi=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER, ix + 1);
smini=iBands(cymbol,timeframe,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER, ix + 1);
bsmax =smax + 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Upper Tidane current RED
bsmin =smin - 0.5 * ( MoneyRisk - 1 ) * ( smax -smin );//Lower Tidane current GREEN
bsmaxi =smaxi + 0.5 * (MoneyRisk-1) * (smaxi -smini );// Upper Tidane previous bar RED
bsmini =smini - 0.5 * (MoneyRisk-1) * (smaxi -smini );// Lower Tidane previous bar GREEN
}
return(bsmax);
}
1