プログラムにもエクセルは必要だよね。2013プログラムにもエクセルは必要だよね。前に、少し変わったインジケーターの作成を依頼されました。1チャートを各UNITに分割し、2各UNIT内でのバーの数(BARS)を決めて、3その中での最高値と最安値にラインを引く、というものです。上の例では、UNIT数=5BARS=5となっています。難しいプログラムが必要なわけではありませんが、通常の移動平均線やボリバンのような、単純な配列処理では作成できません。いったインジケーターを作成するときは、頭の中だけで考えているとわけがわからなくなってしまうので、エクセルを利用して、頭を整理するのが一番です。上の例では、UNIT数=5BARS=3となっています。これを見ると、まず、for文を使って、各UNIT内の最新のバー(上の図の赤色の部分=BaseBarNumber)を特定して、さらにその中のfor文で、各ユニットの最古のバーまで一つずつ配列を組めばよいことがわかります。各UNIT内の最新のバー(上の図の赤色の部分=BaseBarNumber)を特定しましょう。先ほどのエクセルの表を見てわかるように、それぞれのバーnumberは、UNIT内のバーの数×(そのUNITnumber-1)と表せます。BARS*i;...としてもいいでしょう。次に、iHighest(通貨ペア,時間軸,バーの数,起算点)とiLowest(同左)を使って、最高値と最安値のバーの位置を割り出し、それぞれをHigh[]配列とLow[]配列に入れれば、各UNIT内の最高値と最安値が計算されます。Low[iLowest(NULL,0,MODE_LOW,BARS,BaseBarNumber)];という具合にすればよいでしょう。次に、それぞれのUNITの中で、さらに、もう一つのfor文を使って、「BaseBarNumber」から「BaseBarNumber+BARS-1」まで順に、同じ最高値と最安値を各配列の中に入れればOKです。この手のインジケーターは、時間の経過とともに、古いバーの上に過去のグラフの残存が残ってしまうことがあります。上の画像の黄色の線より左側に、不要なデータが残ってしまいます。別に気にしなければ済むことですが、見栄えが悪いので、EMPTY_VALUEを使って、一番古いバーから「BARS*UNIT」番までのバーの上に残存している配列を空にしましょう。EMPTY_VALUE;}というプログラムを先ほどのコードの前にでも書けばOKです。見苦しい残存ラインが消えてくれます。インジケーター作成代行を承ります。編集Jimdoあなたもジンドゥーで無料ホームページを。