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

 
Комбинатор:
プロでコンパイルして実行できるようになればOK )

何が悪いのか、よくわからないんです。すべてがうまくいく。

template<typename T>
void f() { }

template<>
void f<int>() { }

int _tmain(int argc, _TCHAR* argv[])
{
  f<double>();
  f<int>();

  return 0;
}
 
Alexey Navoykov:

何が悪いのか、よくわからないんです。すべてがうまくいく。

なるほど、バカなのは私だ。
 

そう、それはもうわかったことなんです。しかし、問題は、ソースではこのmemeberが実は配列であることで、簡単のためにスカラーを先に扱うことにした(だった)。しかし、配列の場合、同じような仕掛けはうまくいきません。メンバ関数内で配列を静的にドラッグする必要がありました。

 
Stanislav Korotky:

しかし、配列の場合、同じトリックは通用しません。メンバ関数内で配列を静的にドラッグする必要がありました。

これはすでにコンパイラのエラーです - サービスデスクに伝えるべきです。

template<typename T>
struct A {
        static int i[];
};
template<typename T>
int A::i[]; //error: '[' - unexpected token
 

1650を構築する。複数の.ex5モジュール(mainとlibrary)がリンクされている場合、全く動作 しません。どこもかしこも、このような形のエラーです。

2017.08.18 01:49:59.759 Draw (USDJPY,H1) 'yyyy.ex5' で 'xxx' が見つからない。

以前はすべてうまくいっていたのに。現在でも、MetaEditor 1646 + MetaTrader 1650をコンパイルすると、すべて動作します。

明らかにMetaEditor 1650のエラーがあります。一方、.ex5ファイルはほぼ2倍の薄さです。なぜそのような実験をするのか。

 

コードの追加

//Test.mqh
class A {};
class B { public:
        B() { f(); }
        A *g() { return NULL; }
void f()
{
        void *x = g();
        if ( true )
                return; 
        delete x; //в build 1650 не работает даже если до delete никогда (!) не доходит
                   //а ошибка при выполнении возникает именно из-за наличия этой строки
                   //и указатель в исходном коде действительный (есть проверка)
}
};

//Test.mq5
#include "Test.mqh"
#import "Test2.ex5"
        A *f();
#import
void OnStart()
{
        f();
}
//Test2.mq5
#property library
#include "Test.mqh"
static B b;
A *f() export { return NULL; }

結果は前回の記事で

 
もう一つの確認例
//Test.mq5
class A;
#import "Test2.ex5"
        A *f();
        void g( A* );
#import
void OnStart() //вариант 1
{
        f(); /*возвращаемое значение не используется*/
}
//Test2.mq5
#property library
class A {};
static A *a;
A *f()       export { /*делает что-то полезное*/; return a; }

void g( A* ) export { /*делает что-то полезное*/; }

ライブラリーは一般的なものです。ちなみに、この場合、返されたf()ポインタは使用されません - オプション1 (しかし、使用することができます - 以下のオプション2を参照してください)。Test.mq5をコンパイルしてもエラーメッセージが 出ないのは、コンパイラがクラス(A)を定義する必要がないことを意味しています。それにもかかわらず、実行中に次のエラーが発生しました: 'Test2.ex5' で 'f' が見つかりません。

さらに詳しく

void OnStart() //вариант 2
{
        g( f()/*возвращаемое значение используется*/);
}
 
テスト 結果の最大ドローダウンの代わりに相対ドローダウンを設定することが可能かどうか教えてください。しかし、最大ドローダウンは3~5%、相対ドローダウンは50%に達することもしばしばです。そして、相対的なドローダウンを見るには、別途テストする必要があります。ありがとうございました。
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
 
Vladimir Pastushak:

Windowsの言語を変更しないと幸せになれない...。