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

 
//Test.mqh
class A {
public:
        virtual int f() { return ( 1 ); }
};
//TestLib.mq5
#property library
#include "Test.mqh"
int g( A* pA ) export { return ( 5 ); }

//Test.mq5
#include "Test.mqh"
#import "TestLib.ex5"
        int g( A* pA );
#import
void OnStart()
{
        A* pA = new A();
        Print( g( pA ));
        delete( pA );
}
ここまでは順調なのですが、Test.mq5に挿入した途端に、例えば
class B : public A {
};
という実行エラーが すぐに発生します。
 
Silent:

datetime は既に存在する

ArraySize - バーの数、ArraySize-1 - 最後のバー、ArraySetAsSeries はインデックスの方向を設定し、セル番号 = バー、左または右を設定します。

ここに テストスクリプトがあります。

ありがとうございました。試してみます。
 

こんにちは。

TimeCurrent については、MarketWatch から最後のティックの時刻を返すと指定されている。試しに使ってみると、最後のティックが22:59:57なのに、20:30と返される

なぜ、そうなるのでしょうか。

ありがとうございました。

 
ns_k:

こんにちは。

TimeCurrent については、MarketWatch から最後のティックの時刻を返すと指定されている。試しに使ってみると、最後のティックが22:59:57なのに、20:30と返される

なぜ、そうなるのでしょうか。

ありがとうございました。

ヘルプより

OnTick()ハンドラでは この関数は、処理中の受信ティックの時刻を返します その他の場合( 例えば、 OnInit()、OnDeinit()、OnTimer() ハンドラなど)は、 「Market Watch」ウィンドウで利用できる任意のシンボルの最終気配値の到着時刻 、このウィンドウのヘッダに表示されている時刻と同じ です。

 
Lizar:

参考文献より

ありがとうございました。

では、onCalculateで最後の見積もりの到着時刻を取得 するにはどうすればよいのでしょうか。

 
ns_k:

ありがとうございました。

では、onCalculateで最後の見積もりの到着時刻を取得するにはどうすればよいのでしょうか。

Time Pink Floydを聴いて理解した :)

if(SymbolInfoTick(Symbol(),last_tick))

     {

      Print(last_tick.time,": Bid = ",last_tick.bid,

            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);

     }

   else Print("SymbolInfoTick() failed, error = ",GetLastError());

   lEnd=last_tick.time; 
 

こんにちは。

ArrayResize は、静的な クラス/構造体メンバの グローバル初期化フェーズでは機能しないようです。

struct Test{
静的な文字列arr[]。
Test() {
ArrayResize(arr,5) ;
if (ArraySize(arr)!=5) Alert("We have a bug");
}
};
テストテスト。

 

次のような悩みをお持ちの方はいらっしゃいませんか?

端末のバージョンとビット

Windows 8、MetaTrader 5 - Alpari UK、Build 821、64ビット。

問題の内容

H1のインジケーターがM1のインジケーターを呼び出す。CopyBuffer コマンドは間違ったデータをコピーします。この問題はストラテジーテスターでのみ発生します。端末では、すべてのデータがエラーなくコピーされています。M1インジケータは、データを第1バッファにコピーします。

一連の動作

ストラテジーテスターで、SampleCopyBufferインジケータを H1でテスト するよう選択します。期間は2013-05-01から2013-07-07までとしました。スタート]をクリックし、ログのエラーメッセージを読みます。

結果が出る。

そして、ログのエラーメッセージを読みました。M1からのインジケータバッファ値がCopyHigh値と一致しない。

期待される結果

CopyBufferとCopyHighの値は等しくなければならない。

その他の情報

起動時の端末のエラーはありません。ストラテジーテスターのみ付録の私の指標をご覧ください。SampleHighsはM1上で動作し、H1上で動作するSampleCopyBufferインジケータから呼び出されます。
ファイル:
 
denmax:

こんにちは。

ArrayResize は、静的な クラス/構造体メンバの グローバル初期化フェーズでは機能しないようです。

struct Test{
静的な文字列arr[]。
Test() {
ArrayResize(arr,5) ;
if (ArraySize(arr)!=5) Alert("We have a bug");
}
};
テストテスト。

メッセージありがとうございました、訂正いたします。あなたのコードは、静的文字列 arr[] が見つからないというエラーを発生させます。あなたのコードを正しく動作させるには、Test クラスのインスタンスの前に静的変数を「配置」する必要があります。

struct Test{
   static string arr[];
   Test() {
       ArrayResize(arr,5) ;
       if (ArraySize(arr)!=5) Alert("We have a bug"); 
    } 
};

string Test::arr[];

Test test; 
 

こんにちは。

私は、自作のカスタムインジケーターの 特性を分析するスクリプトを書いています :)

ヘルプではIndicatorCreateを 使用するように指定されています。

インジケーターハンドルの受け皿として。ほぼ全て理解しているのですが、スクリプトが使用するチャートにインジケータがある場合、再度インジケータを作成する必要があり、非常に不思議な感じがします。もしかしたら、すでに計算されたインジケータの値をスクリプトで取得する方法があるのでは?

ありがとうございました。