#property indicator_separate_window// Indicator is drawn in the main window#property indicator_buffers1// Number of buffers#property indicator_color1 Red // Color of the 1st linedouble Buf_0[]; // Declaring indicator arrays//THIS INDICATOR IS TO COUNT NUMBER OF M1 BARS WHICH HIGH[I] IS HIGHER AND LOW[I] IS LOWER THAN OPEN[1440].//--------------------------------------------------------------------int init() // Special function init()
{
//--------------------------------------------------------------------SetIndexBuffer(0,Buf_0); // Assigning an array to a bufferSetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Line style//--------------------------------------------------------------------// SetIndexBuffer(1,Buf_1); // Assigning an array to a buffer//SetIndexStyle (1,DRAW_LINE,STYLE_DOT,1);// Line style//--------------------------------------------------------------------return(0); // Exit the special funct.init()
}
//--------------------------------------------------------------------int start() // Special function start()
{
int i=0, iCht, Counted_bars;
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Number of counted barsfor(iCht = Bars - 1 - Counted_bars; iCht >= 0; iCht--){ // Chart barsint iD1 = iBarShift(NULL, PERIOD_D1, Time[iCht]);
double openD1 = iOpen(NULL, PERIOD_D1, iD1);
int iM1Beg = iBarShift(NULL, PERIOD_M1, Time[iCht]),
iM1End = -1;
if(iCht > 0) iM1End = iBarShift(NULL, PERIOD_M1, Time[iCht-1]);
for(Buf_0[i] = 0; iM1Beg > iM1End; iM1Beg--){
double hM1 = iHigh(NULL, PERIOD_M1, iM1Beg),
lM1 = iLow(NULL, PERIOD_M1, iM1Beg);
// count Bars of M1 Period that crisscross Open price of D1 Period if( hM1 >= openD1 && openD1 >= lM1) Buf_0[iCht]++;
}
}
//--------------------------------------------------------------------return(0); // Exit the special funct. start()
}
//--------------------------------------------------------------------
#property indicator_separate_window// Indicator is drawn in the main window#property indicator_buffers1// Number of buffers#property indicator_color1 Red // Color of the 1st linedouble Buf_0[]; // Declaring indicator arrays//THIS INDICATOR IS TO COUNT NUMBER OF M1 BARS WHICH HIGH[I] IS HIGHER AND LOW[I] IS LOWER THAN OPEN[1440].//--------------------------------------------------------------------int init() // Special function init()
{
//--------------------------------------------------------------------SetIndexBuffer(0,Buf_0); // Assigning an array to a bufferSetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Line style//--------------------------------------------------------------------// SetIndexBuffer(1,Buf_1); // Assigning an array to a buffer//SetIndexStyle (1,DRAW_LINE,STYLE_DOT,1);// Line style//--------------------------------------------------------------------return(0); // Exit the special funct.init()
}
//--------------------------------------------------------------------int start() // Special function start()
{
int i=0, iCht, Counted_bars;
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Number of counted barsfor(iCht = Bars - 1 - Counted_bars; iCht >= 0; iCht--){ // Chart barsint iD1 = iBarShift(NULL, PERIOD_D1, Time[iCht]);
double openD1 = iOpen(NULL, PERIOD_D1, iD1);
int iM1Beg = iBarShift(NULL, PERIOD_M1, Time[iCht]),
iM1End = -1;
if(iCht > 0) iM1End = iBarShift(NULL, PERIOD_M1, Time[iCht-1]);
for(Buf_0[i] = 0; iM1Beg > iM1End; iM1Beg--){
double hM1 = iHigh(NULL, PERIOD_M1, iM1Beg),
lM1 = iLow(NULL, PERIOD_M1, iM1Beg);
// count Bars of M1 Period that crisscross Open price of D1 Period if( hM1 >= openD1 && openD1 >= lM1) Buf_0[iCht]++;
}
}
//--------------------------------------------------------------------return(0); // Exit the special funct. start()
}
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Number of counted barsfor(iCht = Bars - 1 - Counted_bars; iCht >= 0; iCht--){ // Chart barsint iD1 = iBarShift(Symbol(), PERIOD_D1, Time[iCht]);
//----find the datetime of iD1. ie the Time[]datetime daystarttime = iTime(Symbol(),PERIOD_D1,iD1);
double openD1 = iOpen(Symbol(), PERIOD_D1, iD1);
//----find BarShift of daystarttime on current chart and take the nearest following bar if it doesn't existint iM1Beg = iBarShift(Symbol(),PERIOD_M1,daystarttime,true);
if(iM1Beg<0)
iM1Beg = iBarShift(Symbol(),PERIOD_M1,daystarttime,false)+1;
//----find BarShift for end of day on current chart and take the nearest following bar if it doesn't existif(iD1>0)
{
datetime nextday = iTime(Symbol(),PERIOD_D1,iD1-1);
int iM1End = iBarShift(Symbol(),PERIOD_M1,nextday-1,true);
if(iM1End<0)
iM1End = iBarShift(Symbol(),PERIOD_M1,nextday,false);
for(Buf_0[i] = 0; iM1Beg > iM1End; iM1Beg--){
double hM1 = iHigh(Symbol(), PERIOD_M1, iM1Beg),
lM1 = iLow(Symbol(), PERIOD_M1, iM1Beg);
// count Bars of M1 Period that crisscross Open price of D1 Period if( hM1 >= openD1 && openD1 >= lM1) Buf_0[iCht]++;
}
}
#property indicator_separate_window// Indicator is drawn in the main window#property indicator_buffers1// Number of buffers#property indicator_color1 Red // Color of the 1st line//#property indicator_color2 Yellow // Color of the 2nd lineexternint Multiplier=2;
double Buf_0[];// Buf_1[]; // Declaring indicator arrays//THIS INDICATOR IS TO COUNT NUMBER OF M1 BARS WHICH HIGH[I] IS HIGHER AND LOW[I] IS LOWER THAN OPEN[1440].//--------------------------------------------------------------------int init() // Special function init()
{
//--------------------------------------------------------------------SetIndexBuffer(0,Buf_0); // Assigning an array to a bufferSetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Line style//--------------------------------------------------------------------// SetIndexBuffer(1,Buf_1); // Assigning an array to a buffer// SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2);// Line style//--------------------------------------------------------------------return(0); // Exit the special funct.init()
}
//--------------------------------------------------------------------int start() // Special function start()
{
int i=0, iCht, Counted_bars;
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Number of counted barsfor(iCht = Bars - 1 - Counted_bars; iCht >= 0; iCht--){ // Chart barsint iD1 = iBarShift(NULL, PERIOD_D1, Time[iCht]);
double openD1 = iOpen(NULL, PERIOD_D1, iD1);
int iM1Beg = iBarShift(NULL, PERIOD_M1, Time[iCht]),
iM1End = -1;
if(iCht > 0) iM1End = iBarShift(NULL, PERIOD_M1, Time[iCht-1]);
Buf_0[iCht] = EMPTY; // <<<<<<<<<<<< This is the magic code that gjol inserted and it worked. for(Buf_0[i] = 0; iM1Beg > iM1End; iM1Beg--){
double hM1 = iHigh(NULL, PERIOD_M1, iM1Beg),
lM1 = iLow(NULL, PERIOD_M1, iM1Beg);
// count Bars of M1 Period that crisscross Open price of D1 Period if( hM1 >= openD1 && openD1 >= lM1) Buf_0[iCht]++;
// Buf_1[iCht]= Multiplier*Buf_0[iCht];
}
}
//--------------------------------------------------------------------return(0);//
}
//--------------------------------------------------------------------
M1歴はありますか?
はい、あります。
ハイライトされたコードの行は、インジが日足チャートに添付されている場合にのみ正しいシフトを与えます。
以前の投稿ですでに述べたように
" つまり、D1ローソクのオープンのdatetime値が必要な のです。これが できるでしょうか?"
ハイライトされたコードの行は、インジが日足チャートに添付されている場合にのみ正しいシフトを与えます。
以前の投稿ですでに述べたように
" つまり、D1ローソクのオープンのdatetime値が必要な のです。これが できるでしょうか?"
こんにちは、GumRaiさん、何度も試しましたが、私の理解を超えていて、コンパイルすることさえできませんでした。このような場合、誰かがその方法を教えてくれれば、そこから学ぶことができます。今、このインジケータは、Open[1]価格を横切るBar1内のM1バーをカウントしています。しかし、カウントはそこで止まってしまい、グラフを完成させるまで進みません。EAにリンクさせようとしましたが、バックテストではEAもシグナルを送ることができません。 このインジケータを永久に完成させるコードを示してください。よろしくお願いします。
Buf_0[iCht] = EMPTY;
こんにちは、GumRaiさん。何度も挑戦しましたが、私の理解を超えていて、コンパイルすることさえできませんでした。このような場合、誰かがその方法を教えてくれれば、そこから学ぶことができます。今、このインジケータは、Open[1]価格を横切るBar1内のM1バーをカウントしています。しかし、カウントはそこで止まってしまい、グラフを完成させるまで進みません。EAにリンクさせようとしましたが、バックテストではEAもシグナルを送ることができません。 このインジケータを永久に完成させるコードを示してください。ありがとうございます。
コンパイルやテストはしていませんが、お役に立てるかもしれません。
WHRoederのコードにBuf_0[iCht] = EMPTY;を挿入し、なんとかインジケータが動作するようになりました。画像と最新のコンパイル済みコードをご確認ください。しかし、私のEAにリンクすると、まるで酔っ払いがミルクを噴き出すかのようにロードとアンロードを繰り返しています。同じEAにリンクされた他のインジケータは問題なく動作しました。これは私が受け取ったメッセージです。
2014.02.25 17:17:08.806 2014.01.02 07:48 カスタムインディケータMamaMaryII EURPLN,Daily: 削除しました。
2014.02.25 17:17:08.799 2014.01.02 07:48 カスタム指標 MamaMaryII EURPLN,Daily: 正常にロードされました。
2014.02.25 17:17:08.794 2014.01.02 07:48 カスタムインジケータMamaMaryII EURPLN,Daily: 削除
2014.02.25 17:17:08.787 2014.01.02 07:48 カスタムインジケータMamaMaryII EURPLN,Daily: 正常にロードされました。
2014.02.25 17:17:08.783 2014.01.02 07:48 カスタムインジケータMamaMaryII EURPLN,Daily: 削除
2014.02.25 17:17:08.774 2014.01.02 07:48 カスタムインジケータMamaMaryII EURPLN,Daily: 正常にロードされました。
2014.02.25 17:17:08.768 2014.01.02 07:48 カスタムインジケーターMamaMaryII EURPLN,Daily:削除しました。