記事"かずかずのインスツルメントで取引を行うExpert Advisorの作成"についてのディスカッション - ページ 3 123456 新しいコメント Anatoliy Ivanov 2010.07.04 10:59 #21 6.足りないようです: TradePerformer(4, Symb4, Trade4, StLoss4, TkProfit4, Lots4, Slippage4, UpSignal, DnSignal, UpStop, DnStop); in Exp_TEMA.mq5 ? Nikolay Kositsin 2010.07.04 12:46 #22 ias:6.欠けているようだExp_TEMA.mq5? そうだ!こんな異常な暑さの中、頑張りすぎてオーバーヒートしてしまったに違いない! gisip 2010.07.05 09:47 #23 Renat:再現可能な例を作ってください。つまり、コンパイルして、チャートに投げて、結果が得られるような、出来合いのコードが必要なのです。 これがなければ、私たちが話していることを理解する人はほとんどいないでしょう。人々を無駄に遠ざけることのないように、私は手を抜こうと思った。これが完全版だ:#property indicator_separate_window // インジケータは別のウィンドウに描画されます。 #property indicator_buffers 1 #property indicator_plots 1 #property indicator_type1 DRAW_LINE #property indicator_color1 Aqua input string InstrumentName = "EURJPY"; //-- インジケータの配列 double ScreenBuffer[]; //-- ダイナミック・バッファ double ArrayBuffer[]; int OnInit() // 特別な init() 関数 { //-------------------------------------------------------------------- IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName); SetIndexBuffer(0,ScreenBuffer,INDICATOR_DATA); return 0; // 終了 } //-------------------------------------------------------------------- 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 Counted_bars; // 操作するバーの数 int copied; //-------------------------------------------------------------------- //1 入力 rates_total = 9667 / prev_calculated = 0 / Bars = 9667 //-- rates_total = 9667 / prev_calculated = 9667 / Bars = 9667 //-- 処理中 rate_total = 9668 / prev_calculated = 9667 / Bars = 9668 //Print("rates_total: " + (string)rates_total); if (rates_total == prev_calculated) return (rates_total);//-- 同じバーだから、もういい...」。 //-- 未処理のバーの数を取得する(最初の入力ではすべて、次に1)。 //-- 出力バーの数はチャートそのものを指すが、ここでは別の計器を出力する。 //-- バーの数は異なるかもしれないので、まずすべてのデータをバッファにダンプする。 Counted_bars = rates_total-prev_calculated; // Print("Counted_bars: " + Counted_bars); Print("rates_total: " + rates_total + " / prev_calculated: " + prev_calculated + " / Bars: " + Bars(Symbol(),0)); //-- メインの楽器の小節数でメモリーを割り当てる。 if (ArrayResize(ArrayBuffer, Counted_bars,0) == -1) return (rates_total);//-- メモリ割り当てエラー -- //--- EMPTY_VALUE値で配列要素を初期化する。 ArrayInitialize(ArrayBuffer,EMPTY_VALUE); //-- この楽器が実際に持っている小節数を取得する。 copied = (int)SeriesInfoInteger(InstrumentName,0,SERIES_BARS_COUNT); if (copied > 0){ copied=CopyClose(InstrumentName,0,0,copied,ArrayBuffer);//-- メモリ・バッファにデータを書き込む if (copied <= 0) return (rates_total);//-- エラー } else{ return (rates_total);//-- エラー } if (Counted_bars > copied) Counted_bars = copied;//-- 低い方の値を取る Counted_bars--;//-- 0から数えるので //-- メモリ・バッファにデータがロードされたので、それをスクリーン・バッファに右から左に書き込む。 for (int i = Counted_bars; i > 0; i--){ ScreenBuffer[i] = ArrayBuffer[i]; } //-------------------------------------------------------------------- return(rates_total); } void OnDeinit(const int reason) { ObjectsDeleteAll(0,0,-1); // チャートのすべてのオブジェクトが削除される。 } gisip 2010.07.05 10:01 #24 なぜ別のインストゥルメントのチャートを正常に表示できないのでしょうか?MQL4ではすべてうまくいったのですが、ここでは同じインストゥルメントに表示した場合のみうまくいき、その後はエラーは出ません。 削除済み 2010.07.05 10:22 #25 gisip:なぜ別のインストゥルメントのチャートを正常に表示できないのでしょうか?MQL4ではすべてうまくいったのですが、ここでは同じインストゥルメントに表示した場合のみうまくいき、その後はエラーは出ません。実装やアルゴリズムが正しいかどうかは分かりませんが、コードとそれでできたことから、私は次のように考えています:文字列// Print("Counted_bars: " + Counted_bars); Print("rates_total: " + rates_total + " / prev_calculated: " + prev_calculated + " / Bars: " + Bars(Symbol(),0)); 文字列は次のようになるはずです。// Print("Counted_bars: " + Counted_bars); Print("rates_total: " + rates_total + " / prev_calculated: " + prev_calculated + " / Bars: " + Bars(InstrumentName,Period())); おそらく、どこでもピリオドを "0 "としてPERIOD_CURRENTに 変更する方が正しいだろう。少なくとも、このような変更をした後は、すべてうまくいきました。追記あまり関係ないかもしれませんが、この方法だとコンパイラの重要度がぐっと下がります。Print("rates_total: ",rates_total," / prev_calculated: ",prev_calculated," / Bars: ",Bars(InstrumentName, PERIOD_CURRENT)); gisip 2010.07.05 10:30 #26 Interesting:一般的に正しい実装とアルゴリズムがわかっているわけではないが、コードとそれでできたことに基づいて、そう仮定することにする:文字列文字列は次のようになります。追記おそらく、どこでもピリオドを "0 "としてPERIOD_CURRENTに変更する方が正しいだろう。少なくとも、このような変更をした後は、すべてうまくいったのだが......。 グラフが現実に対応していない。 gisip 2010.07.05 10:40 #27 私の画面ではこう見える: 明らかに間違っている。 削除済み 2010.07.05 10:50 #28 私の場合はこうなった。しかし、私はインデューサーのロジックとその実装に踏み込んでいないので、結果の正しさを判断することはできない。追記私なら、パラメータのシンボルを削除して、現在のシンボルとTFで作成し、通常のiCustom()を使用してExpert Advisorまたは他のツールで使用します。それに、私はバッファ(電卓の末尾などのこと)を扱うロジックをよく理解していない。私の意見では、取り組むべきことがたくさんあります...。 ファイル: proba.mq5 4 kb gisip 2010.07.05 10:59 #29 Interesting:それが私が得たものだしかし、私はインデューサーのロジックとその実装に踏み込んでいないので、結果の正しさを判断することはできない。追記私なら、パラメータのシンボルを削除して、現在のシンボルとTFに従ったものにし、通常のiCustom()を使ってExpert Advisorや他のツールで使用します。 アドバイスありがとうございます。 削除済み 2010.07.05 11:11 #30 Interesting:それに、バッファ(電卓の尻尾などのこと)を使うロジックもよく理解できていない。私の意見では、まだまだ課題が山積みです......。私が正しく理解していれば、バッファは1つで十分です(正しく計算され、チャートに描画される必要があるだけです)。追記インデューサーは "右"(現在)ではなく、"左"(歴史の最初)のデータを表示するような気がするのですが・・・。それとも、このインジケータのロジックを全く理解していないのでしょうか? 123456 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
6.足りないようです:
TradePerformer(4, Symb4, Trade4, StLoss4, TkProfit4, Lots4, Slippage4, UpSignal, DnSignal, UpStop, DnStop);
in Exp_TEMA.mq5 ?
6.欠けているようだ
Exp_TEMA.mq5?
再現可能な例を作ってください。つまり、コンパイルして、チャートに投げて、結果が得られるような、出来合いのコードが必要なのです。
これがなければ、私たちが話していることを理解する人はほとんどいないでしょう。人々を無駄に遠ざけることのないように、私は手を抜こうと思った。
これが完全版だ:
なぜ別のインストゥルメントのチャートを正常に表示できないのでしょうか?
MQL4ではすべてうまくいったのですが、ここでは同じインストゥルメントに表示した場合のみうまくいき、その後はエラーは出ません。
なぜ別のインストゥルメントのチャートを正常に表示できないのでしょうか?
MQL4ではすべてうまくいったのですが、ここでは同じインストゥルメントに表示した場合のみうまくいき、その後はエラーは出ません。
実装やアルゴリズムが正しいかどうかは分かりませんが、コードとそれでできたことから、私は次のように考えています:
文字列
文字列は次のようになるはずです。
おそらく、どこでもピリオドを "0 "としてPERIOD_CURRENTに 変更する方が正しいだろう。
少なくとも、このような変更をした後は、すべてうまくいきました。
追記
あまり関係ないかもしれませんが、この方法だとコンパイラの重要度がぐっと下がります。
一般的に正しい実装とアルゴリズムがわかっているわけではないが、コードとそれでできたことに基づいて、そう仮定することにする:
文字列
文字列は次のようになります。
追記
おそらく、どこでもピリオドを "0 "としてPERIOD_CURRENTに変更する方が正しいだろう。
少なくとも、このような変更をした後は、すべてうまくいったのだが......。
私の画面ではこう見える:

明らかに間違っている。私の場合はこうなった。
しかし、私はインデューサーのロジックとその実装に踏み込んでいないので、結果の正しさを判断することはできない。
追記
私なら、パラメータのシンボルを削除して、現在のシンボルとTFで作成し、通常のiCustom()を使用してExpert Advisorまたは他のツールで使用します。
それに、私はバッファ(電卓の末尾などのこと)を扱うロジックをよく理解していない。私の意見では、取り組むべきことがたくさんあります...。
それが私が得たものだ
しかし、私はインデューサーのロジックとその実装に踏み込んでいないので、結果の正しさを判断することはできない。
追記
私なら、パラメータのシンボルを削除して、現在のシンボルとTFに従ったものにし、通常のiCustom()を使ってExpert Advisorや他のツールで使用します。
Interesting:
それに、バッファ(電卓の尻尾などのこと)を使うロジックもよく理解できていない。私の意見では、まだまだ課題が山積みです......。
私が正しく理解していれば、バッファは1つで十分です(正しく計算され、チャートに描画される必要があるだけです)。
追記
インデューサーは "右"(現在)ではなく、"左"(歴史の最初)のデータを表示するような気がするのですが・・・。
それとも、このインジケータのロジックを全く理解していないのでしょうか?