"ダミー "からの質問 - ページ 130

 
ω・)ノを読んできてください。
 

よかった!

Win7 フォーラムでは見つからなかったのですが、プログラムの作業ディレクトリはどうなっているのでしょうか?私の見たところ、win7では起動の瞬間にすべてのプログラムがコピーされる一時ディレクトリが作成されるので、MetaEditorで作業していると、例えばDドライブにincludeするファイルをコピーしても、metaeditorウィンドウに何もないことが判明しました。メタエディタのウィンドウから「フォルダを開く」を呼び出すと、Cドライブのどこかのテンポラリにウィンドウが表示されるんです。どうすればいいのか?同期させるか、win7でこのように分割されるのを禁止する方法は?

ありがとうございました。

Документация по MQL5: Файловые операции / FileCopy
Документация по MQL5: Файловые операции / FileCopy
  • www.mql5.com
Файловые операции / FileCopy - Документация по MQL5
 
bivmail:

こんにちは。

Win7 フォーラムでは見つからなかったのですが、プログラムの作業ディレクトリはどうなっているのでしょうか?私の見たところ、win7では起動の瞬間にすべてのプログラムがコピーされる一時ディレクトリが作成されるので、MetaEditorで作業していると、例えばDドライブにincludeするファイルをコピーしても、metaeditorウィンドウに何もないことが判明しました。メタエディタのウィンドウから「フォルダを開く」を呼び出すと、Cドライブのどこかのテンポラリにウィンドウが表示されるんです。どうすればいいのか?同期させるか、win7でこのように分割されるのを禁止する方法は?

ありがとうございました。

https://www.mql5.com/ru/forum/1111/page712#comment_173757
 
TheXpert:

1.言語にはそれぞれ適用範囲があります。一般的にある言語が「最も進んでいる」と言うのは無茶な話です。

2.呼び名に違いはあるのか?ポイントはほとんど変わりません。

1.なるほど、そうですね。それなら、mql5は自動売買のための最も高度な言語と言えますね。:) どんどん押していきましょう。

2・・・それはそれは、 お願いします!お願いします!(笑

Vladix:
2.協賛

みんなでまとめてお願いします!

:)

 
皆さん、こんにちは。
mql5言語に関する 初歩的な質問はここでするのですか?:-)
議論からすると、ここには地獄絵図しかないのですが......。
 
GameOver:
皆さん、こんにちは。
mql5言語に関する 初歩的な質問はここでするのですか?:-)
よくわからないけど、議論から判断すると、ここには地獄のOOP-erしかいないのか...。

まあ、"for lamers "の枝を作ってもいいのですが、そっちの方が居心地がいいのなら;-)。
 
言語の「シンプルさ」を信じて、この構文づくりを極めようとした。
は、初歩的なスクリプトを描き始めた。
とにかく、1つのメモと1つの質問です。

void OnStart() {
   MqlRates  aBars[];
   ArraySetAsSeries(aBars,true);
   int maxBars=TerminalInfoInteger(TERMINAL_MAXBARS); , bad_bars=0;
   int bars=CopyRates(Symbol(),Period(),0,maxBars,aBars);

残念なことに、バーの数をUnlimitedにすると、スクリプトは動作しません。
つまり、TerminalInfoInteger(TERMINAL_MAXBARS) の呼び出しは、実際には、以下のようになります。

というのは、現実にはチャート上に100 000本以上のバーは存在しないので、不思議なことです。
本当に負荷のかかるバーの数を知るにはどうしたらいいのでしょうか? なぜなら、コピーライターは単に何かを返す時間がないだけですから...。

第二の質問は、これです。
初歩的なチェックを実装しようとする(μl4では初歩的なものだった)。

      // delete bad day of week and bad bars
      if (TimeDayOfWeek(Time[i])<1 || TimeDayOfWeek(Time[i])>5 || (High[i]-Low[i])<10*Point) { errBar++; continue; }

フォーラムでの検索(mql5 help search on phrases day_of_week, dayofweek gave nothing... very useful help!) により、以下のような実装にたどり着きました。

MqlDateTime temp;
TimeToStruct(aBars[i].time,temp);
if (temp.day_of_week<1 || temp.day_of_week>5 ||  aBars[i].high-aBars[i].low<10*Point() ) {errBar++; continue;}

一本の線が三本になるような、初歩的なことなんですけどね。
それとも、これらの基本的な操作はすべて、オブジェクトや クラス、中間構造体の面倒な作成に取って 代わられるのでしょうか?

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
 

ごきげんよう。

ロシアでFORTSとMICEXを扱うターミナルとしてMetatraderを提供しているブローカーがあるかどうか教えてください。

 

このアルゴリズムより高速な "ルーレット "アルゴリズムのバリエーションを提案してください。

//——————————————————————————————————————————————————————————————————————————————
// Рулетка.
int Selection()
{
  //----------------------------------------------------------------------------
  int    i=0,u=0;
  double p=0.0,start=0.0;
  double          fit[][2];
  ArrayResize(fit,SizeOfPop);
  ArrayInitialize(fit,0.0);
  double delta=(Population[0][0]-Population[0][SizeOfPop-1])*0.1-Population[0][SizeOfPop-1];
  //----------------------------------------------------------------------------
  for(i=0;i<SizeOfPop;i++)
  {
    fit[i][0]=start;
    fit[i][1]=start+MathAbs(Population[0][i]+delta);
    start=fit[i][1];
  }
  p=RNDfromCI(fit[0][0],fit[SizeOfPop-1][1]);

  for(u=0;u<SizeOfPop;u++)
    if((fit[u][0]<=p && p<fit[u][1]) || p==fit[u][1])
      break;
    //--------------------------------------------------------------------------
  return(u);
}
//——————————————————————————————————————————————————————————————————————————————
配列は関数から取り出せるので、毎回宣言してサイズを変更する必要がないことは明らかですが、もっと画期的な解決策が必要です。:)
 
GameOver:
言語の「シンプルさ」を信じて、この構文づくりを極めようとした時。
は、初歩的なスクリプトを描き始めた。
とにかく、1つのメモと1つの質問です。

void OnStart() {
   MqlRates  aBars[];
   ArraySetAsSeries(aBars,true);
   int maxBars=TerminalInfoInteger(TERMINAL_MAXBARS); , bad_bars=0;
   int bars=CopyRates(Symbol(),Period(),0,maxBars,aBars);

残念ながら、バーの数をUnlimitedに設定すると、スクリプトは動作しません。
つまり、要するにTerminalInfoInteger(TERMINAL_MAXBARS) が呼ばれることになるのですが、これはメモリが足りないということです。

というのは、現実にはチャート上に100 000本以上のバーは存在しないので、不思議なことです。
本当にロードされたバーの数を知るにはどうしたらいいのでしょうか? コピーライトは何も返す時間がないので...。

考えてみよう。CopyRates()関数の場合は、最後のパラメータ

int              count,             // сколько копируем
つまり、コピーされる要素の数です。あなたのデザインでは、要素の数はUnlimitedです。大雑把に言うと、非現実的 :) メモリが枯渇するまで常に再分配しながら仕事をすると、そうなるのでしょう。TerminalInfoInteger(TERMINAL_MAXBARS) の代わりに、より具体的な値を使用してみてくださいMQL5 リファレンス /タイムシリーズとインジケータへのアクセス / Bars