[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 291

 
alsu >> :

ライブラリ」(#importで関数を抽出)と「インクルードヘッダーファイル」(#include)の概念を混同しています。


ライブラリはライブラリフォルダにあり、そのソースはインジケータやExpert Advisorのように拡張子が*.mq4です。 それらは*.ex4ファイルにコンパイルされます(そこから準備された関数が、次のように他のプログラムへインポートされます)。

正しくコンパイルするためには、原則として、まず#property library指示文を記述してください。

インクルードヘッダーファイルは、様々なプログラムに既製のコード片を含めるために使用されます。 これらは、インクルードフォルダに格納され、*.mqhの拡張子を持ち、#include <...>指令を使用してプログラムのテキストに(すなわち、テキストに)含まれます;これらは、メインプログラムと一緒にコンパイルされるため、個別にコンパイルする必要がありません。

ところで、以前は #property library をつけたテンプレートでライブラリが生成されていたのですが、今はそうではありません。 なぜテンプレートを変更したのか、単に入れ忘れただけなのか、ご存知の方はいらっしゃいませんか?

PS alsuがなかったら、質問者が何を知りたがっているのか理解できなかっただろう、年をとったものだ。

 
Urain >> :

ところで、以前は #property library をつけたテンプレートを使ってライブラリを生成していたのですが、今はそうではありません。なぜテンプレートを変更したのか、それとも単にインクルードを忘れただけなのか、誰か知っていますか?

追記:もし私がalsuを持っていなかったら、彼が何を知りたがっているのか理解できなかったでしょう。

手動でテンプレートをいじることができます:)

 
alsu >> :

手動でテンプレートをいじることができます:)

はいはい私は知っているが、私の時間では、私はエラーを見つけるために2日間を殺し、それは新しいビルドで別のテンプレートに大きな問題である。

 
Urain >> :

>> ...alsuがなかったら、質問者が何を知りたがっているのかわからない、歳をとったもんだ。

経験豊富な古参の皆さん、「質問者」のライブラリのコードを見て、作者がどういう意味で書いたのか、説明してください。

 

すみません。

いろいろ書かれていますが、私の質問の答えがまだわかりません。何ができないのか、もう一度説明します。

例えば、#include<...>指令を挿入したEAを作り、その中にあるコードでincludeヘッダーファイルを作るとします。

Expert Advisorをコンパイルして、トレードに組み込んでいます。 すべてがうまくいく。セルゲイ・コバレフの言葉に基づいています。

"...もう一つ付け加えると、ex4ファイルは自給自足です。これを動作させるために、
、ユーザーの関数のソースコードを含める必要はないのです。
ex4ファイルはコピーして、他のトレーダーと共有し、そこで使用することができます。

"技術 "に関係なく、完成されている。

私は自分のEAをコピーして、別のコンピュータ、別のトレーダーに転送しました。その後、Expert Advisorは動作しようとせず、私が参照して いる#include<...>の関数がない、つまりインクルードヘッダーファイルが見えず、コンパイルできない、と書き込みます

Expert Advisor とインクルードヘッダファイルの例を示します。問題で具体的にどのようなエラーが出ているのかを確認する。

//+------------------------------------------------------------------+
//|Kibliot.mq4|Kibliot.mq4|Kibliot.mq4|Kibliot.mq3
//| 著作権 © 2009, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright"著作権 © 2009, MetaQuotes Software Corp.
#プロパティリンク "http://www.metaquotes.net"

#include <PointZigZag.mqh>.

//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{PointZigZag()です。
Comment("Prod.-y21 = ",y21," ", "Pok.-x21 = ",x21))。
return(0)です。
}

//+------------------------------------------------------------------+

ズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキズキ

//+------------------------------------------------------------------+
//| PointZigZag.mqh|ポイントジグザグ.mqh|ポイントジグザグ...
//| 著作権 © 2009, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "著作権 © 2009, MetaQuotes Software Corp.
#プロパティリンク "http://www.metaquotes.net"

extern int intDepth = 12; //-------変数 ZigZag
extern intNextDeviation = 5; //------- 変数 ZigZag.
extern intBackstep = 3; //------- 変数 ZigZag
extern inttern ShiftBars = 2; //------- 変数 ZigZag
//------- 変数 ZigZag ------------------------------------------------.
double y3, y2, y1, zz;//.
int x3, x2, x1, sh;//.
double x31, x21, x11; // ジグザグ変曲点
double y31, y21, y11; // ジグザグ変曲点
double TimeZZ, TimeOO;
//------------------------------------------------------------------------------

double PointZigZag()
{y3=0;y2=0;y1=0;
sh=ShiftBars。
while (y3==0)
{zz=iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, sh)とする。
if (zz!=0 && zz!=EMPTY_VALUE)
{if (y1==0) { x1=sh; y1=zz; }.
else if (y2==0) { x2=sh; y2=zz; }.
else if (y3==0) { x3=sh; y3=zz; }}sh++;
}
if (高値[x1]>高値[x2])
{x11=High[x1]; x21=Low[x2]; x31=High[x3]です。
y11=0;y21=0;y31=0;TimeZZ=Time[x2];
}else
{y11=Low[x1]; y21=High[x2]; y31=Low[x3]である。
x11=0;x21=0;x31=0;TimeZZ=Time[x2];}

}

//+------------------------------------------------------------------+
 
コンパイラが未変更の状態で出すエラー行を修正してください。
 
gvi2504 >> :

すみません。

いろいろ書かれていますが、私の質問の答えがまだわかりません。何ができないのか、もう一度説明します。

例えば、#include<...>指令を挿入したEAを作り、その中にあるコードでincludeヘッダーファイルを作ったとします。

Expert Advisorをコンパイルして、トレードに組み込んでいます。 すべてがうまくいく。セルゲイ・コバレフの言葉に基づいています。

"...また、ex4ファイルは自己充足的であり、動作させるために
、ユーザー関数のソースコードを含める必要はないことを付け加えられます。
ex4ファイルはコピーして、他のトレーダーと共有し、そこで使用することができます。

"技術 "に関係なく、完成されている。

私は自分のEAをコピーして、別のコンピュータ、別のトレーダーに転送しました。そ の後、Expert Advisor は動作しようとせず、me#include<...>が参照する関数がない、つまりインクルードヘッダファイルが見えず、コンパイルできない、と書き込むのです。

Expert Advisor とインクルードヘッダファイルの例を示します。設問のどこに間違いがあるのか、具体的に見てみましょう。


この指令では、インクルードするファイルは、別のコンピュータでもincludeディレクトリにあることが必要です。一般に、自分を煩わせないように、同じシートにすべてを書き、コードの一部を関数として割り当て、それがぶらぶらしないようにシートの最後に置き、オンとオフをしない、なぜあなたはあなたの人生を複雑にするのですか?INCLOBEとIMPORTは、1000行以上の複雑なプログラムを書くときに必要で、そうでなければ、役に立つというより、混乱させるだけです。

 
alsu >> :
コンパイラが生成するエラー行を修正してください。

コンパイラは次のような行を書きます。

PointZigZag.mqh' - cannot open program file D:\Program FilesMetaTrader2╱Experts╱Kibliot.mq4 (10, 1)

 
gvi2504 >> :

コンパイラは次のような行を書きます。

PointZigZag.mqh' - cannot open program file D:\Program FilesMetaTrader2╱Experts╱Kibliot.mq4 (10, 1)

インクルードファイルPointZigZag.mqhをインクルードフォルダに置いてください。

 
alsu >> :

インクルードファイルPointZigZag.mqhをインクルードフォルダに置いてください。

Kibliot.mq4ファイルがコンパイルされるはずのすべてのコンピュータで。