MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1042 1...103510361037103810391040104110421043104410451046104710481049...1953 新しいコメント wolder1 2020.01.16 17:55 #10411 Добрый день. Прошу помощи. Уже пару недель безуспешно пытаюсь заставить индикатор круглых уровней заставить (см.код) передавать их для использования в эксперте через iCustom. Прошу помочь поправить код. #property indicator_chart_window extern string H = " --- Mode_Settings ---"; extern bool Show_00_50_Levels = true; extern bool Show_20_80_Levels = true; extern color Level_00_Color = Lime; extern color Level_50_Color = Gray; extern color Level_20_Color = Red; extern color Level_80_Color = Green; double dXPoint = 1; double Div = 0; double i = 0; double HighPrice = 0; double LowPrice = 0; int iDigits; int start() { HighPrice = MathRound((High[iHighest(NULL, 0, MODE_HIGH, Bars + 300, 2)]+1) * Div); LowPrice = MathRound((Low[iLowest(NULL, 0, MODE_LOW, Bars + 300, 2)]-1) * Div); if(Show_00_50_Levels) { for (i = LowPrice; i <= HighPrice; i++) { if (MathMod(i, 5) == 0.0) { if (ObjectFind("RoundPrice " + DoubleToStr(i, 0)) != 0) { ObjectCreate("RoundPrice " + DoubleToStr(i, 0), OBJ_HLINE, 0, Time[1], i / Div); ObjectSet("RoundPrice " + DoubleToStr(i, 0), OBJPROP_STYLE, STYLE_DOT); if(MathMod(i, 10) == 0.0) { ObjectSet("RoundPrice " + DoubleToStr(i, 0), OBJPROP_COLOR, Level_00_Color); } else { ObjectSet("RoundPrice " + DoubleToStr(i, 0), OBJPROP_COLOR, Level_50_Color); } } } } } if(Show_20_80_Levels) { for (i = LowPrice; i <= HighPrice; i++) { if (StringSubstr(DoubleToStr(i/Div,iDigits), StringLen(DoubleToStr(i/Div,iDigits))-2, 2)=="20") { if (ObjectFind("RoundPrice " + DoubleToStr(i, 0)) != 0) { ObjectCreate("RoundPrice " + DoubleToStr(i, 0), OBJ_HLINE, 0, Time[1], i / Div); ObjectSet("RoundPrice " + DoubleToStr(i, 0), OBJPROP_STYLE, STYLE_DOT); ObjectSet("RoundPrice " + DoubleToStr(i, 0), OBJPROP_COLOR, Level_20_Color); } } if (StringSubstr(DoubleToStr(i/Div,iDigits), StringLen(DoubleToStr(i/Div,iDigits))-2, 2)=="80") { if (ObjectFind("RoundPrice " + DoubleToStr(i, 0)) != 0) { ObjectCreate("RoundPrice " + DoubleToStr(i, 0), OBJ_HLINE, 0, Time[1], i / Div); ObjectSet("RoundPrice " + DoubleToStr(i, 0), OBJPROP_STYLE, STYLE_DOT); ObjectSet("RoundPrice " + DoubleToStr(i, 0), OBJPROP_COLOR, Level_80_Color); } } } } return (0); } int init() { iDigits = Digits; if(Digits==5 || Digits==3)dXPoint=10; if(Digits==3) iDigits=2; if(Digits==5) iDigits=4; Div = 0.1 / (Point*dXPoint); return (0); } int deinit() { HighPrice = MathRound((High[iHighest(NULL, 0, MODE_HIGH, Bars + 300, 2)]+1) * Div); LowPrice = MathRound((Low[iLowest(NULL, 0, MODE_LOW, Bars + 300, 2)]-1) * Div); for (i = LowPrice; i <= HighPrice; i++) ObjectDelete("RoundPrice " + DoubleToStr(i, 0)); return (0); 削除済み 2020.01.16 17:58 #10412 Aleksey Mavrin: プログラミングが実質ゼロだと言うのなら、なぜそんな規格外の仕事を引き受けるのか、簡単なものから始めたらいいのでは?あるいは基礎知識を向上させる?やってもらうと楽なんですよ、ええ。 私は「インジケータを作ってくれ」とは書いていない。とお願いしました。mql4を完全にマスターしようとは思っていません。アイデアの確認をしているところです。もうエクセルで十分なんです)。 Igor Makanu 2020.01.16 18:03 #10413 Oleg Bondarev: 私は「ハッカー」であると警告した) その方法はこうだ。 これでティックチャートが描画されましたが、一部改行があります。 4でやってます。 折れ線はLabel1Buffer[ХХ]に値がないことを意味します。 そして2つ目は、上に書いたように、もう1度、インジケータ・バッファ(Label1Buffer) をターミナルで制御し、新しいバーを見れば、値はすべて自動的にシフトします - M1 でコードを実行し、観察してください。 ZS: ハッカーではなく、自分で学ぼうとしている人!)))) 削除済み 2020.01.16 18:15 #10414 Igor Makanu: 折れ線はLabel1Buffer[XXX]に値がないことを意味します。 そして2つ目は、上に書いたように、もう1度、インジケータ・バッファ(Label1Buffer)をターミナルで制御し、新しいバーが現れたら、値をすべて自動的にシフトさせるというものです - このコードをM1で実行し、観察してください ZS: ハッカーではなく、自分で学ぼうとしている人!)))) Label1Buffer[XXX] - 3つの合成数という意味でしょうか? Igor Makanu 2020.01.16 18:34 #10415 Oleg Bondarev: Label1Buffer[XXX] - これは3成分の数値でしょうか? いや、最初に覚えていた文字を書いたんです。 がその項目の番号です。 あなたのコードを見ると、私のループと同じように、インジケーターバッファLabel1Bufferを 1要素ずつシフトしていますね。 で、 Label1Bufferの 内容をシフトした後、Label1Buffer[0]に新しい 値を代入します。 そして、他の要素にはどのような値が入るのでしょうか。最初は「空の値」(EMPTY_VALUE)が入っていますが、一度シフトして新しい値を割り当てる......。で、新しいバーが 表示されると、端末自身がLabel1Bufferの 全ての値をシフトさせます。 一般的に、あなたの知識のわずかなシフトがありますが、単にインジケータとバーの終値を描画しようとすると、ここでコードは次のとおりです。 #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot line1 #property indicator_label1 "line1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input int Input1=10; //--- indicator buffers double line1Buffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,line1Buffer); IndicatorDigits(Digits); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int i,limit; //--- Первый вызов индикатора или смена таймфрейма или подгрузка данных из истории if(prev_calculated==0){ limit=rates_total-1; }else limit=rates_total-prev_calculated+1; // или limit=rates_total-prev_calculated ; чтобы не перерисовывать бар №1 //--- Основной цикл расчета //Print("limit = ",limit); for(i=limit; i>=0; i--){ line1Buffer[i]=close[i]; } //--- return(rates_total); } //+------------------------------------------------------------------+ 削除済み 2020.01.16 19:03 #10416 聞いていますよ。考えないといけないですね。ありがとうございました。 Alexandr Sokolov 2020.01.18 13:40 #10417 Excelでデータを記録するには?- MQL5です。 Excel のファイル形式は xlsx ですが、FileOpen 機能は txt と csv ファイルを作成し、動作させます。 OnTesterでテストした後、各ティックのオープニングの瞬間に異なるデータの履歴を含むバッファからデータをアンロードし、1つのチャートにすべてのディールのデータを出力する必要があります。 そのため、「手動で転送する」というオプションは適切ではありません。 おすすめは? Alexandr Sokolov 2020.01.18 14:21 #10418 Alexandr Sokolov: Excelにデータを取り込むには?- MQL5です。 Excel のファイル形式は xlsx で、FileOpen 機能は txt と csv ファイルを作成し動作させます。 OnTesterでテストした後、各ティックでポジションがオープンされた瞬間の異なるデータの履歴を含むバッファからデータをアンロードし、1つのチャートにすべてのトレードデータを表示する必要があります。 そのため、「手動で転送する」というオプションは適切ではありません。 おすすめは? さて、結論から言うと、MQL5を使ってExcelに直接書き込むことはできませんが、Excelの「データ」>>「テキストから」タブでテキストファイルからデータを取り込むことは可能です。 ukrop1203 2020.01.18 15:51 #10419 こんにちは、エクスプローラーテストを完了した後、失敗したオブジェクトに関するエラーが発生します。私が理解する限り、スタック内のすべてのオブジェクトを完全に作成しました、つまり、新規作成せずに。この問題について説明してください。 Igor Makanu 2020.01.18 16:37 #10420 Alexandr Sokolov: おすすめは? .csvで書き出し、Excelで開く 1...103510361037103810391040104110421043104410451046104710481049...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
プログラミングが実質ゼロだと言うのなら、なぜそんな規格外の仕事を引き受けるのか、簡単なものから始めたらいいのでは?あるいは基礎知識を向上させる?やってもらうと楽なんですよ、ええ。
私は「インジケータを作ってくれ」とは書いていない。とお願いしました。mql4を完全にマスターしようとは思っていません。アイデアの確認をしているところです。もうエクセルで十分なんです)。
私は「ハッカー」であると警告した)
その方法はこうだ。
これでティックチャートが描画されましたが、一部改行があります。
4でやってます。
折れ線はLabel1Buffer[ХХ]に値がないことを意味します。
そして2つ目は、上に書いたように、もう1度、インジケータ・バッファ(Label1Buffer) をターミナルで制御し、新しいバーを見れば、値はすべて自動的にシフトします - M1 でコードを実行し、観察してください。
ZS: ハッカーではなく、自分で学ぼうとしている人!))))
折れ線はLabel1Buffer[XXX]に値がないことを意味します。
そして2つ目は、上に書いたように、もう1度、インジケータ・バッファ(Label1Buffer)をターミナルで制御し、新しいバーが現れたら、値をすべて自動的にシフトさせるというものです - このコードをM1で実行し、観察してください
ZS: ハッカーではなく、自分で学ぼうとしている人!))))
Label1Buffer[XXX] - 3つの合成数という意味でしょうか?
Label1Buffer[XXX] - これは3成分の数値でしょうか?
いや、最初に覚えていた文字を書いたんです。
がその項目の番号です。
あなたのコードを見ると、私のループと同じように、インジケーターバッファLabel1Bufferを 1要素ずつシフトしていますね。
で、 Label1Bufferの 内容をシフトした後、Label1Buffer[0]に新しい 値を代入します。
そして、他の要素にはどのような値が入るのでしょうか。最初は「空の値」(EMPTY_VALUE)が入っていますが、一度シフトして新しい値を割り当てる......。で、新しいバーが 表示されると、端末自身がLabel1Bufferの 全ての値をシフトさせます。
一般的に、あなたの知識のわずかなシフトがありますが、単にインジケータとバーの終値を描画しようとすると、ここでコードは次のとおりです。
Excelでデータを記録するには?- MQL5です。
Excel のファイル形式は xlsx ですが、FileOpen 機能は txt と csv ファイルを作成し、動作させます。
OnTesterでテストした後、各ティックのオープニングの瞬間に異なるデータの履歴を含むバッファからデータをアンロードし、1つのチャートにすべてのディールのデータを出力する必要があります。
そのため、「手動で転送する」というオプションは適切ではありません。
おすすめは?
Excelにデータを取り込むには?- MQL5です。
Excel のファイル形式は xlsx で、FileOpen 機能は txt と csv ファイルを作成し動作させます。
OnTesterでテストした後、各ティックでポジションがオープンされた瞬間の異なるデータの履歴を含むバッファからデータをアンロードし、1つのチャートにすべてのトレードデータを表示する必要があります。
そのため、「手動で転送する」というオプションは適切ではありません。
おすすめは?
さて、結論から言うと、MQL5を使ってExcelに直接書き込むことはできませんが、Excelの「データ」>>「テキストから」タブでテキストファイルからデータを取り込むことは可能です。
おすすめは?
.csvで書き出し、Excelで開く