ライブラリ: TradeTransactions - ページ 6

 
皆さん、はじめまして。「取引環境での典型的なエラーとその解消法」というトピックの脚注からここにたどり着きました。

私は、非同期で送信された成行注文を送信した後、「自分の」ポジションを計算するためにライブラリとアプローチを使用したいと考えています。
ほとんどの例や議論は、他のExpert Advisorが並行して動作している口座で取引が行われ、それに応じてすべてのイベントとOnTradeTransactionの 結果が共通であるという状況を考慮していません。
このロジックは他のEAがあるHEDGING口座で機能しますか?特に、Expert Advisorが同じ金融商品で取引する場合ですが、それぞれのMagicianで取引するのでしょうか?
このライブラリは、設定された商品とは異なる商品で取引を開始するマルチカレンシーエキスパートアドバイザーで機能しますか?
 
Sergey Genikhov:
このライブラリは、設定された商品とは異なる商品で取引を開始するマルチカレンシーエキスパートアドバイザーで機能しますか?

動作します。

 
同じようなエラーはすでに修正したと思うのですが、再びこのエラーに出くわしてしまい、多くの時間を費やしてしまいました。Convert.mqhでターゲット配列のサイズが小さくなっているようです。uchar[39]の配列をリソースに入れる必要があったのですが、ArrayToStruct関数では、uint[]型のレシーバーは頑なにサイズ9とみなされ、つまり最後の3文字が欠落しています。
 
Stanislav Korotky:
同じようなエラーはすでに修正したと思うのですが、再びこのエラーに出くわしてしまい、多くの時間を費やしてしまいました。Convert.mqhではターゲット配列のサイズが小さくなっているようです。uchar[39]の配列をリソースに入れる必要があったのですが、ArrayToStruct関数はuint[]型のレシーバをサイズ9としつこく見なします。

そうです。次のようにしてみてください。

    const int SizeTarget = ::ArrayResize(Dst_Array, SizeSource * sizeof(SOURCE) / sizeof(TARGET) +
                                                    (bool)(SizeSource * sizeof(SOURCE) % sizeof(TARGET)));
 

MQの推奨によると、ResourceDataファイルのGetFullNameメソッドでは、TERMINAL_PATHの代わりにTERMINAL_DATA_PATH定数を使用する必要があります。

ターミナルはポータブル・モードなしで起動されるにもかかわらず(UACが無効でProgramme Filesへの書き込み権限があるためと思われる)、私の場合はどちらのパスも同じです。しかし、RDPで接続すると、すべてのソースがRoamingから取得される。おそらく多くのユーザーは、デフォルトですべてのソースをTERMINAL_DATA_PATH(TERMINAL_PATHとは異なる)に置いているはずだ。

 
Stanislav Korotky:

MQの推奨に基づき、ResourceDataファイルでは、GetFullNameメソッドはTERMINAL_PATHではなくTERMINAL_DATA_PATH定数を使用する必要があります。

そうですね。私はポータブルを使っているので、注意を払っていませんでした。これらのコードはユニットによって使用されます。あなたのように、ユーザーはとっくに正しいパスに修正しています。

KBのサポートは大変で、作業リストが分厚くなってしまった。

 
fxsaber:

はい、トリミングされています。これを試してみてください

Convert.mqhはインクルード・フォルダから取り出したもので、上書きされる可能性があるので、KBの中で修正したほうがいいでしょう(ちなみに、Convert.mqh、Resource.mqh、ResourceData.mqhのヘッダーファイルは、どのプロジェクトが メインなのかよくわかりませんでした。

 
Stanislav Korotky:

Convert.mqhはインクルード・フォルダから取り出したもので、上書きされる可能性があるため、KBで修正したほうがよいでしょう(ちなみに、Convert.mqh、Resource.mqh、ResourceData.mqhのヘッダーファイルがどのプロジェクトで使われているのかよくわかりませんでした。

TradeTransactionsは使用していません。


HistoryTicks - これがないMT4での取引は考えられません。おそらくメインと考えるべきでしょう。しかし、KBでは更新できない。

取引、自動取引システム、取引戦略のテストに関するフォーラム

ライブラリ: HistoryTicks

fxsaber, 2020.01.09 14:43

KBのバージョンが古いことに気づきませんでした。残念ながら、アップデートする方法はありません。KBのオートマトンでは次のようになっています。
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MEではすべてエラーなくコンパイルできます。


HistoryTicksでは本物なので責任は桁違いに大きい。実際には舐められている。

 
fxsaber:

解决该错误,用 随附的 替换 Include ˶ fxsaber ˶ TradeTransactions ˶ Convert.mqh

const RESOURCEDATA<double>ResourceDouble("::Double_"+__FILE__);

const RESOURCEDATA<datetime>ResourceTime("::Time_"+__FILE__);

const RESOURCEDATA<string>ResourceString("::String_"+__FILE__);


'Data' - struct undefined Convert.mqh 85 49

テンプレート 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' で [SOURCE=uint,TARGET=datetime] を指定 Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 43 38
テンプレート 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' で [SOURCE=datetime,TARGET=uint] が指定されている Convert.mqh 29 14
文字列をユニオンのメンバとして使用できない Convert.mqh 11 12
テンプレート 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' で [SOURCE=uint,TARGET=string] を指定 Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 85 49
テンプレート 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' で [SOURCE=uint,TARGET=string] を指定 Convert.mqh 70 14
文字列をユニオンのメンバとして使用できない Convert.mqh 13 12
テンプレート 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' で [SOURCE=uint,TARGET=string] を指定 Convert.mqh 29 14
文字列をユニオンのメンバとして使用できない Convert.mqh 13 12
テンプレート 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' で [SOURCE=uint,TARGET=string] を指定 Convert.mqh 29 14
文字列をユニオンのメンバとして使用できない Convert.mqh 13 12
テンプレート 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' で [SOURCE=string,TARGET=uint] を指定 Convert.mqh 70 14
'Data' - struct undefined Convert.mqh 43 38
テンプレート 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' で [SOURCE=string,TARGET=uint] を指定 Convert.mqh 29 14



MT4ビルド1320では動作しませんでしたか?


 
roaddust:

MT4ビルド1320では動作しませんでしたか?

これを試してみて ください。