MetaEditor build 1490 - ページ 4

 
Andrey Dik:

いや、普通じゃないんです。

位置づけがある。Expert Advisorをチャートに放り込みます。選択したポジションの取引履歴が ない。ここで普通ってなんだよ!))

ポジションを開いて数秒経ちますが、案件数はまだ0件ですか?
 
fxsaber:
ポジションを開いて数秒経ちますが、取引回数がゼロのままなのですが?
その通りです。
 
Andrey Dik:
その通りです。
そうすると、MT5で取引している皆さんにとって、とても悪いことだと思います。どのように再現するのですか?
 
fxsaber:
それから、MT5で取引している人にはとても悪いことです。再生方法は?
チャート上でEAなし、EAありのポジションを開く、ポジションを追加する、ポジションをカットする、ポジションを反転させる。バグは常にあるわけではなく、すぐにわかるわけでもない。
 
Andrey Dik:
バグは常にあるわけではなく、すぐにわかるわけではありません。 フィボのデモ口座、ビルド1490で試しましたが
複製禁止
void OnTick ()
{
  const int Total = PositionsTotal();
  
  for (int i = 0; i < Total; i++)
  {
    const ulong Ticket = PositionGetTicket(i);
    
    if (PositionSelectByTicket(Ticket) && HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)) && (HistoryDealsTotal() == 0))
      Alert(Ticket);
  }
}
 
fxsaber:
再現できない。
void OnTick ()
{
  const int Total = PositionsTotal();
  
  for (int i = 0; i < Total; i++)
  {
    const ulong Ticket = PositionGetTicket(i);
    
    if (PositionSelectByTicket(Ticket) && HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)) && (HistoryDealsTotal() == 0))
      Alert(Ticket);
  }
}
あなたのポジションは、別の方法で選択 されます。私のコードを試してみてください。
 
Andrey Dik:
あなたのポジションは、別の方法で選択 されます。私のコードを試してみてください。
そして、そのように再生されるわけではありません。
void OnInit()
{
  EventSetMillisecondTimer(1);
}

void OnTimer()
{
  const int Total = PositionsTotal();
  
  for (int i = 0; i < Total; i++)
    if ((PositionGetSymbol(i) == _Symbol) && HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)) && (HistoryDealsTotal() == 0))
      Alert(PositionGetInteger(POSITION_TICKET));
}
 
fxsaber:
しかも再生しない。
void OnInit()
{
  EventSetMillisecondTimer(1);
}

void OnTimer()
{
  const int Total = PositionsTotal();
  
  for (int i = 0; i < Total; i++)
    if ((PositionGetSymbol(i) == _Symbol) && HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)) && (HistoryDealsTotal() == 0))
      Alert(PositionGetInteger(POSITION_TICKET));
}

私のコードを試しましたか?

同じように再現して、同じログを取得すること。

 
Andrey Dik:

私のコードを試しましたか?

同じように再現して、同じログを取得すること。

試してみたが、問題は再現しない。
 
fxsaber:
試してみたが、問題は再現されない。

不思議なことに...。では、何が問題なのでしょうか?

これです。こうすることでチャート上でExpert Advisorを起動。手動でポジションを建てた。ポジションを2回追加し、1回カットしています。ラグで4つのトレードを正しく表示しています。その後、ポジションを逆にしたところ、「ポジションはあるがディールがない」という問題が発生しました。

最後の2回の操作後のログはこちらです。

2016.12.05 14:25:44.157 pos(GBPUSD,M5)の現在のコミッションを取得 1

2016.12.05 14:25:44.157 pos(GBPUSD,M5)の現在のコミッションを取得 GBPUSD

2016.12.05 14:25:44.157 Get current commission of pos (GBPUSD,M5) ポジションが見つかりました。

2016.12.05 14:25:44.157 posの現在の手数料を取得 (GBPUSD,M5) ポジションの総取引数: 4件

2016.12.05 14:25:44.670 pos(GBPUSD,M5)の現在のコミッションを取得 1

2016.12.05 14:25:44.670 pos(GBPUSD,M5)の現在のコミッションを取得 GBPUSD

2016.12.05 14:25:44.670 Get current commission of pos (GBPUSD,M5) ポジションが見つかりました。

2016.12.05 14:25:44.670 posの現在の手数料を取得 (GBPUSD,M5) ポジションの総取引数: 0

ポジションにトレードが見られないことがわかる。EAはチャートにぶら下がったままで、コメントには0があります。

EAを削除してチャートに戻すと、ポジションのトレードが表示されず、コメントが0になっています。

理由: