Gösterge içindeki metin - sayfa 3

 
supermagix :

OBJPROP_XDISTANCE ve OBJPROP_YDISTANCE hareket eden en iyi noktayı bulabilirsiniz.

OBJPROP_YDISTANCE değerini 500 olarak değiştirirsem

etiket bir piksel hareket etmiyor

 //--- 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 :

Etiketi sağ üst köşeye nasıl koyabilirim?

Bu konuyu inceleyeceğiz, teşekkürler.
 
Rosh :

Böyle bir gösterge yazmadan önce MQL5'i biraz öğrenmelisiniz. Çok garip hatalar yaptın.



Öğrenmeye çalışıyorum ama mql5 için basit öğretici veya kurslar yok: hatalardan ders almalıyım ve yardımınızı istemeliyim.

Sizden yazılan bu talimatı anlayamıyorum:

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

derleme yaptığımda bir hata var.

 
supermagix :

Öğrenmeye çalışıyorum ama mql5 için basit öğretici veya kurslar yok: hatalardan ders almalıyım ve yardımınızı istemeliyim.

Sizden yazılan bu talimatı anlayamıyorum:

derleme yaptığımda bir hata var.

yanlış yazmışım pardon doğru

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

yanlış yazmışım pardon doğru

İşte daha doğru kod, kullanın lütfen.

 //+------------------------------------------------------------------+
//|                                                     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 :

İşte daha doğru kod, kullanın lütfen.


bu talimatı kaldırdım

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

çünkü histogramlar her fiyat değişikliğine göre güncellenmedi.

Sorunun açık olabileceğini düşünüyorum (dönüş).

doğru?

yardımın için teşekkürler

......Başka değişiklikler yapıyorum......

 
supermagix :

bu talimatı kaldırdım

çünkü histogramlar her fiyat değişikliğine göre güncellenmedi.

Sorunun açık olabileceğini düşünüyorum (dönüş).

doğru?

yardımın için teşekkürler

......Başka değişiklikler yapıyorum......

Haklısın, hata ayıklama amacıyla uygulandı. Mesajımdan sildim.
 

Histogramların rengini elde etmek için programı değiştirdim ama çalışmıyor.

Bence sorun sayaçta.... döngüsünde FOR..... doğru mu?

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

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


Bunu görmeli miyim:

Yardım için teşekkürler

 
Rosh :
Bu konuyu inceleyeceğiz, teşekkürler.

Farklı tuş vuruşlarını kullanarak değiştirilen geçici bir global değişkenler aracılığıyla bir göstergeyle etkileşime giren bir kavram kanıtı EA yaptım.

Köşeler işe yarar, ancak alt köşelerin zaman çizelgesine değil gösterge çerçevesine göre olduğunu hatırlamak gerekir - videoyu izleyin.

Maalesef video yükleme bu forumda çalışmıyor gibi görünüyor :(


şimdilik takıyorum

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

(en iyi sonuçlar için tam ekrana bakın)

en iyi dileklerimle,

 

Birçok testten sonra bu sonuca varıldı:

Değer siyah ve yeşil = fark histogramları

Değer siyah büyük = CCI'nin mevcut değeri

...ama histogramların rengiyle ilgili sorunlarım var.....