記事"かずかずのインスツルメントで取引を行うExpert Advisorの作成"についてのディスカッション - ページ 4 123456 新しいコメント gisip 2010.07.05 11:23 #31 Interesting:私の理解が正しければ、バッファは1つで十分です(正しく計算され、グラフに描画される必要があります)。追記インデューサーは "右"(現在)ではなく、"左"(歴史の最初)のデータを表示するような気がするのですが・・・。あるいは、このインジケータのロジックをまったく理解していないのかもしれません。例えばEURUSDをEURUSDに、EURJPYをEURJPYに出力すれば、すべてうまくいきます。つまり、出力方向は正しいようです。私はここで多くのバリエーションを試しました:handle1=iMA(InstrumentName,PERIOD_CURRENT,ex_Period_MA_1,0,MODE_SMA, PRICE_CLOSE);...copied=CopyBuffer(handle1,0,0,0,Counted_bars,Buf_0);それでも何も出てこない。どなたか、1つの画面に2つの異なるツールを表示する例を、少なくとも何らかの方法でお持ちではないでしょうか? Sergey Pavlov 2010.07.05 11:34 #32 gisip:なぜ別の計器のチャートを正常に表示できないのでしょうか?MQL4ではすべてうまくいったのですが、ここでは同じインストゥルメントに表示した場合のみうまくいき、その後はエラーは出ません。トリミングした形では動作します。チェックとエコノミクスを追加してください。#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); ArraySetAsSeries(ArrayBuffer,true); ArraySetAsSeries(ScreenBuffer,true); 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; //-------------------------------------------------------------------- copied=(int)SeriesInfoInteger(InstrumentName,0,SERIES_BARS_COUNT); copied=CopyClose(InstrumentName,PERIOD_M1,0,copied,ArrayBuffer);//-- メモリ・バッファにデータを書き込む for(int i=0; i<copied; i++) { ScreenBuffer[i]=ArrayBuffer[i]; } //-------------------------------------------------------------------- return(rates_total); } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0,0,-1); // チャートのすべてのオブジェクトが削除される。 } 削除済み 2010.07.05 11:41 #33 gisip:例えばEURUSDをEURUSDに、EURJPYをEURJPYに出力すると、すべてうまくいきます。つまり、出力方向はある意味正しい。私はここで多くのバリエーションを試しました:handle1=iMA(InstrumentName,PERIOD_CURRENT,ex_Period_MA_1,0,MODE_SMA, PRICE_CLOSE);...copied=CopyBuffer(handle1,0,0,0,Counted_bars,Buf_0);それでも何も出てこない。どなたか、1つの画面に2つの異なるツールを表示する例を、少なくとも何らかの方法でお持ちではないでしょうか?MQL4のソースコードはありますか?私はすでに代替案を提案しましたが、それは現在のインストゥルメント用のインデックスを作り、それを100%デバッグすることです。その後、Expert Advisorや他の指標で必要なパラメータを使って簡単に呼び出すことができます。このような実装では、計算機に渡されるパラメータが他のインストゥルメントでは正しくない(バーの数などが 一致しない)ため、インディクターの基本的なロジックを変更する必要があります。そして大体において、このコンセプトはあまり「正しくない」のです(控えめに言って)。追記要するに、ここには2つの選択肢がある:1.現在のTFとインストゥルメントに対してすべてを実現し、その操作性をチェックする。 その後、iCustom()を使用する;2.インデューサのロジックを、計算機でパラメータで指定された計器のすべてのデータを絶対に受信するように書き換える(コストがかかり、あまり正しくない方法)。 Документация по MQL5: Доступ к таймсериям и индикаторам / Bars www.mql5.com Доступ к таймсериям и индикаторам / Bars - Документация по MQL5 Rashid Umarov 2010.07.05 11:44 #34 gisip: 変更したが、まだ機能せず、チャートが正しくない。インジケータで次の操作を行ってください。//+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int OnInit() // 特別な init() 関数 { //-------------------------------------------------------------------- IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName); SetIndexBuffer(0,ScreenBuffer,INDICATOR_DATA); ArraySetAsSeries(ScreenBuffer,true); return 0; // 終了 }配列と時系列におけるインデックスの方向」をお読みください。 削除済み 2010.07.05 12:05 #35 DC2008:切り取られたフォームが機能。チェックとエコノミーを追加する。この2つは実際には必要ない。//1//-- ダイナミック・バッファ double ArrayBuffer[]; ............... ArraySetAsSeries(ArrayBuffer,true); //2 for(int i=0; i<copied; i++) { ScreenBuffer[i]=ArrayBuffer[i]; } Sergey Pavlov 2010.07.05 12:07 #36 Interesting:その2つは必要ないものだ。 実はそうなんだ。 gisip 2010.07.05 12:55 #37 うん、うまくいったと思う!本当にありがとう!もっとテストしてみます。 Prival 2010.07.05 15:13 #38 取引を視覚化する必要があるExpert Advisorは多通貨に対応しています。EURUSDでハングアップし、他の通貨ペアで取引を開くとします。結果に違いがあり、それは私のせいだと理解していますが、確認することができません(Expert AdvisorがEURUSDに掛かっていると、AUDUSDの取引でチャートを開く ことができません)。 Expert AdvisorがAUDUSDに掛かっているときは、開いてみるとプログラム通りに動いているのですが、EURUSDに掛かっているときは結果が違っていて、その理由がわかりません。トレードの視覚化はとても役に立ちます。 Документация по MQL5: Операции с графиками / ChartOpen www.mql5.com Операции с графиками / ChartOpen - Документация по MQL5 Anatoliy Ivanov 2010.07.16 22:41 #39 7.Exp_TEMA.mq5をテストすると、Told[] Tnew[1]式に次の値が表示されます。 Told[] 式を評価できませんでした。 Tnew[1] 無効な配列範囲です。 これらの値は何を意味し、Expert Advisorの作業結果にどのように影響するのでしょうか? 8.テスト中にExp_TEMA.mq5がバー内で取引を開始するのはなぜですか? 9.ポジションをクローズして反対方向にポジションを建てる代わりに、フリップ、つまり2倍のボリュームで反対方向にポジションを建てることは、コードの削減、取引実行時間の短縮、スリッページの削減、コスト(手数料など)の削減につながりますか? バー内での取引。 削除済み 2010.07.16 22:51 #40 ias:7.Exp_TEMA.mq5をテストすると、Told[] Tnew[1]式が次の値を取得します。 Told[] 式を評価できませんでした。 Tnew[1] 無効な配列範囲です。 これらの値は何を意味し、Expert Advisorの動作にどのように影響しますか?Tnew[1]無効な配列 範囲については、範囲のオーバーランと思われます。配列の項目 番号は 0 から始まることを忘れないでください! 123456 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私の理解が正しければ、バッファは1つで十分です(正しく計算され、グラフに描画される必要があります)。
追記
インデューサーは "右"(現在)ではなく、"左"(歴史の最初)のデータを表示するような気がするのですが・・・。
あるいは、このインジケータのロジックをまったく理解していないのかもしれません。
例えばEURUSDをEURUSDに、EURJPYをEURJPYに出力すれば、すべてうまくいきます。
つまり、出力方向は正しいようです。
私はここで多くのバリエーションを試しました:
handle1=iMA(InstrumentName,PERIOD_CURRENT,ex_Period_MA_1,0,MODE_SMA, PRICE_CLOSE);
...
copied=CopyBuffer(handle1,0,0,0,Counted_bars,Buf_0);
それでも何も出てこない。
どなたか、1つの画面に2つの異なるツールを表示する例を、少なくとも何らかの方法でお持ちではないでしょうか?
なぜ別の計器のチャートを正常に表示できないのでしょうか?
MQL4ではすべてうまくいったのですが、ここでは同じインストゥルメントに表示した場合のみうまくいき、その後はエラーは出ません。
トリミングした形では動作します。チェックとエコノミクスを追加してください。
例えばEURUSDをEURUSDに、EURJPYをEURJPYに出力すると、すべてうまくいきます。
つまり、出力方向はある意味正しい。
私はここで多くのバリエーションを試しました:
handle1=iMA(InstrumentName,PERIOD_CURRENT,ex_Period_MA_1,0,MODE_SMA, PRICE_CLOSE);
...
copied=CopyBuffer(handle1,0,0,0,Counted_bars,Buf_0);
それでも何も出てこない。
どなたか、1つの画面に2つの異なるツールを表示する例を、少なくとも何らかの方法でお持ちではないでしょうか?
MQL4のソースコードはありますか?
私はすでに代替案を提案しましたが、それは現在のインストゥルメント用のインデックスを作り、それを100%デバッグすることです。その後、Expert Advisorや他の指標で必要なパラメータを使って簡単に呼び出すことができます。
このような実装では、計算機に渡されるパラメータが他のインストゥルメントでは正しくない(バーの数などが 一致しない)ため、インディクターの基本的なロジックを変更する必要があります。
そして大体において、このコンセプトはあまり「正しくない」のです(控えめに言って)。
追記
要するに、ここには2つの選択肢がある:
1.現在のTFとインストゥルメントに対してすべてを実現し、その操作性をチェックする。 その後、iCustom()を使用する;
2.インデューサのロジックを、計算機でパラメータで指定された計器のすべてのデータを絶対に受信するように書き換える(コストがかかり、あまり正しくない方法)。
変更したが、まだ機能せず、チャートが正しくない。
インジケータで次の操作を行ってください。
配列と時系列におけるインデックスの方向」をお読みください。
切り取られたフォームが機能。チェックとエコノミーを追加する。
この2つは実際には必要ない。
//1
//2
その2つは必要ないものだ。
うん、うまくいったと思う!
本当にありがとう!
もっとテストしてみます。
取引を視覚化する必要があるExpert Advisorは多通貨に対応しています。EURUSDでハングアップし、他の通貨ペアで取引を開くとします。結果に違いがあり、それは私のせいだと理解していますが、確認することができません(Expert AdvisorがEURUSDに掛かっていると、AUDUSDの取引でチャートを開く ことができません)。
Expert AdvisorがAUDUSDに掛かっているときは、開いてみるとプログラム通りに動いているのですが、EURUSDに掛かっているときは結果が違っていて、その理由がわかりません。トレードの視覚化はとても役に立ちます。
7.Exp_TEMA.mq5をテストすると、Told[] Tnew[1]式に次の値が表示されます。
Told[] 式を評価できませんでした。
Tnew[1] 無効な配列範囲です。
これらの値は何を意味し、Expert Advisorの作業結果にどのように影響するのでしょうか?
8.テスト中にExp_TEMA.mq5がバー内で取引を開始するのはなぜですか?
9.ポジションをクローズして反対方向にポジションを建てる代わりに、フリップ、つまり2倍のボリュームで反対方向にポジションを建てることは、コードの削減、取引実行時間の短縮、スリッページの削減、コスト(手数料など)の削減につながりますか?
バー内での取引。
7.Exp_TEMA.mq5をテストすると、Told[] Tnew[1]式が次の値を取得します。
Told[] 式を評価できませんでした。
Tnew[1] 無効な配列範囲です。
これらの値は何を意味し、Expert Advisorの動作にどのように影響しますか?