インジケータ内のテキスト - ページ 3

 
supermagix:

OBJPROP_XDISTANCEとOBJPROP_YDISTANCEを動かすと、ベストなポイントが見つかるかもしれません。

OBJPROP_YDISTANCEの値を500にすると、ラベルは1ピクセルも動きません。

ラベルは1ピクセルも動きません。

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

上にラベルを入れるにはどうしたらいいですか?

この件、検討させていただきます、よろしくお願いします。
 
Rosh:

このようなインジケータを書く前に、少しはMQL5を勉強した方がいいのでは?あなたはとても厄介な間違いを犯しています。



私は学ぼうとしていますが、MQL5の簡単なチュートリアルやコースは存在しません:私は間違いから学び、あなたの助けを求める必要があります。

このインストラクションは理解できません。

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

コンパイル時にエラーになります。

 
supermagix:

私は学ぼうとしているが、mql5のための簡単なチュートリアルやコースが存在しない:私は間違いから学び、あなたの助けを求める必要があります。

私はあなたから書かれたこの命令を理解することはできません。

私はコンパイルするときにエラーが発生します。

私はmostypedしている、申し訳ありません。右は

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

誤字がありました、すみません。右は

ここにもっと正しいコードがあります、使ってください。

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

ここにもっと正しいコードがあります、それを使ってください。


私はこの構造を削除しました。

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

ヒストグラムが価格変動 ごとに更新されないので、この構造を削除しました。

問題は( return)にあると思うのですが。

は正しいですか?

あなたの助けをいただきありがとうございます

......他の変更もやっているのですが......。

 
supermagix:

ヒストグラムが価格変動ごとに更新されないため、この構造を削除しました。

は、ヒストグラムが価格変動の たびに更新されなかったためです。

この問題は( リターン) にあるのではないかと思っています。

ということでよろしいでしょうか?

ありがとうございました。

......他の変更もやっているのですが......。

おっしゃるとおり、デバッグ用に実装していました。私の投稿からそれを削除しました。
 

ヒストグラムの色を取得するプログラムを修正したのですが、うまくいきません。

カウンタに問題があると思うのですが......周期FORで......正しいですか?

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

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


これはどうすればいいのでしょうか?

助けてくれてありがとうございます。

 
Rosh:
この件について検討します。

私は、異なるキーストロークを使用することによって変更される一時的なグローバル変数を通じて、インジケータと対話する概念実証のEAを作りました。

角は機能しますが、下の角はタイムラインではなく、インジケーターフレームに対する相対的なものであることを忘れてはいけません。

残念ながらビデオのアップロードはこのフォーラムではうまくいかないようです :(


とりあえず、私はそれを上に置く

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

(フルスクリーンでご覧ください)

ベストリザルトです。

 

何度もテストした結果、このような結果になりました。

黒と緑の値 = ヒストグラムの違い

黒は偉大な値=CCIの現在値

しかし、ヒストグラムの色に問題があります。