MQL5言語をゼロから独学で学ぶ - ページ 80

 

エラーがあるので、作者が意図したとおりに動作しない。それを見極めなければならない。あなたはコードを持っていて、手持ちのカードを持っています。


表示された内容から、ローソク足が60未満であるか、いずれかの指標のハンドルが無効であり、パラメータが正しく送信されていないことがわかります。または、私が見ていない他の部分にエラーがあります。

ウラジミールさん、ありがとうございます。

おっと、アレクセイ;)

 
MrBrooklin #:

問題がどこにあるかは自分で何とか見つけましたが、質問はそれ以外のことでした。これらのエラーによって何が影響を受けるのか、また、これらのエラーをなくすにはコードのどこを変えれば いいのでしょうか?

敬具 ウラジミール

エラーが発生した場合、Expert Advisorはチャートにアタッチされません。

何もしなくていいんです。すでに行われたこと - エラーの場合、Expert Advisorはチャートから切り離されます。

を表示し、ユーザーに知らせます。

このエラーは、パソコンが故障したとき以外には、実質的に発生しません。

==

しかし、開発中に必ず発生するとなると...。

インジケータが正しく呼び出されていないことを意味します - インジケータのパラメータを修正します。

 
Dmitry Fedoseev #:

このエラーが発生すると、EAがチャートにアタッチされません。

何もしなくていいんです。すでに行われたこと - エラーが発生した場合、Expert Advisorはチャートから切り離されます。

を表示し、ユーザーに知らせます。

このエラーは、パソコンが故障しているとき以外は、実質的に発生しません。

==

しかし、開発中に必ず発生するとなると...。

インジケーターの呼び方が間違っていることを意味します。インジケーターのパラメータを修正してください。

ドミトリーさん、包括的で分かりやすい回答ありがとうございました。

ウラジミールさん、ありがとうございます。

 
SanAlex #:

ここで動作します -多分、ピリオドを正しく設定して いないのでしょう。

情報ありがとうございます!!!確かに、テスターの設定で両指標の期間を「0」以上から設定できないのが問題でした。せめて「1」以上から設定すればよかった。

皆様、ご参加ありがとうございました。

ウラジミールさん、ありがとうございます。

 
MrBrooklin #:

P.S. EAのコードの "spoils "を削除すべきです。この "spoils "は多くの人を困らせるからです。私はもう外しましたよ。

非常に迷惑な人は、定期的にマザーワートまたはフライアガリックのチンキを飲んで森を去らせる。

私もあの靴ひもは嫌いなんですが、見ないだけなんです。

 
語学を学びたい人はあまりいない。なぜ、そうなるのか
 
Vladimir Baskakov #:
語学を学ぼうと思ったが、学び始めた人が少ない。何のために?

ウラジミール、それはとてもシンプルです。学ぶべきことは学んできた。今は、いろいろなEAをとって、自分用に作っています。一番重要なのは、今はもうMQL5を漢字で見るのではなく、普通のソフトとして見るようになったことです。独学でお世話になったプロフェッショナルの皆様、ありがとうございました

ウラジミールさん、ありがとうございます。

 
MrBrooklin #:


ダウンロードしたファイルをサンドボックスに貼り付けるくらいなら、ネタバレの方がマシだ。)

 

皆さん、おはようございます!ご機嫌いかがでしょうか?

プログラミング言語MQL 5の独学を継続中。アレイを扱わなければならない時代が来たのです。入力パラメータに指定されたリスクに応じてロットサイズを計算することにしました。 コンパイル後にエラーや警告は出ませんが、関数コードが動作しません。どこがエラーなのか、教えていただけませんか?

敬具 ウラジミール

input double   Risk0=1.0;           //Риск (% от баланса)
.
.
.
.
input double   Risk9=1.0;           //Риск (% от баланса)

//+------------------------------------------------------------------+
//| Функция Money_Management рассчитывает размер лота в зависимости  |
//|  от риска, заданного во входных параметрах советника.            |
//+------------------------------------------------------------------+
double Money_Management()
  {
   static int Risk[];
   int Number=0;
//----+ Объвляем переменную для хранения размеров массивов переменных
   static int Size_ = 0;
//----+ Изменяем размер массивов переменных
   if(Number + 1 > Size_)
     {
      uint size = Number + 1;
      //---- Предварительно обнуляем ячейки массива
      Risk[Number] = false;
     }
   if(Risk[0] != Risk[Number])
     {
      Risk[Number] = Risk[0];
     }
   double Lots=AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk[Number]/100000*10;
   Lots=MathMin(5,MathMax(0.1,Lots));
   if(Lots<0.1)
      Lots=NormalizeDouble(Lots,2);
   else
     {
      if(Lots<1)
         Lots=NormalizeDouble(Lots,1);
      else
         Lots=NormalizeDouble(Lots,0);
     }
   return(Lots);
  }
//+------------------------------------------------------------------+
 
MrBrooklin プログラミング言語MQL 5の独学を継続中。アレイを扱わなければならない時代が来たのです。入力パラメータに指定されたリスクに応じてロットサイズを計算することにしました。 コンパイル後にエラーや警告は出ませんが、関数コードが動作しません。どこがエラーなのか、教えていただけませんか?

敬具 ウラジミール

これを書いたのがあなたでないことを祈ります・・・。

以下は、動作する関数です。

/********************************************************************\
|   Calculate optimal lot size     Расчет объема лота                |
/********************************************************************/
double contractSize(double Lot)
 {
  double volume = Lot > 0.0 ? Lot : AccountInfoDouble(ACCOUNT_MARGIN_FREE)/10000,
         v = volume,
         volumeStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP),
         minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN),
         maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
  v = round(volume/volumeStep)*volumeStep;
  return(fmin(maxLot, fmax(minLot, v)));
 }/******************************************************************/

必要なのは、リスク量を入力するだけで、完全なフリーマージンからカウントされないように...。