コーディングのヘルプ - ページ 195 1...188189190191192193194195196197198199200201202...786 新しいコメント Mladen Rakic 2013.11.11 14:22 #1941 shtopr: を追加する必要があります。H1、M30、M15、M5、M1 3色目の色(両方の値が同じ範囲にあるとき)を指定するには、色相を修正する必要があります。 3色目の色(両方の値が同じ範囲にある場合)を指定するには、3色目の色を指定するためのオプションを追加するようにコードを修正する必要があります。 kingsleyedeh4re 2013.11.11 15:21 #1942 mladen: これは、1つの列を使用するバージョンです。もし、3色目を希望する場合は、新しいオプションを追加する必要があります。 2分足のrenkoライブチャートで、上部に2本の緑のバーがあるだけで、すべてのペアでそれを使いましたが、正常ですか? Mladen Rakic 2013.11.11 15:53 #1943 drunkpips: 2分足のrenkoライブチャートで、上部に2つの緑のバーがあるだけで、すべてのペアで疲れました。 renkoチャートは使っていません。 内蔵のインジケータ(iBEarsPower()とiBullsPower())を使用しているので、もしそれで何らかの問題があるとすれば、それはすでに内蔵のインジケータ自体に問題があることになります。 egorr 2013.11.11 16:14 #1944 mladen: 3色目(両方の値が同じ範囲にある場合)を指定するには、3色目のオプションを追加するようにコードを修正する必要がある、ということです。 Ок.Спасибо! BigBe 2013.11.11 18:08 #1945 mladenです。 投稿番号1874の'simple mtf'を勉強して遊んでいます。 注:MAのMAであり、MTFが可能です。 いくつか疑問があります。 このコードで何をやっても、'returnBars'が何をするのか、理解できないのです。 1.1. ターゲットタイムフレームの変更されたバーの数が必要かどうかを決定するのは何ですか、そしてなぜですか? 2.この行について。 returnBars = TimeFrame == "returnBars"; // 変化したバーの数が要求されているかどうかチェックする。 私は高度な教育を受けたプログラマーではありません。 この複合構文がわかりません。また、変数の型を混在させるルールも知りません。 文字列変数Timeframeがboolean returnBarsの値を取得しているように見えます。 そして、その値をreturnBarsに代入しているようです。?? returnBarsはbooleanなので、TimeFrameが0より大きい場合は'1'を代入し、そうでない場合は'0'を代入するのでしょうか? 3.インジケーターを高いTFに設定し、ライブ(順張り)で何本もテストしたり、Strategy testerで テストしています。 それを使っている行を削除しても、インジケータの行に変化はない。 if (returnBars) Comment("returnBars ",returnBars, " Tick ",Volume(0)); // if (returnBars) { ma1[0] = limit+1; return(0); }. 画面上のコメント行には、「returnBars 1」と表示されます。 どこで「1」の値を取得しているのかがわかりません。 if'の部分がないと、常に'0'と表示されます。 Init()に入れても同じ結果です。 Big Be Coding help 多銘柄多期間指標におけるカラーバッファ Mladen Rakic 2013.11.11 18:23 #1946 Big Be: mladenです。投稿番号1874の「simple mtf」を勉強して遊んでいます。注:MAのMAであり、MTFが可能です。いくつか質問があります。コードで何をやっても、'returnBars'が何をするのか、理解できません。1.1. ターゲットタイムフレームの変更されたバーの数が必要かどうかを決定するのは何ですか、そしてなぜですか?2.この行について。returnBars = TimeFrame == "returnBars"; // 変化したバーの数が要求されているかどうかチェックする。私は高度な教育を受けたプログラマーではありません。この複合構文がわかりません。また、変数の型を混在させるルールも知りません。文字列変数Timeframeがboolean returnBarsの値を取得しているように見えます。そして、その値をreturnBarsに代入しているようです。??returnBarsはbooleanなので、TimeFrameが0より大きい場合は'1'を代入し、そうでない場合は'0'を代入するのでしょうか?3.インジケーターを高いTFに設定し、ライブ(順張り)で何本もテストしたり、Strategy testerでテストしています。それを使っている行を削除しても、インジケータの行に変化はない。if (returnBars) Comment("returnBars",returnBars, "ティック",ボリューム(0));// if (returnBars) { ma1[0] = limit+1; return(0); }.画面上のコメント行には、「returnBars 1」と表示されます。どこで「1」の値を取得しているのかがわかりません。if'の部分がないと、常に'0'と表示されます。Init()に入れても同じ結果です。 ビッグベー Big Be これを想像してみてください. 1.あなたは15分足チャートで作業しており、あなたのインジケータは1時間足のデータを表示しています。15分足チャートでは最後のティックで何本のバーが変化したか、1時間足チャートでは何本のバーが変化したか?それをチェック するのがReturn barsです。この数字は想定された値である必要はありません。(長い間チャートからアクセスしていない時間枠を選び、メタトレーダーがその時間枠のデータをダウンロードし始めるとどうなるかを見てください - 新しいバーがいくつダウンロードされたかを確認する必要があります。) 2.returnBars = TimeFrame == "returnBars "の場合。 1つの代入("=")と1つの論理比較("==")があります。これは、returnBarsが2つの文字列(TimeFrameと "returnBars")の論理比較の結果を受け取る必要があることを意味します。 3.3. return bars は、ブーリアン型変数である。0が "false"、1が "true "です。そのため、returnBarsに1が設定されています(returnBarsが "true "に設定されていることを意味します)。 ______________ 追記:C/C++のbooleanのルールであれば、0以外の値はtrueとみなされ、メタトレーダーの変数も同じようにテストできますが(例えばif(someDoubleValue)はsomeDoubleValueが0と異なるかどうかをテストします)、メタトレーダーは0と1をboolean型の変数に代入しています。 -IXI- 2013.11.12 09:45 #1947 Mladen様 Poallnのインジケータのリペイントの仕方がいまいちつかめません。iRSI(NULL,0,RSI,PRICE_TYPICAL,i-8) や iCCI(NULL,0,CCI,PRICE_TYPICAL,i-8) が未来の値を意味することは知っていますが、最後のバーを計算するときに i-8 のデータがありません。 ゼロになるのでは?では、Pollanはどのようにリペイントするのでしょうか? 最高です。 Mladen Rakic 2013.11.12 09:49 #1948 -IXI-: 親愛なるムラデンPoallnのインジケータのリペイントの仕方がいまいちつかめません。iRSI(NULL,0,RSI,PRICE_TYPICAL,i-8) や iCCI(NULL,0,CCI,PRICE_TYPICAL,i-8) が未来の値を意味することは知っていますが、最後のバーを計算するときに i-8 のデータがありません。 ゼロになるのでは?では、Pollanはどのようにリペイントするのでしょうか? 最高です。 IXI 現在のバーでは、そのバーの値0を取得します。最初の過去のバーでは、将来の値1個と0個を7個取得します。といった具合です。 新しいバーが形成されると、将来の値の結果に対してゼロを得ていたバーは、実際には実際の将来の結果を得ており、それらの値は、それらの "新しい "将来の値に従って変更されます。 Georgebaker 2013.11.13 18:10 #1949 このインジケータをJPYペアで動作させるには? こんにちは。 このインディケータは、ラウンドナンバー ごとに線を引き、ラウンドナンバーの両側に15ピップずつ線を引きます。 しかし、JPYのペアでは動作しません。 このインディケータを動作させるためには、何を変更する必要があるのでしょうか? #property indicator_chart_window extern color UpperLineColor = Red; extern color MainLineColor = Red; extern color LowerLineColor = Red; extern double HighOffset = 150; extern double LowOffset = 150; extern int LineStyle = 2; extern string LineStyleInfo = "0=Solid,1=Dash,2=Dot,3=DashDot,4=DashDotDot"; double LineSpaceOld; double Hoch; double Tief; bool FirstRun = true; double LineSpace = 1.0; // 1 unit = 0.01 of basic value (e.g. 1 USD cent) string LineText = "RoundNr "; string LineText1 = "RoundNr1 "; string LineText2 = "RoundNr2 "; int deinit() { double AbSpace = 0.01*LineSpace; double Oben = MathRound(110*Hoch)/100; double Unten = MathRound(80*Tief)/100; for(double i=0; i<=Oben; i+=AbSpace) { if(i<Unten) { continue; } ObjectDelete(LineText+DoubleToStr(i,2)); ObjectDelete(LineText1+DoubleToStr(i,2)); ObjectDelete(LineText2+DoubleToStr(i,2)); } return(0); } int start() { if(FirstRun) { Hoch = NormalizeDouble( High, 2 ); Tief = NormalizeDouble( Low, 2 ); FirstRun = false; } else if(LineSpace != LineSpaceOld) { deinit(); Hoch = NormalizeDouble( High, 2 ); Tief = NormalizeDouble( Low, 2 ); } DrawLines(); LineSpaceOld = LineSpace; return(0); } void DrawLines() { double AbSpace = 0.01*LineSpace; double Oben = MathRound(110*Hoch)/100; double Unten = MathRound(80*Tief)/100; for(double i=0; i<=Oben; i+=AbSpace) { if(i<Unten) { continue; } string StringNr = DoubleToStr(i,2); // 2 digits number in object name if (ObjectFind(LineText+StringNr) != 0) // HLine not in main chartwindow { ObjectCreate(LineText+StringNr, OBJ_HLINE, 0, 0, i); ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle); ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor); } else // Adjustments { ObjectSet(LineText+StringNr, OBJPROP_PRICE1, i); ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle); ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor); } //####################################################################### if(i<Unten) { continue; } string StringNr1 = DoubleToStr(i,2); // 2 digits number in object name if (ObjectFind(LineText1+StringNr1) != 0) // HLine not in main chartwindow { ObjectCreate(LineText1+StringNr1, OBJ_HLINE, 0, 0, i+(HighOffset/100000)); ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle); ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor); } else // Adjustments { ObjectSet(LineText1+StringNr1, OBJPROP_PRICE1, i+(HighOffset/100000)); ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle); ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor); } //####################################################################### if(i<Unten) { continue; } string StringNr2 = DoubleToStr(i,2); // 2 digits number in object name if (ObjectFind(LineText2+StringNr2) != 0) // HLine not in main chartwindow { ObjectCreate(LineText2+StringNr2, OBJ_HLINE, 0, 0, i-(LowOffset/100000)); ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle); ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor); } else // Adjustments { ObjectSet(LineText2+StringNr2, OBJPROP_PRICE1, i-(LowOffset/100000)); ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle); ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor); } } WindowRedraw(); } Coding help [ARCHIVE]Any rookie question, so [ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. Mladen Rakic 2013.11.13 19:50 #1950 Georgebaker: こんにちは。このインディでは、ラウンドナンバーごとにラインが引かれ、ラウンドナンバーの両側に15ピップずつラインが引かれます。 しかし、これはJPYのペアでは動作しません。 これを動作させるためには、何を変更する必要があるのでしょうか? #property indicator_chart_window extern color UpperLineColor = Red; extern color MainLineColor = Red; extern color LowerLineColor = Red; extern double HighOffset = 150; extern double LowOffset = 150; extern int LineStyle = 2; extern string LineStyleInfo = "0=Solid,1=Dash,2=Dot,3=DashDot,4=DashDotDot"; double LineSpaceOld; double Hoch; double Tief; bool FirstRun = true; double LineSpace = 1.0; // 1 unit = 0.01 of basic value (e.g. 1 USD cent) string LineText = "RoundNr "; string LineText1 = "RoundNr1 "; string LineText2 = "RoundNr2 "; int deinit() { double AbSpace = 0.01*LineSpace; double Oben = MathRound(110*Hoch)/100; double Unten = MathRound(80*Tief)/100; for(double i=0; i<=Oben; i+=AbSpace) { if(i<Unten) { continue; } ObjectDelete(LineText+DoubleToStr(i,2)); ObjectDelete(LineText1+DoubleToStr(i,2)); ObjectDelete(LineText2+DoubleToStr(i,2)); } return(0); } int start() { if(FirstRun) { Hoch = NormalizeDouble( High, 2 ); Tief = NormalizeDouble( Low, 2 ); FirstRun = false; } else if(LineSpace != LineSpaceOld) { deinit(); Hoch = NormalizeDouble( High, 2 ); Tief = NormalizeDouble( Low, 2 ); } DrawLines(); LineSpaceOld = LineSpace; return(0); } void DrawLines() { double AbSpace = 0.01*LineSpace; double Oben = MathRound(110*Hoch)/100; double Unten = MathRound(80*Tief)/100; for(double i=0; i<=Oben; i+=AbSpace) { if(i<Unten) { continue; } string StringNr = DoubleToStr(i,2); // 2 digits number in object name if (ObjectFind(LineText+StringNr) != 0) // HLine not in main chartwindow { ObjectCreate(LineText+StringNr, OBJ_HLINE, 0, 0, i); ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle); ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor); } else // Adjustments { ObjectSet(LineText+StringNr, OBJPROP_PRICE1, i); ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle); ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor); } //####################################################################### if(i<Unten) { continue; } string StringNr1 = DoubleToStr(i,2); // 2 digits number in object name if (ObjectFind(LineText1+StringNr1) != 0) // HLine not in main chartwindow { ObjectCreate(LineText1+StringNr1, OBJ_HLINE, 0, 0, i+(HighOffset/100000)); ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle); ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor); } else // Adjustments { ObjectSet(LineText1+StringNr1, OBJPROP_PRICE1, i+(HighOffset/100000)); ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle); ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor); } //####################################################################### if(i<Unten) { continue; } string StringNr2 = DoubleToStr(i,2); // 2 digits number in object name if (ObjectFind(LineText2+StringNr2) != 0) // HLine not in main chartwindow { ObjectCreate(LineText2+StringNr2, OBJ_HLINE, 0, 0, i-(LowOffset/100000)); ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle); ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor); } else // Adjustments { ObjectSet(LineText2+StringNr2, OBJPROP_PRICE1, i-(LowOffset/100000)); ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle); ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor); } } WindowRedraw(); } ジョージベーカー https://www.mql5.com/en/forum/180648/page307 のようなインジケータをベースにしてみてはどうでしょうか?コーディングの手間が省けるかもしれません。 1...188189190191192193194195196197198199200201202...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
を追加する必要があります。
H1、M30、M15、M5、M1
3色目の色(両方の値が同じ範囲にあるとき)を指定するには、色相を修正する必要があります。
3色目の色(両方の値が同じ範囲にある場合)を指定するには、3色目の色を指定するためのオプションを追加するようにコードを修正する必要があります。
これは、1つの列を使用するバージョンです。もし、3色目を希望する場合は、新しいオプションを追加する必要があります。
2分足のrenkoライブチャートで、上部に2本の緑のバーがあるだけで、すべてのペアでそれを使いましたが、正常ですか?
2分足のrenkoライブチャートで、上部に2つの緑のバーがあるだけで、すべてのペアで疲れました。
renkoチャートは使っていません。
内蔵のインジケータ(iBEarsPower()とiBullsPower())を使用しているので、もしそれで何らかの問題があるとすれば、それはすでに内蔵のインジケータ自体に問題があることになります。
3色目(両方の値が同じ範囲にある場合)を指定するには、3色目のオプションを追加するようにコードを修正する必要がある、ということです。
Ок.Спасибо!
mladenです。
投稿番号1874の'simple mtf'を勉強して遊んでいます。
注:MAのMAであり、MTFが可能です。
いくつか疑問があります。
このコードで何をやっても、'returnBars'が何をするのか、理解できないのです。
1.1. ターゲットタイムフレームの変更されたバーの数が必要かどうかを決定するのは何ですか、そしてなぜですか?
2.この行について。
returnBars = TimeFrame == "returnBars"; // 変化したバーの数が要求されているかどうかチェックする。
私は高度な教育を受けたプログラマーではありません。 この複合構文がわかりません。また、変数の型を混在させるルールも知りません。
文字列変数Timeframeがboolean returnBarsの値を取得しているように見えます。
そして、その値をreturnBarsに代入しているようです。??
returnBarsはbooleanなので、TimeFrameが0より大きい場合は'1'を代入し、そうでない場合は'0'を代入するのでしょうか?
3.インジケーターを高いTFに設定し、ライブ(順張り)で何本もテストしたり、Strategy testerで テストしています。 それを使っている行を削除しても、インジケータの行に変化はない。
if (returnBars) Comment("returnBars ",returnBars, " Tick ",Volume(0));
// if (returnBars) { ma1[0] = limit+1; return(0); }.
画面上のコメント行には、「returnBars 1」と表示されます。
どこで「1」の値を取得しているのかがわかりません。
if'の部分がないと、常に'0'と表示されます。
Init()に入れても同じ結果です。
Big Be
mladenです。
投稿番号1874の「simple mtf」を勉強して遊んでいます。
注:MAのMAであり、MTFが可能です。
いくつか質問があります。
コードで何をやっても、'returnBars'が何をするのか、理解できません。
1.1. ターゲットタイムフレームの変更されたバーの数が必要かどうかを決定するのは何ですか、そしてなぜですか?
2.この行について。
returnBars = TimeFrame == "returnBars"; // 変化したバーの数が要求されているかどうかチェックする。
私は高度な教育を受けたプログラマーではありません。この複合構文がわかりません。また、変数の型を混在させるルールも知りません。
文字列変数Timeframeがboolean returnBarsの値を取得しているように見えます。
そして、その値をreturnBarsに代入しているようです。??
returnBarsはbooleanなので、TimeFrameが0より大きい場合は'1'を代入し、そうでない場合は'0'を代入するのでしょうか?
3.インジケーターを高いTFに設定し、ライブ(順張り)で何本もテストしたり、Strategy testerでテストしています。それを使っている行を削除しても、インジケータの行に変化はない。
if (returnBars) Comment("returnBars",returnBars, "ティック",ボリューム(0));
// if (returnBars) { ma1[0] = limit+1; return(0); }.
画面上のコメント行には、「returnBars 1」と表示されます。
どこで「1」の値を取得しているのかがわかりません。
if'の部分がないと、常に'0'と表示されます。
Init()に入れても同じ結果です。
ビッグベーBig Be
これを想像してみてください.
1.あなたは15分足チャートで作業しており、あなたのインジケータは1時間足のデータを表示しています。15分足チャートでは最後のティックで何本のバーが変化したか、1時間足チャートでは何本のバーが変化したか?それをチェック するのがReturn barsです。この数字は想定された値である必要はありません。(長い間チャートからアクセスしていない時間枠を選び、メタトレーダーがその時間枠のデータをダウンロードし始めるとどうなるかを見てください - 新しいバーがいくつダウンロードされたかを確認する必要があります。)
2.returnBars = TimeFrame == "returnBars "の場合。
1つの代入("=")と1つの論理比較("==")があります。これは、returnBarsが2つの文字列(TimeFrameと "returnBars")の論理比較の結果を受け取る必要があることを意味します。
3.3. return bars は、ブーリアン型変数である。0が "false"、1が "true "です。そのため、returnBarsに1が設定されています(returnBarsが "true "に設定されていることを意味します)。
______________
追記:C/C++のbooleanのルールであれば、0以外の値はtrueとみなされ、メタトレーダーの変数も同じようにテストできますが(例えばif(someDoubleValue)はsomeDoubleValueが0と異なるかどうかをテストします)、メタトレーダーは0と1をboolean型の変数に代入しています。
Mladen様
Poallnのインジケータのリペイントの仕方がいまいちつかめません。iRSI(NULL,0,RSI,PRICE_TYPICAL,i-8) や iCCI(NULL,0,CCI,PRICE_TYPICAL,i-8) が未来の値を意味することは知っていますが、最後のバーを計算するときに i-8 のデータがありません。
ゼロになるのでは?では、Pollanはどのようにリペイントするのでしょうか?
最高です。
親愛なるムラデン
Poallnのインジケータのリペイントの仕方がいまいちつかめません。iRSI(NULL,0,RSI,PRICE_TYPICAL,i-8) や iCCI(NULL,0,CCI,PRICE_TYPICAL,i-8) が未来の値を意味することは知っていますが、最後のバーを計算するときに i-8 のデータがありません。
ゼロになるのでは?では、Pollanはどのようにリペイントするのでしょうか?
最高です。IXI
現在のバーでは、そのバーの値0を取得します。最初の過去のバーでは、将来の値1個と0個を7個取得します。といった具合です。
新しいバーが形成されると、将来の値の結果に対してゼロを得ていたバーは、実際には実際の将来の結果を得ており、それらの値は、それらの "新しい "将来の値に従って変更されます。
このインジケータをJPYペアで動作させるには?
こんにちは。
このインディケータは、ラウンドナンバー ごとに線を引き、ラウンドナンバーの両側に15ピップずつ線を引きます。
しかし、JPYのペアでは動作しません。
このインディケータを動作させるためには、何を変更する必要があるのでしょうか?
extern color UpperLineColor = Red;
extern color MainLineColor = Red;
extern color LowerLineColor = Red;
extern double HighOffset = 150;
extern double LowOffset = 150;
extern int LineStyle = 2;
extern string LineStyleInfo = "0=Solid,1=Dash,2=Dot,3=DashDot,4=DashDotDot";
double LineSpaceOld;
double Hoch;
double Tief;
bool FirstRun = true;
double LineSpace = 1.0; // 1 unit = 0.01 of basic value (e.g. 1 USD cent)
string LineText = "RoundNr ";
string LineText1 = "RoundNr1 ";
string LineText2 = "RoundNr2 ";
int deinit()
{
double AbSpace = 0.01*LineSpace;
double Oben = MathRound(110*Hoch)/100;
double Unten = MathRound(80*Tief)/100;
for(double i=0; i<=Oben; i+=AbSpace)
{
if(i<Unten) { continue; }
ObjectDelete(LineText+DoubleToStr(i,2));
ObjectDelete(LineText1+DoubleToStr(i,2));
ObjectDelete(LineText2+DoubleToStr(i,2));
}
return(0);
}
int start()
{
if(FirstRun)
{
Hoch = NormalizeDouble( High, 2 );
Tief = NormalizeDouble( Low, 2 );
FirstRun = false;
}
else if(LineSpace != LineSpaceOld)
{
deinit();
Hoch = NormalizeDouble( High, 2 );
Tief = NormalizeDouble( Low, 2 );
}
DrawLines();
LineSpaceOld = LineSpace;
return(0);
}
void DrawLines()
{
double AbSpace = 0.01*LineSpace;
double Oben = MathRound(110*Hoch)/100;
double Unten = MathRound(80*Tief)/100;
for(double i=0; i<=Oben; i+=AbSpace)
{
if(i<Unten) { continue; }
string StringNr = DoubleToStr(i,2); // 2 digits number in object name
if (ObjectFind(LineText+StringNr) != 0) // HLine not in main chartwindow
{
ObjectCreate(LineText+StringNr, OBJ_HLINE, 0, 0, i);
ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);
}
else // Adjustments
{
ObjectSet(LineText+StringNr, OBJPROP_PRICE1, i);
ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);
}
//#######################################################################
if(i<Unten) { continue; }
string StringNr1 = DoubleToStr(i,2); // 2 digits number in object name
if (ObjectFind(LineText1+StringNr1) != 0) // HLine not in main chartwindow
{
ObjectCreate(LineText1+StringNr1, OBJ_HLINE, 0, 0, i+(HighOffset/100000));
ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);
}
else // Adjustments
{
ObjectSet(LineText1+StringNr1, OBJPROP_PRICE1, i+(HighOffset/100000));
ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);
}
//#######################################################################
if(i<Unten) { continue; }
string StringNr2 = DoubleToStr(i,2); // 2 digits number in object name
if (ObjectFind(LineText2+StringNr2) != 0) // HLine not in main chartwindow
{
ObjectCreate(LineText2+StringNr2, OBJ_HLINE, 0, 0, i-(LowOffset/100000));
ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);
}
else // Adjustments
{
ObjectSet(LineText2+StringNr2, OBJPROP_PRICE1, i-(LowOffset/100000));
ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);
}
}
WindowRedraw();
}こんにちは。
このインディでは、ラウンドナンバーごとにラインが引かれ、ラウンドナンバーの両側に15ピップずつラインが引かれます。
しかし、これはJPYのペアでは動作しません。
これを動作させるためには、何を変更する必要があるのでしょうか?
extern color UpperLineColor = Red;
extern color MainLineColor = Red;
extern color LowerLineColor = Red;
extern double HighOffset = 150;
extern double LowOffset = 150;
extern int LineStyle = 2;
extern string LineStyleInfo = "0=Solid,1=Dash,2=Dot,3=DashDot,4=DashDotDot";
double LineSpaceOld;
double Hoch;
double Tief;
bool FirstRun = true;
double LineSpace = 1.0; // 1 unit = 0.01 of basic value (e.g. 1 USD cent)
string LineText = "RoundNr ";
string LineText1 = "RoundNr1 ";
string LineText2 = "RoundNr2 ";
int deinit()
{
double AbSpace = 0.01*LineSpace;
double Oben = MathRound(110*Hoch)/100;
double Unten = MathRound(80*Tief)/100;
for(double i=0; i<=Oben; i+=AbSpace)
{
if(i<Unten) { continue; }
ObjectDelete(LineText+DoubleToStr(i,2));
ObjectDelete(LineText1+DoubleToStr(i,2));
ObjectDelete(LineText2+DoubleToStr(i,2));
}
return(0);
}
int start()
{
if(FirstRun)
{
Hoch = NormalizeDouble( High, 2 );
Tief = NormalizeDouble( Low, 2 );
FirstRun = false;
}
else if(LineSpace != LineSpaceOld)
{
deinit();
Hoch = NormalizeDouble( High, 2 );
Tief = NormalizeDouble( Low, 2 );
}
DrawLines();
LineSpaceOld = LineSpace;
return(0);
}
void DrawLines()
{
double AbSpace = 0.01*LineSpace;
double Oben = MathRound(110*Hoch)/100;
double Unten = MathRound(80*Tief)/100;
for(double i=0; i<=Oben; i+=AbSpace)
{
if(i<Unten) { continue; }
string StringNr = DoubleToStr(i,2); // 2 digits number in object name
if (ObjectFind(LineText+StringNr) != 0) // HLine not in main chartwindow
{
ObjectCreate(LineText+StringNr, OBJ_HLINE, 0, 0, i);
ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);
}
else // Adjustments
{
ObjectSet(LineText+StringNr, OBJPROP_PRICE1, i);
ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);
}
//#######################################################################
if(i<Unten) { continue; }
string StringNr1 = DoubleToStr(i,2); // 2 digits number in object name
if (ObjectFind(LineText1+StringNr1) != 0) // HLine not in main chartwindow
{
ObjectCreate(LineText1+StringNr1, OBJ_HLINE, 0, 0, i+(HighOffset/100000));
ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);
}
else // Adjustments
{
ObjectSet(LineText1+StringNr1, OBJPROP_PRICE1, i+(HighOffset/100000));
ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);
}
//#######################################################################
if(i<Unten) { continue; }
string StringNr2 = DoubleToStr(i,2); // 2 digits number in object name
if (ObjectFind(LineText2+StringNr2) != 0) // HLine not in main chartwindow
{
ObjectCreate(LineText2+StringNr2, OBJ_HLINE, 0, 0, i-(LowOffset/100000));
ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);
}
else // Adjustments
{
ObjectSet(LineText2+StringNr2, OBJPROP_PRICE1, i-(LowOffset/100000));
ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);
ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);
}
}
WindowRedraw();
}ジョージベーカー
https://www.mql5.com/en/forum/180648/page307 のようなインジケータをベースにしてみてはどうでしょうか?コーディングの手間が省けるかもしれません。