インジケーターに色をつける - ページ 2

 

インジケータのバッファはまだ理解していない。

しかし、次のコードは私が欲しいもの、現在と過去のバーのHeiken Ashiの色を表示することをします。

しかし、別のウィンドウに表示させ、現在のバーの下にのみ表示させることはできません。

これは可能なのでしょうか? それとも、インジケータのバッファを理解する必要があるのでしょうか?

このような、未熟な初心者を相手にしているのですね。

int start()

{

ObjectsDeleteAll();

// チャートを描画する前にクリアする

// 5分足

double open.5.0 =iCustom(NULL,1, "Heiken Ashi",0,2,0); //前回のオープン値

double close.5.0 =iCustom(NULL,1, "Heiken Ashi",0,3,0); //Previous Close(前回の終値


bool Up.5.0 = (close.5.0>open.5.0);

bool Down.5.0 = (close.5.0<open.5.0);

// 5分経過

double open.5.1 =iCustom(NULL,1, "Heiken Ashi",0,2,1); //前回のオープン値

double close.5.1 =iCustom(NULL,1, "Heiken Ashi",0,3,1); //前回の終値

bool Up.5.1 = (close.5.1>open.5.1);

bool Down.5.1 = (close.5.1<open.5.1);


ObjectCreate("square1",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.001, 0, Bid-0.001);

if(Down.5.0 == 1) ObjectSet("square1",OBJPROP_COLOR,Red).ObjectCreate("square1",OBJPROP_COLOR,Red);


ObjectCreate("square1",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.001, 0, Bid-0.001);

if(Down.5.0 == 0) ObjectSet("square1",OBJPROP_COLOR,White); ObjectCreate("square2",OBJPROP_COLOR,White);


ObjectCreate("square2",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.0015, 0, Bid-0.0015);

if(Down.5.1 == 1) ObjectSet("square2",OBJPROP_COLOR,赤);


ObjectCreate("square2",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.0015, 0, Bid-0.0015);

if(Down.5.1 == 0) ObjectSet("square2",OBJPROP_COLOR,白);


return(0);

}

 

コードの投稿にはこちらをご利用ください。.読みやすくなります。

 
mrchuckw:

インジケータのバッファはまだ理解していない。

しかし、次のコードは私が欲しいもの、現在と過去のバーのHeiken Ashiの色を表示することをします。

しかし、別のウィンドウに表示させ、現在のバーの下にのみ表示させることはできません。

それは可能ですか? それとも、まだインジケータのバッファを理解する必要があるのでしょうか?

そもそもウィンドウを取得するために、別ウィンドウにインジケータを描いて、そこにオブジェクトを追加する必要があると思うのですが.
 

斯くあるべし

double adUpBuffer[],
       adDnBuffer[];
//---- indicator colors
color  cDirection[2]={LimeGreen,FireBrick};
string sDirection[2]={"up", "down"};
int    iSquare=110;
double dGap=10*Point
//+------------------------------------------------------------------+
//   Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   IndicatorBuffers(2);
   for(int i=0;i<2;i++){
   SetIndexStyle(i,DRAW_ARROW,clrDirection[i]);
   SetIndexArrow(i,iSquare);
   SetIndexDrawBegin(i,12);
   SetIndexLabel(i,sDirection[i]);}
//---- 2 indicator buffers mapping
   SetIndexBuffer(0,adUpBuffer);
   SetIndexBuffer(1,adDnBuffer);
//---- initialization done
   return(0);
  }


      if(Up.5.0)
           adUpBuffer[i]=Low[i]-dGap;
      else adDnBuffer[i]=NULL;
      if(Dn.5.0)
           adDnBuffer[i]=High[i]+dGap;}
      else adDnBuffer[i]=NULL;} 
 

私はインジケータが苦手なのですが......必要なものが得られるかどうか、これを見てみてください......。

ファイル:
ashi1.mq4  3 kb
 

OK.私はそれに取り組んでいます...しかし、あなたは私が私よりはるかに多くを知っていると仮定しています。

添付したのは、これまでの私のインジケータ・プログラム全体です。 この中にあなたのコードをどのように組み込めばいいのでしょうか? それとも全く新しいプログラムを作成するのでしょうか?

できる限り貼り付けてみましたが、コンパイルできません。 dGap=10*Pointの 後に;をつけても、double dGap=10*Pointのようになりません。

他にもコンパイルエラーが山ほど出てきた。 私が鈍感なだけで、今何をすればいいのかわからないのでしょう。

ファイル:
objects2.mq4  3 kb
 
mrchuckw:

OK.私はそれに取り組んでいます...しかし、あなたは私が私よりはるかに多くを知っていると仮定しています。

添付したのは、これまでの私のインジケータ・プログラム全体です。 この中にあなたのコードをどのように組み込めばいいのでしょうか? それとも全く新しいプログラムを作成するのでしょうか?

できる限り貼り付けてみましたが、コンパイルできません。 dGap=10*Pointの 後に;をつけても、double dGap=10*Pointのようになりません。

他にもコンパイルエラーが山ほど出てきた。 私が鈍感なだけで、今何をすればいいのか分からないのでしょう。

私のコードをダウンロードし、MT4のIndicatorsのディレクトリにコピーして、MT4を停止して再起動し、インディケータをチャートに追加します。
 

あなたのコードはどこでダウンロードできますか?

私がいかに鈍感かわかるだろう?

 
mrchuckw:

あなたのコードはどこでダウンロードできますか?

私がいかに鈍感かわかるだろう?

それは私の投稿に添付されています、2つ上の投稿... ...ashi1.mq4
 

これは、ほぼ完璧です。 私はこのソフトで遊んでいて、とても楽しかったです。

私はそれを殺してしまったかもしれないと思うのですが、今は正方形を別のウィンドウに置くようにしています。

この部分は完璧に動作しています。 今... どうやったらすべての正方形が一直線に並ぶのかがわからない。

なぜなら、その下にもう一本線を引きたいからです。 その方法については、少なくとも楽しんでやってみようと思っています。

新しい線は、より大きな時間軸になる。 そして3本目の線は、さらに大きな時間枠になります。

これが、私があなたのEAで遊んだ後の様子です。 二乗を一直線に並べる方法を教えてください。?

ありがとうございます。

ps...しばらく遊んでいたのですが、2本目、3本目の線を出して、直線にする方法がわかりません。

もし、あなたがそれを手伝ってくれるなら、私は感謝します。 2番目のファイルは、2行目に対する私の試みです。

ファイル:
ashi1_1.mq4  3 kb
ashi1-a.mq4  3 kb