エラー、バグ、質問 - ページ 2066

 
fxsaber:

これは、可能性を狭めるという意味で、言語として間違った振る舞いのように思えます。

constフィールドを構造体として定義する必要があります。コピー演算子が使えると思ったのですが、構文が似ているため、コンパイラは代わりにコンストラクタを要求しています。しかし、それは間違っている。

曖昧さがないから正しい(初期化リストでは常に演算子ではなくコンストラクタである)、別の意味で間違っている。

struct S {
        S()                        { Print( __FUNCSIG__ ); }
        void operator=( const S& ) { Print( __FUNCSIG__ ); }
};
void OnStart()
{
        S s;
        S s1 = s;

}

結果

void S::S() (1)
void S::S() (2)
void S::operator=(const S&) (3)

一方、C++は(2)(3)行を出力しないので、不足するコピーコンストラクタをデフォルトコンストラクタと代入演算 子の共生に置き換えることはできません。

 

BMPオブジェクトのリソースが削除され、再度作成された場合、BMPオブジェクトはそのリソースを見なくなります。これはエラーです。ここで、オブジェクトを削除して、もう一度作り直す必要があります。

 
fxsaber:

BMPオブジェクトのリソースが削除され、再度作成された場合、BMPオブジェクトはそのリソースを見なくなります。これはエラーです。ここで、オブジェクトを削除して、もう一度作り直す必要があります。

コードを見せてもらえますか?なぜリソースを削除する 必要があるのですか?リソースを削除しなくても、上書き/変更することは可能です。
 

シチュエーション

第三者 Expert Advisor のマーケットポジションが OrderSelect(ticketNumber,SELECT_BY_TICKET) によって正常に選択され、それを閉じるためのループが試みられました(チケットでの注文選択は閉じる試みのループより前に行われました)。


エラーが発生するのですが。

2017.11.10 06:00:33.806 ExpertName EURCAD,H1: unknown ticket 1846978258 for OrderClose function

チケットはOKです。


その注文をEAが独自にクローズできるのは当然のことなので

をループの各反復でチェックします。

if(OrderCloseTime()!=0) break;


というメッセージが表示され、30回とも誤ったチケット番号が表示されます。

手札が悪いのか、それとも選択したオーダーが失われるバグなのか?

あるいは、エラー番号が状況/問題を正確に反映していない可能性があります。


更新しました。

ポジションのクローズはネイティブEAではなく、我々がクローズしたEAによって行われることがわかりました。

しかし、サイクリック・エラー4108の前に、一度だけエラー3が発生します(エラー3が記録される前に注文は終了していますが)。

 
Kirill Belousov:

当然、ネイティブEAが単独でこの注文をクローズすることも可能なので

ループの各反復で、チェックが行われる。

OrderSelectも やらなければならない。

 
Andrey Barinov:
コードを表示してもらえますか?リソースを削除しなくても、再ダウンロード/修正することができますので、なぜ削除するのでしょうか?

もちろん問題なく削除せずにリロード。削除後の不具合

#define  WIDTH 100
#define  ARGB(a,r,g,b)  ((uchar(a)<<24)|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))

bool Set( const string Name, const uint &Data[], const uint Width )
{
  return(ResourceCreate(Name, Data, Width, (Width == 0) ? ArraySize(Data) : ArraySize(Data) / Width, 0, 0, Width, COLOR_FORMAT_ARGB_NORMALIZE));
}

void Test( const string Name )  
{
  static uint Data[WIDTH * WIDTH];
  
  for (uchar i = 0; i < 100; i++)
  {
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    
    Set(Name, Data, WIDTH);
    
    ChartRedraw();
    
    Sleep(50);
  }
  
  ResourceFree(Name);  
}

void OnStart()
{  
  const string ObjName = __FILE__;
  const string Name = "::" + ObjName;
  
  ObjectCreate(0, ObjName, OBJ_BITMAP_LABEL, 0, 0, 0);
  ObjectSetString(0, ObjName, OBJPROP_BMPFILE, Name);
  
  // Видна работа
  Test(Name);
  
  // Нет результата на экране
  Test(Name);
  
  ObjectDelete(0, ObjName);
}
 

からのメッセージはありません。

システムメッセージ


商品メッセージ、商品販売、司会者発言、商品確認メッセージを含む、全くメッセージがない。

 
Vladislav Andruschenko:

からのメッセージはありません。

システムメッセージ


商品メッセージ、商品販売、モデレーターノート、商品検証メッセージなど、全くありません。

こんにちは。

エラーが修正されたので、サイトの更新を待つ必要があります。

ご不便をおかけして申し訳ありません。

 
Julia Test:

こんにちは。

誤りは修正されましたので、サイトの更新をお待ちください。

ご不便をおかけして申し訳ありません。


ありがとうございます。SDにはすでに返信しました。

P.S. こんなに静かなのは初めてです...。ダイレクトサイレンス...............................

 
fxsaber:

OrderSelectもやらなければならない。

その理由を教えてください。

チケットの注文が正常に選択されました。

イテレーション1でクローズコマンドを送信しています。

このイテレーション#1では、エラー3(Invalid trade parameters)が発生しました。それにもかかわらず、注文は締め切られた。どのように閉鎖されたのですか?

そして、繰り返し2回目でエラー4108が発生します。OrderCloseTime!=0を使用して閉じることはできません。


ドキュメントによると、どの段階で、チケットで 選択された順序との 接続を失うのでしょうか?

これは、closeコマンドを送信した後、注文がロックされ、4108ではなく、139のエラーが発生するはずのケースではないでしょうか?