Text inside indicator - page 3

 
supermagix:

You may find the best point moving OBJPROP_XDISTANCE and OBJPROP_YDISTANCE

if I change the value for OBJPROP_YDISTANCE to 500

the label is not moving one pixel

//--- create object
  
   ObjectCreate(0,objectName,OBJ_TEXT,window,0,0);
 //ObjectSetString(0,objectName,OBJPROP_TEXT,string(ExtRSIBuffer[rates_total-1]));
   ObjectSetString(0,objectName,OBJPROP_TEXT,DoubleToString(ExtRSIBuffer[rates_total-1],2));
   ObjectSetInteger(0,objectName,OBJPROP_COLOR,Red);
   ObjectSetString(0,objectName,OBJPROP_FONT,"Arial");
   ObjectSetInteger(0,objectName,OBJPROP_FONTSIZE,20);
 //ObjectSetInteger (0,objectName, OBJPROP_CORNER, corner);
   ObjectSetInteger(0,objectName,OBJPROP_XDISTANCE,0);
   ObjectSetInteger(0,objectName,OBJPROP_YDISTANCE,500);
   
   datetime tm[1];
   CopyTime(_Symbol,_Period,0,1,tm);
   ObjectSetInteger(0,objectName,OBJPROP_TIME,tm[0]);
   ObjectSetDouble(0,objectName,OBJPROP_PRICE,ExtRSIBuffer[rates_total-1]);
 
walb99:

How can I put the label into the upper right corner?

We are going to examine  this matter, thank you.
 
Rosh:

You should learn MQL5 a bit before writing such indicator. You have made so awkward mistakes.



I am trying to learn but  not exist  simple tutorial or courses for mql5: i must learn from mistakes and ask for your help.

I cannot understand this instruction written from You:

 int i=prev_calculated;
   if (i>0) prev_calculated--;
   for(;i<rates_total;i++)

there is an error when I compile.

 
supermagix:

I am trying to learn but  not exist  simple tutorial or courses for mql5: i must learn from mistakes and ask for your help.

I cannot understand this instruction written from You:

there is an error when I compile.

I have mistyped, sorry. Right is

 int i=prev_calculated;
   if (i>0) i--;
   for(;i<rates_total;i++)
 
Rosh:

I have mistyped, sorry. Right is

Here is more right code, use it, please.

//+------------------------------------------------------------------+
//|                                                     CCIcolor.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright   "Copyright 2009, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property description "Relative Strength Index"
//--- indicator settings
#property indicator_separate_window

#property indicator_buffers 4
#property indicator_plots 3
//--- input parameters
input int      CCIPeriod=14;         // Period for calculating the CCI
input int      CCIPeriodTurbo=6;     // Period for calculating the TURBOCCI
input ENUM_APPLIED_PRICE  price1=PRICE_CLOSE; // Method of calculating

//---- plot CCI_LINE
#property indicator_label1  "CCI_LINE"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Black
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3

//---- plot CCI_TURBO_LINE
#property indicator_label2  "CCI_TURBO_LINE"
#property indicator_type2  DRAW_LINE
#property indicator_color2  Navy
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

//---- plot CCI_HISTOGRAM
#property indicator_label3  "CCI_HISTO"
#property indicator_type3   DRAW_COLOR_HISTOGRAM
#property indicator_color3  Red,Green
#property indicator_style3  STYLE_SOLID
#property indicator_width3  2


//----- level
#property indicator_level1       -100.0
#property indicator_level2        100.0
#property indicator_level3       -200.0
#property indicator_level4        200.0
#property indicator_level5       -50.0
#property indicator_level6        50.0
//--- indicator buffers

double         CCI_LINEBuffer[]; //  CCI_LINE
double         CCI_TURBOBuffer[]; //  CCI TURBO_LINE
double         HISTOGRAM[];       //  HISTOGRAM
double         HISTOGRAMColor[];       //  HISTOGRAM
int            copied;
int  CCIhandle;
int CCI_TURBO_handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

void OnInit()
  {
//--- indicator buffers mapping

   SetIndexBuffer(0,CCI_LINEBuffer,INDICATOR_DATA);//buffer LINE
   SetIndexBuffer(1,CCI_TURBOBuffer,INDICATOR_DATA);//buffer Turbo
   SetIndexBuffer(2,HISTOGRAM,INDICATOR_DATA);//buffer Histogram
   SetIndexBuffer(3,HISTOGRAMColor,INDICATOR_COLOR_INDEX);//buffer Histogram

                                                          //name of separate window 
   IndicatorSetString(INDICATOR_SHORTNAME,"MYCCI");
//--- Create the indicator of CCI LINR
   CCIhandle=iCCI(NULL,0,CCIPeriod,price1);

//--- Create the indicator of CCI TURBO
   CCI_TURBO_handle=iCCI(NULL,0,CCIPeriodTurbo,price1);

//---
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[]
                )
  {
//--- not all data may be calculated
   int calculated=BarsCalculated(CCIhandle);
   if(calculated<rates_total)
     {
      Print("Not all data of CCIhandle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);
     }
//--- not all data may be calculated
   calculated=BarsCalculated(CCI_TURBO_handle);
   if(calculated<rates_total)
     {
      Print("Not all data of CCI_TURBO_handle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);
     }

//--- we can copy not all data
   int to_copy;
   if(prev_calculated>rates_total || prev_calculated<0) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
      if(prev_calculated>0) to_copy++;
     }
//---- get CCI buffers
   if(CopyBuffer(CCIhandle,0,0,to_copy,CCI_LINEBuffer)<=0)
     {
      Print("getting CCIhandle is failed! Error",GetLastError());
      return(0);
     }

   if(CopyBuffer(CCI_TURBO_handle,0,0,to_copy,CCI_TURBOBuffer)<=0)
     {
      Print("getting CCI_TURBO_handle is failed! Error",GetLastError());
      return(0);
     }

   int i=prev_calculated;
   if(i>0) i--;
   for(;i<rates_total;i++)
     {
      HISTOGRAM[i]=CCI_LINEBuffer[i];
      if(CCI_LINEBuffer[i]<0)
        {
         HISTOGRAMColor[i]=0.0;//HISTOGRAM RED
        }
      if(CCI_LINEBuffer[i]>0)
        {
         HISTOGRAMColor[i]=1.0;//HISTOGRAM Green
        }
     }

//--- return value of prev_calculated for next call
   return(rates_total);

  }
//+------------------------------------------------------------------+
 
Rosh:

Here is more right code, use it, please.


I removed this istruction 

 int i=prev_calculated;
   if(i>0) i--;
  /////// if(prev_calculated!=0) return(prev_calculated);
   for(;i<rates_total;i++)

because the histograms were not updated to each price change.

The I think that the problem can be on  ( return).

is correct?

thanks for you help

......I'm doing other changes.....

 
supermagix:

I removed this istruction 

because the histograms were not updated to each price change.

The I think that the problem can be on  ( return).

is correct?

thanks for you help

......I'm doing other changes.....

You are right, it was implemented for debug purposes. I have deleted it grom my post.
 

I have modify the program for obtaining the colour of histograms but does not work.

I think that the problem is in counter.... in the cycle FOR..... is it correct ?

//+------------------------------------------------------------------+
//|                                                     CCIcolor.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright   "Copyright 2009, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property description "CCI"
//--- indicator settings
#property indicator_separate_window

#property indicator_buffers 4
#property indicator_plots 3
//--- input parameters
input int      CCIPeriod=14;         // Period for calculating the CCI
input int      CCIPeriodTurbo=6;     // Period for calculating the TURBOCCI
input ENUM_APPLIED_PRICE  price1=PRICE_CLOSE; // Method of calculating

//---- plot CCI_LINE
#property indicator_label1  "CCI_LINE"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Black
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3

//---- plot CCI_TURBO_LINE
#property indicator_label2  "CCI_TURBO_LINE"
#property indicator_type2  DRAW_LINE
#property indicator_color2  Navy
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

//---- plot CCI_HISTOGRAM
#property indicator_label3  "CCI_HISTO"
#property indicator_type3   DRAW_COLOR_HISTOGRAM
#property indicator_color3  Gray,Gold,Red,Green
#property indicator_style3  STYLE_SOLID
#property indicator_width3  2


//----- level
#property indicator_level1       -100.0
#property indicator_level2        100.0
#property indicator_level3       -200.0
#property indicator_level4        200.0
#property indicator_level5       -50.0
#property indicator_level6        50.0
//--- indicator buffers

double         CCI_LINEBuffer[]; //  CCI_LINE
double         CCI_TURBOBuffer[]; //  CCI TURBO_LINE
double         HISTOGRAM[];       //  HISTOGRAM
double         HISTOGRAMColor[];       //  HISTOGRAM
int            copied;
int  CCIhandle;
int CCI_TURBO_handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

void OnInit()
  {
//--- indicator buffers mapping
   
   SetIndexBuffer(0,CCI_LINEBuffer,INDICATOR_DATA);//buffer LINE
   SetIndexBuffer(1,CCI_TURBOBuffer,INDICATOR_DATA);//buffer Turbo
   SetIndexBuffer(2,HISTOGRAM,INDICATOR_DATA);//buffer Histogram
   SetIndexBuffer(3,HISTOGRAMColor,INDICATOR_COLOR_INDEX);//buffer Histogram

                                                          //name of separate window 
   IndicatorSetString(INDICATOR_SHORTNAME,"MYCCI");
//--- Create the indicator of CCI LINR
   CCIhandle=iCCI(NULL,0,CCIPeriod,price1);

//--- Create the indicator of CCI TURBO
   CCI_TURBO_handle=iCCI(NULL,0,CCIPeriodTurbo,price1);

//---
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime& time[],
const double& open[],
const double& high[],
const double& low[],
const double& close[],
const long& tick_volume[],
const long& volume[],
const int& spread[])

 {
//--- not all data may be calculated
   int calculated=BarsCalculated(CCIhandle);
   if(calculated<rates_total)
     {
      Print("Not all data of CCIhandle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);
     }
//--- not all data may be calculated
   calculated=BarsCalculated(CCI_TURBO_handle);
   if(calculated<rates_total)
     {
      Print("Not all data of CCI_TURBO_handle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);
     }

//--- we can copy not all data
   int to_copy;
   if(prev_calculated>rates_total || prev_calculated<0) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
      if(prev_calculated>0) to_copy++;
     }
//---- get CCI buffers
   if(CopyBuffer(CCIhandle,0,0,to_copy,CCI_LINEBuffer)<=0)
     {
      Print("getting CCIhandle is failed! Error",GetLastError());
      return(0);
     }

   if(CopyBuffer(CCI_TURBO_handle,0,0,to_copy,CCI_TURBOBuffer)<=0)
     {
      Print("getting CCI_TURBO_handle is failed! Error",GetLastError());
      return(0);
     }

   int i=prev_calculated;
   if(i>0) i--;
   for(;i<rates_total;i++)
     {
      HISTOGRAM[i]=CCI_LINEBuffer[i];
    
//--- set color histogram Long
        
     if(CCI_LINEBuffer[i+5]<0 && CCI_LINEBuffer[i+4]>0 && CCI_LINEBuffer[i+3]>0 && CCI_LINEBuffer[i+2]>0 && CCI_LINEBuffer[i+1]>0)
       HISTOGRAMColor[i]=1.0; // set color Yellow (only one histogram)
      }
       {
      if(CCI_LINEBuffer[i+5]>0 && CCI_LINEBuffer[i+4]>0 && CCI_LINEBuffer[i+3]>0 && CCI_LINEBuffer[i+2]>0 && CCI_LINEBuffer[i+1]>0);
        HISTOGRAMColor[i]=2.0; // set color Green
        } 
     
//--- set color histogram Short
      {
      if(CCI_LINEBuffer[i+5]>0 && CCI_LINEBuffer[i+4]<0 && CCI_LINEBuffer[i+3]<0 && CCI_LINEBuffer[i+2]<0 && CCI_LINEBuffer[i+1]<0)
        HISTOGRAMColor[i]=1.0; // set color Yellow (onli one histogram)
       }
       {
      if(CCI_LINEBuffer[i+5]<0 && CCI_LINEBuffer[i+4]<0 && CCI_LINEBuffer[i+3]<0 && CCI_LINEBuffer[i+2]<0 && CCI_LINEBuffer[i+1]<0)
         HISTOGRAMColor[i]=3.0; // set color Red
       }  

//--- return value of prev_calculated for next call
   return(rates_total);

  }
//+------------------------------------------------------------------+


Should I see this:

Thanks for help

 
Rosh:
We are going to examine  this matter, thank you.

I made a proof-of-concept EA interacting with an indicator through a temporary global variables changed by using different keystrokes.

Corners do work, but one has to remember that lower corners are relative to indicator frame, not  the timeline - see the video.

Unfortunately video upload does not seem to work on this forum :(


For the time being I put it on

http://www.youshare.com/Guest/c94bb3e9cfe6a424.flv.html

(see fullscreen for best results)

best regrds,

 

After many tests have come to this result:

Value black and green = difference histograms

Value black great = current value of CCI

...but i have problems with the color of histograms.....


Reason: