ライブラリ: マルチテスター - ページ 20

 

長い間生きているようなヒープクラッシュを伴うやっかいなエラー。

    ::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 ));
    user32::SendMessageW(Handle, CB_GETLBTEXT, 0, Buf);

CB_GETLBTEXTLEN: 戻り値は文字列の長さで、終端のヌル 文字を除いたTCHAR単位。

CB_GETLBBTEXT: バッファは文字列と終端のヌル文字に対して十分なスペースがなければならない。

次のように書くべきである。

::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 )+1);
 
traveller00:

長生きしたかのような玉突きでの巧妙なミス。


CB_GETLBTEXTLEN: 戻り値は文字列の長さで、終端ヌル文字を除いたTCHAR単位。

CB_GETLBBTEXT: バッファは文字列と終端のヌル文字に十分なスペースがなければならない。

次のように書くべきである。

ありがとう!True、GetExpertNameは、これが使われるところでは、ほとんど初歩的なことになりました。

 
fxsaber:

GetExpertNameは、それが使われる場所では、ほとんど初歩的なものになっている。

なんと、Runから引っ張って きたSetExpertNameで使って いるのであり、実はMultiTesterのメイン関数の一つなのである。滅多にないエラーなのだが、偶然に遭遇してしまった。

 
traveller00:

なんというか、Runから引っ張って きたSetExpertNameで使われていて 、実はMultiTesterのメイン関数の一つなのです。このエラーはめったに出ないのだが、私は偶然このエラーに出くわした。

ここしばらくはそんなことはなかった。

 
    Str += iBeginTime ? "FromDate==" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate==" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;

FromDate==」と「ToDate==」に余分な等号?

 
traveller00:

FromDate==」と「ToDate==」に余分な等号?

不要です。

 
こんにちは。MultiTesterを標準フォワードのWFOとして使用していますが、標準の1/4ピリオド区切りでは不十分です。あなたのコードを理解し、MultiTesterにフォワードの日付フィールドを埋めるように教えようとしていますが、OOPの知識がないとできません。MTTesterファイルのRun()関数にたどり着きました。それ以上は理解できません。すべてのパラメータは1行にまとめられ、SetSettings2とSetSettingsに渡され、そこで乗算されてクリップボードに渡されます。文字列の中に別のパラメータが現れる場合、またMultiTesterがデータをウィンドウに挿入する場合、他に何を修正する必要があるのか教えてください。
そして同時に、TesterSettings.Add()関数のINITDEINIT fInitとINITDEINIT fDeinitの目的についても教えてください。
 
Good Beer:
こんにちは。MultiTesterをWFOとして標準フォワードで使用していますが、標準の1/4ピリオド分割では不十分です。あなたのコードを理解し、MultiTesterにフォワードの日付フィールドを埋めるように教えようとしていますが、OOPの知識がないとできません。MTTesterファイルのRun()関数にたどり着きました。それ以上は理解できません。すべてのパラメータは1行にまとめられ、SetSettings2とSetSettingsに渡され、そこで乗算されてクリップボードに渡されます。行に別のパラメータが表示される場合、またMultiTesterがウィンドウにデータを挿入する場合、何を修正すればよいのか教えてください。

Tester->SettingsタブでCTRL+Cを押し、テキストエディタでCTRL+Vを押してください。テスターの 全ての設定が表示されます。

ForwardMode
ForwardDate

この2つのパラメーターが前進の役割を担っています(2つ目は1つ目が4の時に関連します)。


MTTesterはクリップボードを介してテスターの設定を管理し、CTRL+Vでテキストエディタに表示されるものを作成します。

 
fxsaber:


MTTesterはクリップボードを介してテスターの設定を管理し、CTRL+Vでテキストエディタに表示されるものを作成します。

ありがとうございます。

タスクは明確です:上から数えて正しい行を見つけ、必要なテキストに置き換える。

 
Good Beer:

タスクは明確だ。上から正しい行を見つけ、必要なテキストに置き換える。

行番号は変わるが重要ではない。

  static bool Run( const string ExpertName = NULL,
                   const string Symb = NULL,
                   const ENUM_TIMEFRAMES period = PERIOD_CURRENT,
                   const datetime iBeginTime = 0,
                   const datetime iEndTime = 0,
                   const int ForwardMode = 0 )
  {
    string Str = "[Tester]\n";

    Str += (ExpertName != NULL) ? "Expert=" + ExpertName + "\n" : NULL;
    Str += (Symb != NULL) ? "Symbol=" + Symb + "\n" : NULL;
    Str += iBeginTime ? "FromDate=" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate=" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;
    Str += "ForwardMode=" + (string)ForwardMode + "\n";

    return(MTTESTER::SetSettings2(Str) &&
           MTTESTER::SetTimeFrame(period) && MTTESTER::ClickStart());