This script allows you to assemble a zip-file of your MQL5-program with all dependencies automatically. The dependencies are: included source files via #include directive (both modes of absolute () and relative ("") references are supported); icons linked by #property icon directive; resources (images, sounds, and other types) embedded by...
//--- загрузка данных М1 таймфрейма для поминутной экспирации в оптимизаторе if(FirstStartFlag)
{
int count = cnt_bars*5;
int copied=CopyRates(_Symbol,PERIOD_M1,0,count,rates);
if(copied>0)
{
if(debug) Print("Скопировано баров: "+IntegerToString(copied)+", надо было "+IntegerToString(count));
if(copied<count)
{
Print("Не удалось получить достаточно исторических данных, ждем");
return(0);
}
}
else
{
Print("Не удалось получить исторические данные, ждем");
return(0);
}
ArraySetAsSeries(rates,true);
}
//--- загрузка актуальных данных М1 таймфрейма для поминутной экспирации в оптимизаторе int count = cnt_bars*5;
copied=CopyRates(_Symbol,PERIOD_M1,0,count,rates);
if(copied>0)
{
Print("cnt_Statist() Скопировано баров: "+IntegerToString(copied)+", надо было "+IntegerToString(count));
if(copied<count)
{
Print("cnt_Statist() Не удалось получить достаточно исторических данных");
}
}
else
{
Print("cnt_Statist() Не удалось получить исторические данные");
}
ArraySetAsSeries(rates,true);
Константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
バグの 簡単な概要 クラス継承がある場合 A <= B <= C <= D であり、例えばパラメータA*を持つものとパラメータB*を持つものの2つのオーバーロード関数が実装されています。 このような関数にC*またはD*オブジェクトを渡すと、MQLは "ambiguous call to overloaded function "というコンパイルエラーを発生させます。
バグの 簡単な概要 クラス継承がある場合 A <= B <= C <= D で、例えばA*とB*の2つの関数が実装されています。 このような関数にC*またはD*オブジェクトを渡すと、MQLは "ambiguous call to overloaded function "というコンパイルエラーを発生させます。
なぜ戦うのですか?一緒に何か役に立つことをしませんか?
Stanislavは、KBに幻想的な有用なスクリプトを投稿 しました。MQLファイルやリソースを使ったアーカイブを簡単に作成することができます。
数百のmqh-fileを持つEAを持っています。このスクリプトを使えば、自分のEAを簡単にソースコードに転送し、バージョンを管理し、他の人と共有することができるようになりました。
ありがとうございます。チャートイベントで分解して選択肢を確認してみる。
最近、この問題を詳しく扱ったスレッドがありますので、ご覧ください -https://www.mql5.com/ru/forum/327888
Anton Shpilyuk: 2) Циклом-перебором до тех пор пока дата не будет совпадать(минус - скорость работы) это так?"タイムコピーレートによるバーインデックス取得 "について
ホラー、本当にあるんだ!課題は、インジケータ自体はM5タイムフレームで動作しているが、インジケータにM1タイムフレームのバーを取得することであった。
1. OnCalculate()で目的のタイムフレームを初期化して、インジケータの開始前にロードする必要がありました(初期化の後、FirstStartFlag = false;)。覚えておいてほしいのは、インジケータでは、読み込まれていない場合は-1、あるいは完全に読み込まれていない場合は、読み込まれているかどうかをチェックし、十分でない場合は、return(0) の先頭に行くということです。
冒頭で配列MqlRates rates[]を宣言し、cnt_bars*5; - M1のバーの数M5を再計算 する
その後、計算を行うたびに必要な関数本体でM1のヒストリカルデータを 更新しています。
さらに、M5バーのループの中で、対応するM1バーのインデックスを検索するループを埋め込みます。time[s]は 計算対象の時間枠の現在のM5バー です。
そして、このインデックスを使って必要なM1バーのデータを探します。私の場合、それはrates[IndexRates-5].timeとrates[IndexRates-k-4].closeです。
このネストされたループは、90日間の履歴であっても、すぐにバーを通過してくれるのがありがたい。しかし、バイナリサーチ関数ArrayBsearchを使って配列rates[].timeの中のバーインデックスを検索できればいいのですが......。
バグの 簡単な概要
クラス継承がある場合 A <= B <= C <= D
であり、例えばパラメータA*を持つものとパラメータB*を持つものの2つのオーバーロード関数が実装されています。
このような関数にC*またはD*オブジェクトを渡すと、MQLは "ambiguous call to overloaded function "というコンパイルエラーを発生させます。
質問:この馬鹿げたバグに対して、上で紹介したものよりもっと賢明な回避策はあるのでしょうか?
さらに「なぜMQL != C++なのか」を考えてみると...。
真相がわからないのになぜコメントするのか?
真相がわからないのになぜコメントするのか?
なぜなら、私はとっくにそのような説明のためのトピックを開設して いるからです(あなたのような人が自分でできないからです)。
そして、言語の違いは、エラーやバグとは関係 ないのだと!?
MQLは、少しずつやる気をなくしていく。
バグの 簡単な概要
クラス継承がある場合 A <= B <= C <= D
で、例えばA*とB*の2つの関数が実装されています。
このような関数にC*またはD*オブジェクトを渡すと、MQLは "ambiguous call to overloaded function "というコンパイルエラーを発生させます。
質問:この馬鹿げたバグに対して、上で紹介したものよりもっと賢明な回避策はあるのでしょうか?
まあ、STLは一対一でトランスポーズしているわけではないのですが。ここでは、その具体的な内容をよく見てください。最も簡単な方法は、ベースクラスやインターフェースの抽象メソッドに可能な限りの機能を書き、その子孫には、実装か=delteのどちらかを書くことである。この場合、ベースクラスのメソッドに同じ型のポインタまたは参照を渡す必要があります。仮想テーブルという弊害はありますが、高価なdynamic_castの分岐がどこにもないようなアーキテクチャにしたほうがよいでしょう。