これは本当に奇妙なものです

私は貿易管理EAに取り組んでいます、そしてそれはテスターでうまくいきます。ただし、 デモアカウントに配置して複数のチャートに配置すると、さまざまなチャートが互いに閉じようとし、価格設定エラーが発生します。これらがエラーです。

2009.07.09 09:38:02 3Aマネージャーv1.2 USDCHF、M30:TP GBPUSDチケットのクローズ73318534エラー(129)で失敗しました:エラーはありません
2009.07.09 09:38:02 3A Mg v1.2 NZDUSD、M30:GBPUSDチケットのTPクローズ73318534エラー(129)で失敗した:エラーなし
2009.07.09 09:38:01 3A MG v1.2 NZDUSD、M30:TP GBPUSDチケットのクローズ73318534エラー(129)で失敗しました:エラーはありません
2009.07.09 09:38:00 3A Mgr v1.2 USDCHF、M30:GBPUSDチケットのTPクローズ73318534エラー(129)で失敗しました:エラーはありません

ここでNZDとCHFのチャートのEAは両方GBPチャートのトレードをクローズしようとしています。これは取引管理EAなので、参照するためのマジックナンバーを持っていません – しかし、標準のOrderSelect(i、SELECT_BY_POS)を使うことで正しいものが得られるはずです – 私はこれに迷います。これが私が使っているコードです:

void Check_TP()
{
幸せ=偽。
int totalorders = OrdersTotal();
(int i = totalorders-1; i> = 0; i–)
{
OrderSelect(i、SELECT_BY_POS);
bool result = false;
if(OrderSymbol()== Symbol())
if(OrderType()== OP_BUY && Bid> = hidden_tp)
if(OrderClose(OrderTicket()、NormalizeDouble(Close_Lots、1)、入札、5、赤))
{
幸せ=真。
if(ShowAlerts)Al ert( "利益獲得"、OrderSymbol()、 "ticket no"、OrderTicket());
}
それ以外の
{
int err = GetLastError();
if(ShowAlerts)
Print( "TP Close of"、OrderSymbol()、 "ticket no"、OrderTicket()、 "エラーで失敗しました("、err、 "):"、ErrorDescription(err));
}
if(OrderType()== OP_SELL &&質問<= hidden_tp)
if(OrderClose(OrderTicket()、NormalizeDouble(Close_Lots、1)、Ask、5、Red))
{
幸せ=真。
if(ShowAlerts)Alert( "利益獲得"、OrderSymbol()、 "ticket no"、OrderTicket());
}
それ以外の
{
int err2 = GetLastError();
if(ShowAlerts)
Print( "TP Close of"、OrderSymbol()、 "ticket no"、OrderTicket()、 "エラーで失敗しました("、err2、 "):"、ErrorDescription(err));
}
}
戻る
// Check_TP関数の終わり


こんにちはjcb

「参照するためのマジックナンバーがありません – しかし、標準のOrderSelect(i、SELECT_BY_POS)を使うと正しいものになるはずです」

違います。

トレードプールは、クライアントターミナル/すべてのエキスパートを実行するために普遍的です。

「正しいもの」は、注文を選択するEAがiでインデックスされた位置にあるそのトレードプールリストエントリの所有者である場合にのみ正しい 任后

マルチEA 自分たちだけがやっていることを知っていなければならず、自分の100%ではない他のアイテムと混同しないでください。

あなたのコードはまさにそれが起こると予想されるものを達成します。

マジックナンバーチケットナンバーは、EAが1以上の場合に必要なコンパートメント化を達成するために確実に考慮される唯一の基準です。

あなたのコード/述べられた理解のために、あなたはもう少し「本にヒットする」ことを提案してください…

楽しい旅です、よろしくお願いします。


ありがとうfbj – 情報に感謝します。しかし、私は私が見つけることができるどんな本でも「ヒット」しており、その過程で決定的なものはあまり見つけていません。これらのことを学ぶことができる、よく書かれた有益な本や情報源について何か提案はありますか。このフォーラムは最大のもので、答えが見つからないと きはいつでも助けてくれますが、そのような小さなことの多くを説明するある種の参考資料を手に入れたいと思います。

もう一度 – 答えてくれてありがとう。


JCB、

私はどの本や情報源がこのWebサイトよりも優れているかについての提案はありませんが、私にはうまく機能したコードスニペットをお見せすることができます。これは、各通貨ペアで最大1つの買いと1つの売り取引を許可する、6つの通貨ペアで同時に実行されているEAからのものです。それはルーチンを書くための最も効率的な方法ではないかもしれませんが、決して失敗することはなく、理解するのも簡単です。

orderCount = OrdersTotal();
(x = 0; x <orderCount; x )の場合
{
orderFound = OrderSelect(x、SELECT_BY_POS、MODE_TRADES);

if(orderFound
&& OrderSymbol()== currPair
&& OrderMagicNumber ()== _magicNbr)
{
if(OrderType()== OP_BUY){currTktBuy = OrderTicket(); }
if(OrderType()== OP_SELL){currTktSell = OrderTicket(); }
}
}




5264: https://www.mql5.com/en/forum/118744


Originally posted 2019-08-04 03:48:34.

Translate »