質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

Q&A

0回答

485閲覧

CCI_Angleのプラス(+)表示だけでなく、マイナス(ー)の勢いもグラフ化したい

coboo

総合スコア4

MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

0グッド

0クリップ

投稿2021/01/22 08:28

編集2021/01/22 08:31

質問お願いします。

タイトルの通り、CCI_Angleを使用しています。現在、CCIの値が急激に上昇したら、サインがでるようになっていますが、これをアレンジして、急激に下降した場合もサインを出したいです。できれば、マイナスのグラフとして表示したいです。
コードは元のファイルを参照して、同じように下降したときの条件を書いたのですが、チャート上に何も反映されず、何が原因かあれこれ探しましたが、結局見つからないので、質問させていただきます。

以下、コードです。
OS:Windows
チャート:XMTrading MT4
コード:
//---- indicator settings
property indicator_separate_window
property indicator_buffers 6
property indicator_color1 LimeGreen
property indicator_color2 Yellow
property indicator_color3 FireBrick
property indicator_color4 LimeGreen
property indicator_color5 LimeGreen
property indicator_color6 LimeGreen

//---- indicator parameters
extern int CCIPeriod=14;
extern double AngleTreshold=15.0;
extern double AngleTreshold2=15.0;
extern int PrevShift=4;
extern int CurShift=0;

//---- indicator buffers
//正のバッファー
double UpBuffer[];
double DownBuffer[];
double ZeroBuffer[];
//負のバッファー
double UpBuffer1[];
double DownBuffer1[];
double ZeroBuffer1[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 2 additional buffers are used for counting.
IndicatorBuffers(6);
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(5,DRAW_HISTOGRAM,STYLE_SOLID,2);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);

//---- 3 indicator buffers mapping
if(!SetIndexBuffer(0,UpBuffer) &&
!SetIndexBuffer(1,DownBuffer) &&
!SetIndexBuffer(2,ZeroBuffer))
Print("cannot set indicator buffers!");

if(!SetIndexBuffer(3,UpBuffer) &&
!SetIndexBuffer(4,DownBuffer) &&
!SetIndexBuffer(5,ZeroBuffer))
Print("cannot set indicator buffers!");

//---- name for DataWindow and indicator subwindow label
IndicatorShortName("CCI_Angle("+CCIPeriod+","+AngleTreshold+","+PrevShift+","+CurShift+")");

//---- initialization done
return(0);
}

//+------------------------------------------------------------------+
//| The angle for LSMA |
//+------------------------------------------------------------------+
int start()
{
double fCur, fPrev;
double fAngle, fAngle2, mFactor, mFactor2 ;
int nLimit, i;
int nCountedBars;
int ShiftDif;
//PrevShiftよりCurShiftの時〔エラーを表示〕
if(CurShift >= PrevShift)
{
Print("Error: CurShift >= PrevShift");
PrevShift = 6;
CurShift = 0;
}

nCountedBars = IndicatorCounted();
//---- check for possible errors
if(nCountedBars<0)
return(-1);
//---- last counted bar will be recounted
if(nCountedBars>0)
nCountedBars--;
nLimit = Bars-nCountedBars;

mFactor = 1.0;
mFactor2= -1.0;
ShiftDif = PrevShift-CurShift;
mFactor /= ShiftDif;
mFactor2 /= ShiftDif;

//---- main loop
for(i=0; i<nLimit; i++)
{
fCur=iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, i+CurShift);
fPrev=iCCI(NULL, 0, CCIPeriod, PRICE_CLOSE, i+PrevShift);
// 10000.0 : Multiply by 10000 so that the fAngle is not too small
// for the indicator Window.
fAngle = mFactor * (fCur - fPrev)/2;
fAngle2 = mFactor2 * (fCur - fPrev)/2;

DownBuffer[i] = 0.0; UpBuffer[i] = 0.0; ZeroBuffer[i] = 0.0; DownBuffer1[i] = 0.0; UpBuffer1[i] = 0.0; ZeroBuffer1[i] = 0.0; //正の角度の計算式 if(fAngle > AngleTreshold) UpBuffer[i] = fAngle; /*else if (fAngle < -AngleTreshold) DownBuffer[i] = fAngle; else ZeroBuffer[i] = fAngle;*/ //負の角度の計算式 if(fAngle2 < AngleTreshold2) UpBuffer1[i] = fAngle2; /*else if (fAngle2 > AngleTreshold2) DownBuffer1[i] = fAngle2; else ZeroBuffer1[i] = fAngle2;*/

}

return(0);
}

分かる方、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問