初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1339 1...133213331334133513361337133813391340134113421343134413451346...1504 新しいコメント Alexey Viktorov 2021.08.29 06:16 #13381 Kira27 #: ハイ!!どこで間違えたか教えてください!!自分でもよくわかりません(笑) 275個のツールのうち、27個を処理し、スクリプトを強制終了させると、スタックしてメモリを占拠し、エラー文字列を生成するのです。 この配列の場合 double bufer_MA[]; //Буфер для хендла で、それを使って CopyBuffer(MA200,0,TimeCurrent(),5,bufer_MA); // заполнение масива bufer_MA хендлом MA200 выбранного тайма それは全く正しいことではありません。 それとも私が何か勘違いしているのでしょうか? Artyom Trishkin 2021.08.29 09:21 #13382 Alexey Viktorov #:この配列の場合で、それを使っては全く正しくない。それとも何か誤解があったのでしょうか? いろいろと問題があるんです。 Kira27 2021.08.29 10:32 #13383 Alexey Viktorov #:この配列の場合で、それを使ってПример: //+------------------------------------------------------------------+ //| TestCopyBuffer3.mq5 | //| Copyright 2009, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2009, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //---- plot MA #property indicator_label1 "MA" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input bool AsSeries=true; input int period=15; input ENUM_MA_METHOD smootMode=MODE_EMA; input ENUM_APPLIED_PRICE price=PRICE_CLOSE; input int shift=0; //--- indicator buffers double MABuffer[]; int ma_handle; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,MABuffer,INDICATOR_DATA); Print("Параметр AsSeries = ",AsSeries); Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ", ArrayGetAsSeries(MABuffer)); //--- set short indicator name IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries); //--- set AsSeries (depends on input parameter) ArraySetAsSeries(MABuffer,AsSeries); Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ", ArrayGetAsSeries(MABuffer)); //--- ma_handle=iMA(Symbol(),0,period,shift,smootMode,price); 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[]) { //--- check if all data calculated if(BarsCalculated(ma_handle)<rates_total) return(0); //--- we can copy not all data int to_copy; if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total; else { to_copy=rates_total-prev_calculated; //--- last value is always copied to_copy++; } //--- try to copy if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0) return(0); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ は全く正しくない。それとも何か誤解があったのでしょうか? なぜ間違っているかというと、関数への例では CopyBuffer と使用します。 Kira27 2021.08.29 10:39 #13384 Alexey Viktorov #: それとも何か誤解があったのでしょうか? このスクリプトのポイントは、1分から4時間のタイムフレームでマーケットウォッチの各商品を調べ、MA200を超える価格を見つけ、この事実が検出された場合、6つのタイムフレームすべてでMAを超える価格を持つシンボルの名前を含むアラートを生成することです。 Kira27 2021.08.29 10:46 #13385 Artyom Trishkin #:いろいろと問題があるんです。 より具体的に、差し支えなければ) Artyom Trishkin 2021.08.29 19:53 #13386 Kira27 #:より具体的に、差し支えなければ) 配列のインデックスが気持ち悪い...。同じデータをループでコピーする...新しいハンドルをループで作成する - No words... 他は見たくもない、申し訳ない Kira27 2021.08.29 21:53 #13387 Artyom Trishkin #:配列のインデックスが気持ち悪い...。同じデータをループでコピーする...新しいハンドルをループで作成する - No words...残りのコードは見たくもない、申し訳ない 配列のインデックスがよくわからないのですが、どのような配列が嫌なのでしょうか? CopyBuffer関数の43行目のデータは、1分から4Hまでの異なる時間枠のハンドルをコピーします。5つのMA指標の価格が、最初の5バー分コピーされ、ハンドルと5バーの配列は繰り返しごとにゼロにされます。 ArrayFree(bufer_MA); となり、ハンドルが削除される。 IndicatorRelease(MA200); //Удаление хендла 274シンボル、それぞれを6タイムフレームで処理するアルゴリズムを、他の方法で提案していただければ。 ただ、このスレッドはなんだか--初心者からの質問ということで、私がプロなら、たぶん質問はないでしょうね。 Fast235 2021.08.29 22:12 #13388 異なる状況でのハンドルの作成は コストがかからないと思われる、プリロードなしの単なるポインタか? 主な作業はCopyBufferで行われる ループ内のハンドルを外す必要はないので、確認が必要かもしれません。 個人的には、最初の作成時のみ一定の問題があり、Sleep()でチャートを読み込むか、相場を事前に読み込む機能で解決しています。 開発者が自分で決めるべきで、OnInitではスピードは重要ではなく、7つのシンボルを持つ最初のインジケーターのことです。 ---------- ハンドルの作成はどのように行われるのですか?特別なループでは、可用性をチェックする必要があるのですか? Kira27 2021.08.29 23:29 #13389 Fast235 #:異なる状況でのハンドルの作成は コストがかからないと思われる、プリロードなしの単なるポインタか? 主な作業はCopyBufferで行われるループ内のハンドルを削除する必要はありません。 個人的には、最初の作成時のみ一定の問題があります。Sleep()でチャートをロードするか、クォート関数をプリロードすることで解決します。開発者が自分で決めるべきで、OnInitではスピードは重要ではなく、7つのシンボルを持つ最初のインジケーターのことです、エラーは常に異なる繰り返しで表示されます----------ハンドルの作成はどのように行われるのですか?特別なループでは、可用性をチェックする必要があるのですか? 私に言っているのか、それとも現地の専門家に聞いているのか......) Fast235 2021.08.29 23:37 #13390 Kira27 #:私に言っているのか、それともここの専門家に聞いているのか) ハンドルの作成と削除について。 動作する、正しい方法に興味がある、開発者が教えてくれることを期待する。 1...133213331334133513361337133813391340134113421343134413451346...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ハイ!!どこで間違えたか教えてください!!自分でもよくわかりません(笑)
275個のツールのうち、27個を処理し、スクリプトを強制終了させると、スタックしてメモリを占拠し、エラー文字列を生成するのです。
この配列の場合
で、それを使って
それは全く正しいことではありません。
それとも私が何か勘違いしているのでしょうか?
この配列の場合
で、それを使って
は全く正しくない。
それとも何か誤解があったのでしょうか?
いろいろと問題があるんです。
この配列の場合
で、それを使って
は全く正しくない。
それとも何か誤解があったのでしょうか?
なぜ間違っているかというと、関数への例では
CopyBuffer
と使用します。
Alexey Viktorov #:
それとも何か誤解があったのでしょうか?
このスクリプトのポイントは、1分から4時間のタイムフレームでマーケットウォッチの各商品を調べ、MA200を超える価格を見つけ、この事実が検出された場合、6つのタイムフレームすべてでMAを超える価格を持つシンボルの名前を含むアラートを生成することです。
いろいろと問題があるんです。
より具体的に、差し支えなければ)
より具体的に、差し支えなければ)
配列のインデックスが気持ち悪い...。同じデータをループでコピーする...新しいハンドルをループで作成する - No words...
他は見たくもない、申し訳ない
配列のインデックスが気持ち悪い...。同じデータをループでコピーする...新しいハンドルをループで作成する - No words...
残りのコードは見たくもない、申し訳ない
配列のインデックスがよくわからないのですが、どのような配列が嫌なのでしょうか? CopyBuffer関数の43行目のデータは、1分から4Hまでの異なる時間枠のハンドルをコピーします。5つのMA指標の価格が、最初の5バー分コピーされ、ハンドルと5バーの配列は繰り返しごとにゼロにされます。
ArrayFree(bufer_MA);
となり、ハンドルが削除される。
274シンボル、それぞれを6タイムフレームで処理するアルゴリズムを、他の方法で提案していただければ。 ただ、このスレッドはなんだか--初心者からの質問ということで、私がプロなら、たぶん質問はないでしょうね。
異なる状況でのハンドルの作成は コストがかからないと思われる、プリロードなしの単なるポインタか? 主な作業はCopyBufferで行われる
ループ内のハンドルを外す必要はないので、確認が必要かもしれません。 個人的には、最初の作成時のみ一定の問題があり、Sleep()でチャートを読み込むか、相場を事前に読み込む機能で解決しています。
開発者が自分で決めるべきで、OnInitではスピードは重要ではなく、7つのシンボルを持つ最初のインジケーターのことです。
----------
ハンドルの作成はどのように行われるのですか?特別なループでは、可用性をチェックする必要があるのですか?
異なる状況でのハンドルの作成は コストがかからないと思われる、プリロードなしの単なるポインタか? 主な作業はCopyBufferで行われる
ループ内のハンドルを削除する必要はありません。 個人的には、最初の作成時のみ一定の問題があります。Sleep()でチャートをロードするか、クォート関数をプリロードすることで解決します。
開発者が自分で決めるべきで、OnInitではスピードは重要ではなく、7つのシンボルを持つ最初のインジケーターのことです、エラーは常に異なる繰り返しで表示されます
----------
ハンドルの作成はどのように行われるのですか?特別なループでは、可用性をチェックする必要があるのですか?
私に言っているのか、それとも現地の専門家に聞いているのか......)
私に言っているのか、それともここの専門家に聞いているのか)
ハンドルの作成と削除について。
動作する、正しい方法に興味がある、開発者が教えてくれることを期待する。