[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 875 1...868869870871872873874875876877878879880881882...1145 新しいコメント Igor Makanu 2010.09.28 15:44 #8741 reag: はい、最初のオプションは機能しません、私は非標準の時間枠で作業していますが、2番目のオプションは機能します。皆さん、ありがとうございました。 最初のオプションは動作します - デモ口座で少なくとも20日間(チェックする時間がない)と10年間の歴史上のテスターで ZS: まあ、ダメなものはダメなんですけどね(笑) Andrei01 2010.09.28 16:22 #8742 IgorM: 最初のオプションは動作します - デモ口座で少なくとも20日間(チェックする時間がない)と10年間の歴史の中でテスターで SZS: まあ、働かないというのは、働かないということなんですけどね :) 最初のものは、実際のアカウントで動作します。私の場合、チャートウィンドウが非常に大きいので、おそらくうまくいくのでしょう。おそらく、チャートウィンドウが非常に大きく、最大値に達していないために動作しているのでしょう...。が、もしかしたらEAがそうなのかもしれませんね~、彼は大丈夫ですが・・・。:) Igor Makanu 2010.09.28 16:31 #8743 Andrei01: デモでは怖くありません。:) でも、実際の現場では、無理をせず、普通にやったほうがいいかもしれませんね・・・。おそらく、チャートウィンドウが非常に大きく、最大値に達しないために動作するのでしょう ...が、もしかしたらEAがそうなのかもしれませんね~、うまくいきそうです・・・。:) そうではありません -バーの 数を数えることによって、私は歴史のロードの瞬間を "見逃すことはできない "と、これらの瞬間に、それは少し待つことをお勧めします、履歴がTFの終わりにロードされるだけでなく、時にはTFの先頭にもロードされます - OK、これは大きな秘密だshhhhhhhhhhh。 :) reag 2010.09.29 04:01 #8744 IgorM: バーの数を数えることによって、私は歴史のロードの瞬間を "見逃さない "ことができます - そしてこれらの瞬間に、それは少し待つことをお勧めします、履歴はTFの終わりにロードされるだけでなく、時にはそれはあまりにもTFの先頭をロード - OK、それは大きな秘密だシーッ - シーッ:) 2つ目のバリエーションもうまくいかないことが判明しました.インジケータ配列のバー番号は、いずれにしても変更されません。規格外の時間軸のためと理解しています。標準のPeriod_Converter_Optで形成され、M1からM2まで取得し、M2を開くとBarsはウィンドウのMax barの半分に等しく、ウィンドウのMax barの値まで行くとSetIndexBuffer 配列のfomationが停止する...(( Igor Makanu 2010.09.29 04:09 #8745 reag: 2番目の選択肢もうまくいかないことが判明した.インジケータ配列のバーナンバーは変更されません。規格外の時間軸だからでしょうね。標準のPeriod_Converter_Optで形成され、M1からM2まで取得し、M2を開くとBarsはウィンドウのMax barの半分に等しく、ウィンドウのMax barの値まで行くとSetIndexBuffer index arrayのfomationが停止する...(( しかし、少なくとも新しいバーの いくつかのパラメータは、記憶されたバーと比較することができます? 非標準のTFを使用している場合、ゼロと思われるバーが0、1でないインデックスを持っている可能性はありますか? reag 2010.09.29 04:19 #8746 IgorM: しかし、少なくとも新しいバーのいくつかのパラメータは、記憶されたバーと比較することができます?非標準のTFを使用している場合、ゼロと思われるバーが0, 1以外のインデックスを持っている可能性はありませんか? 新しいバーを認識するアルゴリズムは動作しますが、チャートはウィンドウ内の最大のバーに達した後に停止します; SetIndexBufferインデックス配列が 停止することを寓意していると仮定します。問題は以下の通りです。つまり、有効にした後はすべてうまくいき、その後チャートがフリーズしてバーが移動してしまいます...。その結果、インジケーターが動作しないのです Igor Makanu 2010.09.29 05:02 #8747 reag: アルゴリズム自体は新しいバーを認識しますが、ウィンドウ内の最大バーに達した後、チャートが停止します。問題は以下の通りです。つまり、有効にした後はすべてうまくいき、その後チャートがフリーズしてバーが移動してしまいます...。その結果、インジケーターが動作しないのです 起動時に動作する場合は、再描画するバーの本数が正しく定義されていないことが原因かもしれません。 reag 2010.09.29 05:17 #8748 IgorM: 起動時にこのような現象が発生する場合、再描画するバーの本数が正しく定義されていないことが考えられます。 #property indicator_chart_window #property show_inputs #property indicator_buffers 3 // バッファの数 #property indicator_color1 DarkSeaGreen // 最初の行の色 #property indicator_color2 SaddleBrown // 2行目の色 #property indicator_color3 SaddleBrown // 2行目の色 extern intHistory=300; // 計算された履歴のバー数 extern int Arrows=1; extern int Line=0; // 計算に使用するバーの本数 //extern int Left_Right= 5; // 水平方向のオフセット(バー). extern int Up_Right=8; // 垂直方向のオフセット(ポイント) static int up = 1, intPost=600; static datetime VPPosLStr,time0new,time0old; double Line_0[],Line_1[],Line_2[]; //データアレイの宣言 //-------------------------------------------------------------------- int init() //特殊関数 init() { if (Arrows==1 && Line==1)int Style=1; if (Arrows==1 && Lines!=1)style=3; if (Arrows!=1 && Lines==1)style=2。 switch(Style) // ヘッダスイッチ { // 本体起動スイッチ ケース1 : //-------------------------------------------------------------------- SetIndexBuffer(0,Line_0); // バッファ 0 に配列を代入する。 SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// ラインスタイル SetIndexEmptyValue(0,0.0); //-------------------------------------------------------------------- SetIndexBuffer(1,Line_1); // バッファ 1 に配列を代入する。 SetIndexStyle(1,DRAW_ARROW,EMPTY,1); // ラインスタイル SetIndexArrow (1,217)。 //-------------------------------------------------------------------- SetIndexBuffer(2,Line_2); // バッファ2に配列を割り当てる。 SetIndexStyle (2,DRAW_ARROW,EMPTY,1); // ラインスタイル SetIndexArrow (2,218)。 //-------------------------------------------------------------------- break; // オプション。 ケース2 : //-------------------------------------------------------------------- SetIndexBuffer(0,Line_0); // バッファ 0 に配列を代入する。 SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// ラインスタイル SetIndexEmptyValue(0,0.0); が壊れる。 ケース3 : //-------------------------------------------------------------------- SetIndexBuffer(1,Line_1); // バッファ 1 に配列を代入する。 SetIndexStyle(1,DRAW_ARROW,EMPTY,1); // ラインスタイル SetIndexArrow (1,217)。 //-------------------------------------------------------------------- SetIndexBuffer(2,Line_2); // バッファ2に配列を割り当てる。 SetIndexStyle (2,DRAW_ARROW,EMPTY,1); // ラインスタイル SetIndexArrow (2,218)。 //-------------------------------------------------------------------- が壊れる。 default: break; // ケースが一致しなかった場合 } int k=Bars; // 本体スイッチの終わり return(0); // 特別な init() を終了します。 } //-------------------------------------------------------------------- int start() // 特殊関数 start() { //----+ バーの数が正しいかどうかチェックする。 //calculate インジケータ if(履歴-1 < 15) return(0)です。 //+--- +==========================================+ int i, // バーインデックス n, // 形式パラメータ (インデックス) k, // インデックス配列のインデックス要素のインデックス. Counted_bars; // 計算したバーの本数 ダブルライン iBarShift(NULL, 0, VrPostStr); //Comment (indpostr," ",up)。 //-------------------------------------------------------------------- /* Counted_bars=IndicatorCounted(); // カウントされたバーの本数 //---- エラーの可能性をチェックする if(Counted_bars < 0) return(-1)です。 i=Bars-Counted_bars-1+indicatorCounted; // カウントされていない最初のもののインデックス if (i>History-1) // バーがたくさんある場合、. i=History-1;//...与えられた数値を計算する time0new=Time[0]です。 if(time0old!=time0new)とする。 { i=History-1です。 time0old=time0newです。 コメント("Bars ",Bars,", History ",History,", i ",i)。 } for(i=i-1; i >= 3; i--) // カウントされていない小節をループする。 { if(up==0) { Line=Low[i]です。 if (Line<Low[i-1] && Line<Low[i-2] && Bpostr<Time[i]) { Line_0 [i] = Line[i]; Line_0 [i] = Line; Line_2[i] = Line-up_down*Point; up=1です。 を続ける。 } } if(up==1) //2本のローソク足の基準でフィボグリッドを構築 ロールバック { Line=High[i]です。 if (Line>High[i-1] && Line>High[i-2]&& Bpostr<Time[i])。 { Line_0[i] = Line[i]; Line_0[i] = Line; Line_1[i] = Line+Up_down*Point; up=0とする。 } } //次のバーのインデックスを計算する } // WindowRedraw(); //-------------------------------------------------------------------- return(0)です。 } //-------------------------------------------------------------------- int deinit() { return(0)です。 } [WARNING CLOSED!] Any newbie コーディングのヘルプ アスク! Igor Makanu 2010.09.29 05:39 #8749 reag: int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0; i<limit; i++){ 私はインジケータをこのように書いています、これが私の標準的なインジケータのスタートです - 少し引き伸ばされていますが、私がmqlを扱っていたとき、私はこのように書き、それが残っている方法です キリル文字で書かれた変数名が怖くて、コメントと混同してしまいます。 reag 2010.09.29 05:54 #8750 IgorM: 私はインジケータをこのように書いています、これが私の標準的なインジケータのスタートです。 キリル文字で書かれた変数名が怖くて、コメントと混同してしまいます。 そうですね...私が試しているだけです...キリル )), 非標準のタイムフレームでBarsとIndicatorCounted()の組み合わせは正確に動作しません、Barsウィンドウの最大バーを超えるとそれ以上進めなくなります. 1...868869870871872873874875876877878879880881882...1145 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
はい、最初のオプションは機能しません、私は非標準の時間枠で作業していますが、2番目のオプションは機能します。皆さん、ありがとうございました。
最初のオプションは動作します - デモ口座で少なくとも20日間(チェックする時間がない)と10年間の歴史上のテスターで
ZS: まあ、ダメなものはダメなんですけどね(笑)
最初のオプションは動作します - デモ口座で少なくとも20日間(チェックする時間がない)と10年間の歴史の中でテスターで
SZS: まあ、働かないというのは、働かないということなんですけどね :)
デモでは怖くありません。:) でも、実際の現場では、無理をせず、普通にやったほうがいいかもしれませんね・・・。おそらく、チャートウィンドウが非常に大きく、最大値に達しないために動作するのでしょう ...が、もしかしたらEAがそうなのかもしれませんね~、うまくいきそうです・・・。:)
そうではありません -バーの 数を数えることによって、私は歴史のロードの瞬間を "見逃すことはできない "と、これらの瞬間に、それは少し待つことをお勧めします、履歴がTFの終わりにロードされるだけでなく、時にはTFの先頭にもロードされます - OK、これは大きな秘密だshhhhhhhhhhh。
:)
バーの数を数えることによって、私は歴史のロードの瞬間を "見逃さない "ことができます - そしてこれらの瞬間に、それは少し待つことをお勧めします、履歴はTFの終わりにロードされるだけでなく、時にはそれはあまりにもTFの先頭をロード - OK、それは大きな秘密だシーッ - シーッ
:)
2つ目のバリエーションもうまくいかないことが判明しました.インジケータ配列のバー番号は、いずれにしても変更されません。規格外の時間軸のためと理解しています。標準のPeriod_Converter_Optで形成され、M1からM2まで取得し、M2を開くとBarsはウィンドウのMax barの半分に等しく、ウィンドウのMax barの値まで行くとSetIndexBuffer 配列のfomationが停止する...((
2番目の選択肢もうまくいかないことが判明した.インジケータ配列のバーナンバーは変更されません。規格外の時間軸だからでしょうね。標準のPeriod_Converter_Optで形成され、M1からM2まで取得し、M2を開くとBarsはウィンドウのMax barの半分に等しく、ウィンドウのMax barの値まで行くとSetIndexBuffer index arrayのfomationが停止する...((
しかし、少なくとも新しいバーの いくつかのパラメータは、記憶されたバーと比較することができます?
非標準のTFを使用している場合、ゼロと思われるバーが0、1でないインデックスを持っている可能性はありますか?
しかし、少なくとも新しいバーのいくつかのパラメータは、記憶されたバーと比較することができます?
非標準のTFを使用している場合、ゼロと思われるバーが0, 1以外のインデックスを持っている可能性はありませんか?
新しいバーを認識するアルゴリズムは動作しますが、チャートはウィンドウ内の最大のバーに達した後に停止します; SetIndexBufferインデックス配列が 停止することを寓意していると仮定します。問題は以下の通りです。つまり、有効にした後はすべてうまくいき、その後チャートがフリーズしてバーが移動してしまいます...。その結果、インジケーターが動作しないのです
アルゴリズム自体は新しいバーを認識しますが、ウィンドウ内の最大バーに達した後、チャートが停止します。問題は以下の通りです。つまり、有効にした後はすべてうまくいき、その後チャートがフリーズしてバーが移動してしまいます...。その結果、インジケーターが動作しないのです
起動時に動作する場合は、再描画するバーの本数が正しく定義されていないことが原因かもしれません。
起動時にこのような現象が発生する場合、再描画するバーの本数が正しく定義されていないことが考えられます。
#property indicator_chart_window
#property show_inputs
#property indicator_buffers 3 // バッファの数
#property indicator_color1 DarkSeaGreen // 最初の行の色
#property indicator_color2 SaddleBrown // 2行目の色
#property indicator_color3 SaddleBrown // 2行目の色
extern intHistory=300; // 計算された履歴のバー数
extern int Arrows=1;
extern int Line=0; // 計算に使用するバーの本数
//extern int Left_Right= 5; // 水平方向のオフセット(バー).
extern int Up_Right=8; // 垂直方向のオフセット(ポイント)
static int up = 1, intPost=600;
static datetime VPPosLStr,time0new,time0old;
double Line_0[],Line_1[],Line_2[]; //データアレイの宣言
//--------------------------------------------------------------------
int init() //特殊関数 init()
{
if (Arrows==1 && Line==1)int Style=1;
if (Arrows==1 && Lines!=1)style=3;
if (Arrows!=1 && Lines==1)style=2。
switch(Style) // ヘッダスイッチ
{ // 本体起動スイッチ
ケース1 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0); // バッファ 0 に配列を代入する。
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// ラインスタイル
SetIndexEmptyValue(0,0.0);
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1); // バッファ 1 に配列を代入する。
SetIndexStyle(1,DRAW_ARROW,EMPTY,1); // ラインスタイル
SetIndexArrow (1,217)。
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2); // バッファ2に配列を割り当てる。
SetIndexStyle (2,DRAW_ARROW,EMPTY,1); // ラインスタイル
SetIndexArrow (2,218)。
//--------------------------------------------------------------------
break; // オプション。
ケース2 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0); // バッファ 0 に配列を代入する。
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// ラインスタイル
SetIndexEmptyValue(0,0.0);
が壊れる。
ケース3 :
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1); // バッファ 1 に配列を代入する。
SetIndexStyle(1,DRAW_ARROW,EMPTY,1); // ラインスタイル
SetIndexArrow (1,217)。
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2); // バッファ2に配列を割り当てる。
SetIndexStyle (2,DRAW_ARROW,EMPTY,1); // ラインスタイル
SetIndexArrow (2,218)。
//--------------------------------------------------------------------
が壊れる。
default: break; // ケースが一致しなかった場合
}
int k=Bars; // 本体スイッチの終わり
return(0); // 特別な init() を終了します。
}
//--------------------------------------------------------------------
int start() // 特殊関数 start()
{
//----+ バーの数が正しいかどうかチェックする。
//calculate インジケータ
if(履歴-1 < 15)
return(0)です。
//+--- +==========================================+
int i, // バーインデックス
n, // 形式パラメータ (インデックス)
k, // インデックス配列のインデックス要素のインデックス.
Counted_bars; // 計算したバーの本数
ダブルライン
iBarShift(NULL, 0, VrPostStr);
//Comment (indpostr," ",up)。
//--------------------------------------------------------------------
/* Counted_bars=IndicatorCounted(); // カウントされたバーの本数
//---- エラーの可能性をチェックする
if(Counted_bars < 0)
return(-1)です。
i=Bars-Counted_bars-1+indicatorCounted; // カウントされていない最初のもののインデックス
if (i>History-1) // バーがたくさんある場合、.
i=History-1;//...与えられた数値を計算する
time0new=Time[0]です。
if(time0old!=time0new)とする。
{
i=History-1です。
time0old=time0newです。
コメント("Bars ",Bars,", History ",History,", i ",i)。
}
for(i=i-1; i >= 3; i--) // カウントされていない小節をループする。
{
if(up==0)
{
Line=Low[i]です。
if (Line<Low[i-1] && Line<Low[i-2] && Bpostr<Time[i])
{
Line_0 [i] = Line[i];
Line_0 [i] = Line;
Line_2[i] = Line-up_down*Point;
up=1です。
を続ける。
}
}
if(up==1) //2本のローソク足の基準でフィボグリッドを構築 ロールバック
{
Line=High[i]です。
if (Line>High[i-1] && Line>High[i-2]&& Bpostr<Time[i])。
{
Line_0[i] = Line[i];
Line_0[i] = Line;
Line_1[i] = Line+Up_down*Point;
up=0とする。
}
}
//次のバーのインデックスを計算する
}
// WindowRedraw();
//--------------------------------------------------------------------
return(0)です。
}
//--------------------------------------------------------------------
int deinit()
{
return(0)です。
}
キリル文字で書かれた変数名が怖くて、コメントと混同してしまいます。
私はインジケータをこのように書いています、これが私の標準的なインジケータのスタートです。
キリル文字で書かれた変数名が怖くて、コメントと混同してしまいます。
そうですね...私が試しているだけです...キリル )), 非標準のタイムフレームでBarsとIndicatorCounted()の組み合わせは正確に動作しません、Barsウィンドウの最大バーを超えるとそれ以上進めなくなります.