MetaTrader拡張モジュール(DLL)の作成 - ページ 11

 

mql4-programmingに関する基本的な質問

こんにちは。

私はdllからある関数を 輸入したいと思う。したがって、私はいくつかの*.hファイルを含める必要がありました。

これは可能ですか、それとも私は*.hの代わりに*.mqhを書かなければならないのでしょうか?

このDLLは、C言語用のものです。

また、ポインタや構造体をdatatypとする関数があります。それをmql4で使用することは可能でしょうか?

 

株価受信

こんにちは。

c#でメタトレーダーから株価を受信しようとしているのですが、やり方がよくわかりません。

誰かが私に説明するか、または特定のガイドに 私を送ってもらえますか?

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

 
kfirmt:
こんにちは。

c#でメタトレーダーから株価を受信しようとしているのですが、やり方がよくわかりません。

誰か説明してくれるか、特定のガイドに送ってくれる?

どうもありがとうございます。

expertsの中で、価格がメタトレーダーからCに渡される方法を見つけることができます(それは十分に近いので、その例を直接使用することができます)、レート情報構造は最初から変わっておらず、まだ.として定義されています。

struct RateInfo

{

unsigned int ctm;

double open;

double low;

double high;

double close;

double vol;

};

と定義されているので、C#に渡すのに問題はないはずです。

 

ありがとうございます

where is theexperts︵examples︵DLLExample?

 
kfirmt:
thanks! Where is theexpertsexamples╱DLLExample ?

メタトレーダーフォルダ(インストールしたフォルダ)内

 
mladen:
メタトレーダーのフォルダ(インストールしたフォルダ)には

2つのメタトレーダーをダウンロードしたのですが、どちらもサンプルはc++で書かれていました。私はc#でプログラミングをしているのですが、これを見て理解することができたと思います。

 
kfirmt:
2つのメタトレーダーをダウンロードしたのですが、どちらもサンプルはc++で書かれていました。私はc#でプログラミングしていますが、このことから理解できると思います。しかし、私が必要としているもの、株価を取得する方法を見つけることができませんでした。

インジケータやEAからDLL拡張に価格を渡しています。

そのフォルダに完全な例(MQL部分とC部分)があり、どのように行われるかがわかります。MQLパートからC#パートでデータを受け取ったら、それを使って何をするかはコードの問題だけです。

 
mladen:
インジケータやEAからDLLエクステンションに価格を渡しています。MQLパートからC#パートでデータを受け取ったら、それを使って何をするかはコードの問題です。

MQLでもCでも例がなく、C++だけでした。とにかく、たくさんの関数が あり、どれが価格を得るために必要な関数なのか理解できませんでした。

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

 
kfirmt:
MQLでもCでも例がなく、C++だけでした。とにかく関数が多くて、どれが価格を求める関数なのかがわかりません。

C言語側から(コメント参照).

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

//| |

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

MT4_EXPFUNC double __stdcall GetRatesItemValue(const RateInfo* rates,const int rates_total,const int shift,const int nrate)

{

//---

if(rates==NULL)

{

printf("GetRatesItemValue: NULL array\n");

return(0.0);

}

//---

if(rates_total<0)

{

printf("GetRatesItemValue: wrong rates_total number (%d)\n", rates_total);

return(0.0);

}

//---

if(shift=rates_total)

{

printf("GetRatesItemValue: wrong shift number (%d)\n", shift);

return(0.0);

}

//---

if(nrate5)

{

printf("GetRatesItemValue: wrong rate index (%d)\n", nrate);

return(0.0);

}

//

// here you are having prices, time and volume

//

int nitem=rates_total-1-shift;

switch(nrate)

{

case 0: return double(rates[nitem].ctm);

case 1: return rates[nitem].open;

case 2: return rates[nitem].low;

case 3: return rates[nitem].high;

case 4: return rates[nitem].close;

case 5: return rates[nitem].vol;

}

//---

return(0.0);

}

 
mladen:
C側から(コメント参照):
//+------------------------------------------------------------------+

//| |

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

MT4_EXPFUNC double __stdcall GetRatesItemValue(const RateInfo* rates,const int rates_total,const int shift,const int nrate)

{

//---

if(rates==NULL)

{

printf("GetRatesItemValue: NULL array\n");

return(0.0);

}

//---

if(rates_total<0)

{

printf("GetRatesItemValue: wrong rates_total number (%d)\n", rates_total);

return(0.0);

}

//---

if(shift=rates_total)

{

printf("GetRatesItemValue: wrong shift number (%d)\n", shift);

return(0.0);

}

//---

if(nrate5)

{

printf("GetRatesItemValue: wrong rate index (%d)\n", nrate);

return(0.0);

}

//

// here you are having prices, time and volume

//

int nitem=rates_total-1-shift;

switch(nrate)

{

case 0: return double(rates[nitem].ctm);

case 1: return rates[nitem].open;

case 2: return rates[nitem].low;

case 3: return rates[nitem].high;

case 4: return rates[nitem].close;

case 5: return rates[nitem].vol;

}

//---

return(0.0);

}

ありがとうございます。

というのも、C#で何か書いてあるのですか?