MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 846 1...839840841842843844845846847848849850851852853...1953 新しいコメント Alexey Viktorov 2019.05.20 13:28 #8451 erotin:ロットの配給のどこが悪いのか、教えてください。 すべてが間違っている。EAが通過すべきチェックとは...」という記事を読む。そこには、既成の機能がある。 Sergey Voytsekhovsky 2019.05.20 14:02 #8452 空のテンプレートを作成し、iCustom()関数に必要なものを準備しました。 気になるiCrossADのインジケータを関数に入れました。 この関数は動作し、一番外側の上矢印と下矢印のインデックスを正しく見つけますが、これらの矢印が設定された価格値が間違っています。 コードは短いので、ここに書いておきますが、念のため、このアドバイザーとインジケーターのファイルを添付しておきます。 //+------------------------------------------------------------------+ //| TestDoEasyPart08.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://mql5.com/ru/users/artmedia70" #property version "1.00" #property description "" #property strict //--- includes #include <DoEasy\Engine.mqh> #include <Trade\Trade.mqh> #include <Trade\PositionInfo.mqh> #include <Trade\SymbolInfo.mqh> //--- input string Inp_param_indi_iCrossAD = "Input parameters indicator iCrossAD";//----- "Внешние параметры индикатора iCrossAD" ----- input uint InpPeriodFind = 400; // Bars for calculate input uint InpUnheckedBars = 2; // Unchecked bars input uint InpPeriodIND = 21; // CCI period //--- global variables CEngine engine; CTrade trade; CPositionInfo apos; CSymbolInfo asymbol; uint period_find = InpPeriodFind; //Number bars for calculate int CrossAD; //Хэндл индикатора iCrossAD double Buf_Arrow_Sell[], //Массив буфера для приема значений последних стрелок ВНИЗ из индикатора iCrossAD Last_Arrow_Sell_volume, //Переменная для записи значения цены последней стрелки ВНИЗ индикатора iCrossAD Last_Arrow_Sell_index; //Переменная для записи значения индекса свечи последней стрелки ВНИЗ индикатора iCrossAD double Buf_Arrow_Buy[], Last_Arrow_Buy_volume, Last_Arrow_Buy_index; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ArraySetAsSeries(Buf_Arrow_Buy, true); ArraySetAsSeries(Buf_Arrow_Sell, true); //--- CrossAD = iCustom(asymbol.Name(), _Period, "iCrossAD"); if (CrossAD == INVALID_HANDLE) { Print("Не удалось создать описатель индикатора iCrossAD!"); return(INIT_FAILED); } else Print("Хендл iCrossAD = ",CrossAD); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- delete objects ObjectsDeleteAll(0,"",-1); Comment(""); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { int n=0; if (CopyBuffer(CrossAD, 1, 0, period_find, Buf_Arrow_Buy) != period_find) { Print("НЕ удалось правильно скопировать данные из 1-го буфера индикатора iCrossAD, error code %d",GetLastError()); return; } for(n=0; n<period_find; n++) { if(Buf_Arrow_Buy[n]!=EMPTY_VALUE)break; } Last_Arrow_Buy_volume = Buf_Arrow_Buy[n]; Last_Arrow_Buy_index = n; Print("Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume,", Last_Arrow_Buy_index = ",Last_Arrow_Buy_index); if (CopyBuffer(CrossAD, 2, 0, period_find, Buf_Arrow_Sell) != period_find) { Print("НЕ удалось правильно скопировать данные из 2-го буфера индикатора iCrossAD, error code %d",GetLastError()); return; } for(n=0; n<period_find; n++) { if(Buf_Arrow_Sell[n]!=EMPTY_VALUE)break; } Last_Arrow_Sell_volume = Buf_Arrow_Sell[n]; Last_Arrow_Sell_index = n; Print("Last_Arrow_Sell_volume = ",Last_Arrow_Sell_volume,", Last_Arrow_Sell_index = ",Last_Arrow_Sell_index); Comment("-------------------------", "\n Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume, "\n Last_Arrow_Buy_index = ",Last_Arrow_Buy_index, "\n ---------------------- ", "\n Last_Arrow_Sell_volume = ",Last_Arrow_Sell_volume, "\n Last_Arrow_Sell_index = ",Last_Arrow_Sell_index ); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { if(!MQLInfoInteger(MQL_TESTER)) engine.OnTimer(); } ファイル: Test_iCustom.mq5 10 kb iCrossAD.mq5 49 kb Sergey Voytsekhovsky 2019.05.20 14:13 #8453 Experts」タブのログエントリーはこのようになっています。 2019.05.20 15:11:15.025 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0.2019.05.20 15:11:15.025 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = -11203799.85975282, Last_Arrow_Sell_index = 50.02019.05.20 15:11:16.798 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.02019.05.20 15:11:16.798 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = -11203799.85975282, Last_Arrow_Sell_index = 50.0 Sergey Voytsekhovsky 2019.05.20 14:16 #8454 Sergey Voytsekhovsky:Experts」タブのログエントリーはこのようになっています。 2019.05.20 15:11:15.025 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0.矢印が作成された価格=-11211905.17483469の代わりに Artyom Trishkin 2019.05.20 14:29 #8455 Sergey Voytsekhovsky: ... 代わりに矢印が作成された価格 = -11211905.17483469 Ctrl+Dを押して、インジケーターの線に沿って マウスを動かし、データウィンドウでそのバッファの持つ値を確認します。 Sergey Voytsekhovsky 2019.05.20 14:42 #8456 Artyom Trishkin:Ctrl+Dを押して、インジケーターの線に沿って マウスをドラッグし、データウィンドウでそのバッファがどのような値を持っているかを見てください。私の理解が正しければ、私はそこにいない猫を部屋の中で探していたのでしょうか?配列には価格ではなく、その時のインジケーターの値が格納されていたのですね。ありがとうございます、考え直します。 最後の質問ですが、コンパイラは2つの警告を出します。 sign mismatch Test_iCustom.mq5 79 20sign mismatch Test_iCustom.mq5 92 20 その理由がわからないのですが、教えてください。符号の不一致」(Yandex翻訳機)の意味とは? Artyom Trishkin 2019.05.20 15:01 #8457 Sergey Voytsekhovsky:私の理解が正しければ、私はそこにいない猫を部屋の中で探していたのでしょうか?配列には価格ではなく、その時のインジケーターの値が格納されていたのですね。ありがとうございます、考え直します。 最後の質問ですが、コンパイラは2つの警告を出します。 sign mismatch Test_iCustom.mq5 79 20sign mismatch Test_iCustom.mq5 92 20 その理由がわからないのですが、教えてください。符号の不一致」(Yandex翻訳機)とはどういう意味ですか?ナンバーサインをなくしてしまうかもしれません。これらのコード行を表示します。 Sergey Voytsekhovsky 2019.05.20 15:03 #8458 Artyom Trishkin:ナンバーサインをなくしてしまうかもしれません。これらのコード行を表示します。for(n=0; n<period_find; n++) 2つ目も全く同じです(Arrows配列で0以外の値を探すループ)。 Artyom Trishkin 2019.05.20 15:16 #8459 Sergey Voytsekhovsky: 2つ目も全く同じです(配列「Arrows」で0以外の値を探すループ)。変数nと period_findの 型は何ですか? 最も重要なことは、彼らが見せなかった...。 試してみてください。 for(n=0; n<(int)period_find; n++)OnTick()ハンドラのレベルでループ変数を宣言しているのはなぜですか? こんなやり方もあるんですね。 for(int n=0; n<(int)period_find; n++) OnTick() から n 宣言は削除できます。 Sergey Voytsekhovsky 2019.05.20 15:19 #8460 Artyom Trishkin:変数nとperiod_findの型は何ですか?最も重要なことで、表示されないのは...。uint period_find = InpPeriodFind; //Number bars for calculate int n=0; 1...839840841842843844845846847848849850851852853...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ロットの配給のどこが悪いのか、教えてください。
すべてが間違っている。EAが通過すべきチェックとは...」という記事を読む。そこには、既成の機能がある。
空のテンプレートを作成し、iCustom()関数に必要なものを準備しました。
気になるiCrossADのインジケータを関数に入れました。
この関数は動作し、一番外側の上矢印と下矢印のインデックスを正しく見つけますが、これらの矢印が設定された価格値が間違っています。
コードは短いので、ここに書いておきますが、念のため、このアドバイザーとインジケーターのファイルを添付しておきます。
Experts」タブのログエントリーはこのようになっています。
2019.05.20 15:11:15.025 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0.
2019.05.20 15:11:15.025 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = -11203799.85975282, Last_Arrow_Sell_index = 50.0
2019.05.20 15:11:16.798 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0
2019.05.20 15:11:16.798 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = -11203799.85975282, Last_Arrow_Sell_index = 50.0
Experts」タブのログエントリーはこのようになっています。
2019.05.20 15:11:15.025 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0.
矢印が作成された価格=-11211905.17483469の代わりに
Sergey Voytsekhovsky:
...
代わりに矢印が作成された価格 = -11211905.17483469
Ctrl+Dを押して、インジケーターの線に沿って マウスを動かし、データウィンドウでそのバッファの持つ値を確認します。
Ctrl+Dを押して、インジケーターの線に沿って マウスをドラッグし、データウィンドウでそのバッファがどのような値を持っているかを見てください。
私の理解が正しければ、私はそこにいない猫を部屋の中で探していたのでしょうか?配列には価格ではなく、その時のインジケーターの値が格納されていたのですね。ありがとうございます、考え直します。
最後の質問ですが、コンパイラは2つの警告を出します。
sign mismatch Test_iCustom.mq5 79 20
sign mismatch Test_iCustom.mq5 92 20
その理由がわからないのですが、教えてください。符号の不一致」(Yandex翻訳機)の意味とは?
私の理解が正しければ、私はそこにいない猫を部屋の中で探していたのでしょうか?配列には価格ではなく、その時のインジケーターの値が格納されていたのですね。ありがとうございます、考え直します。
最後の質問ですが、コンパイラは2つの警告を出します。
sign mismatch Test_iCustom.mq5 79 20
sign mismatch Test_iCustom.mq5 92 20
その理由がわからないのですが、教えてください。符号の不一致」(Yandex翻訳機)とはどういう意味ですか?
ナンバーサインをなくしてしまうかもしれません。これらのコード行を表示します。
ナンバーサインをなくしてしまうかもしれません。これらのコード行を表示します。
2つ目も全く同じです(配列「Arrows」で0以外の値を探すループ)。
変数nと period_findの 型は何ですか? 最も重要なことは、彼らが見せなかった...。
試してみてください。
OnTick()ハンドラのレベルでループ変数を宣言しているのはなぜですか?
こんなやり方もあるんですね。
OnTick() から n 宣言は削除できます。
変数nとperiod_findの型は何ですか?最も重要なことで、表示されないのは...。