2というソフトでしてみます。Tester2用に移植できたらしてみます。ないブログに表示されています。新しい記事を書く事で広告が消えます。systemの実行ファイルの置き場が変更になっていることに気付いた。http://adoxa.110mb.com/global/index.htmlだったのがhttp://adoxa.3eeweb.com/global/になっていた。ただの個人用メモです。クラスForexTester2では時間にTDateTime型を使用しています。クラスと同等だと思われます。TDateTime型を年月日に変換する方法がわからなかったので自分で作ってみました。秒は0秒であることが前提です。60;なんとなくできてそうです。ランタイムライブラリ)をインストールしないと実行できませんでした。どちらもインストールしていないとForexTester2を起動するときに「MSVCP100.dllが見つからないため、このアプリケーションを開始できませんでした。」のようなメッセージが表示されインディケーターが読み込まれませんでした。これまではMSVCP100.dllが必須と思っていましたが今になってプロジェクトの構成プロパティにランタイムライブラリの項目がありマルチスレッド(/MT)にするとMSVCP100.dll、MSVCR100.dllが不要となることに気づきました。.text3つのdllを必要としています。.textMSVCP100.dll、MSVCR100.dllが不要となっています。サイズが13kbから68kbに増えましたが問題ではないです。再頒布可能パッケージをインストールしてなくてトラブルことのほうが問題です。できるだけ再頒布可能パッケージが不要のdllを販売していこうと思います。Frame)のインディケーターを作成するための調査をしてみます。以下の関数を実行して出力を確認してみました。1));Print(buf);}}以下は1分足でバーを1本目から6本目まで表示させた時の出力です。iTime(1)=0.000000以下は1分足でバーを6本目まで表示させた状態でインディケーターを読み込んだ出力です。iTime(1)=0.000000わかったことtimeframeが小さいもののほうがiTime()の戻り値が大きい。完成した足の時間だから細かい足ほど大きくなるのはあたりまえか。Bars()が増えると同時にindex=1となる。Bars()が増えたときに初めて前の足の終値が確定(前の足が完成)するからですね。index=0のときは確定していない値なので何も処理しないほうが潔くていいかもしれないです。indexの値で大きい時間枠にアクセスしてはいけない。大きい時間枠の足を1つづつ過去にさかのぼって小さい時間枠より大きい時間枠が小さくなった足を利用する感じですかね。30分の定義値が無いですが使えるようですね。50分にしてみたら使えなかったので30は使えそうですね。興味のある方はいろいろ自分で試してください。そのほうが身につきます。分かりにくかったけど今日はこの辺で。嵌ったForexTester2のインディケーターを作成している時に少し嵌りました。バー(ロウソク足)が1本増える度に全てのバーを再描画するようにCalculateが呼べれまくりました。原因はIndicatorBuffers(0);だと思われます。ダミーのバッファを作成してIndicatorBuffers(1);とすれば起こらなくなりました。使用しない場合でも最低1つは作成して登録しておかないと駄目みたいです。登録するとプロパティに表示されるのが気に入らないです。インディケーターを作成したのですが動作確認しようとしたら変なエラーが表示されて実行不可能でした。00000008.いろいろやってみましたが原因はIndicatorBuffers(0);を実行していなかったためでした。バッファを使用しない場合でも引数を0で実行しておかないと駄目みたいです。4つのバッファを使用してロウソク足を表示できます。例としてサブウインドウにUSDJPYのロウソク足を表示するインディケーターを作ってみました。以下はプログラムコードです。指定したら表示できました。最初の3つのバッファは色の指定だけが影響を与えると思われます。バッファに設定していますが別の通貨の組み合わせを設定しても面白いかもしれません。4つ目のバッファのプロパティを変更することで実線を点線にしたり線の太さを変更したりできます。以下はUSDJPYのチャートのサブウィンドウに表示した例です。2の購入はこちらから。プログラムSetIndexStyle関数の調査SetIndexStyle関数の第2引数でds_Fillとds_HistogramFillの使用方法がわからなかったのでいろいろ試してみました。両方とも2つのバッファを使用します。バッファが1つだけのとき指定してもds_Lineと同じか何も表示されないです。以下は2つのバッファにいろいろスタイルを組み合わせた例です。指定しても意味が無いようです。2つ目にds_Fillを設定した場合は1つ目がds_Fillでもds_Lineでもds_Sectionでも同じようです。ds_Sectionが歯抜けの場合はどうなるか面倒なので試していません。2つ目にds_Fillを設定した場合は1つ目がds_Noneでもds_HistogramFillでも同じようです。ds_Histogramとds_Fillの組み合わせでも表示できました。使用することは無いでしょう。ds_Symbolとds_Fillの組み合わせでも表示できました。歯抜けの場合どうなるかわかりません。2つ目にds_HistogramFillを設定した場合は1つ目がds_Fillでもds_Lineでもds_Sectionでも同じようです。ds_HistogramFillとds_Histogramの組み合わせも可能でした。ds_HistogramFillとds_Symbolの組み合わせも可能でした。2つ目にds_HistogramFillを設定した場合は1つ目がds_Noneでもds_HistogramFillでも同じようです。歯抜けのバッファの場合も試してみたら両方のバッファに値の存在する時間だけ縦線が表示されました。ds_Fillはds_HistogramFillとds_Lineのセットみたいな感じですね。以上暇なことをしてみました。2の購入はこちらから。プログラム売買シグナルを表示オシレーターウィンドウに売買シグナルを表示してみます。単純に1時と13時に買いシグナル、7時と19時に売りシグナルを表示してみます。Calculate;end.SetIndexStyle関数でds_Symbolを指定してSetIndexSymbol関数で文字を指定します。シンボルを表示したい時だけバッファに値を設定します。指定した値の位置にシンボルが表示されます。週の始めは7時のデータが無いので空白になっています。255SetIndexStyle関数で指定できるds_Sectionとds_Lineの違いを調べてみました。先ほどのプログラムのds_Symbolをds_Sectionとds_Lineに変更してみました。ds_Lineでは何も表示されませんでした。隣のバッファが空の時は線を引かないようです。プログラム少しだけデバッグしてみました少しだけデバッグコードを仕込んでデバッグしてみました。print関数でTerminalに文字列を出力することができます。同じ内容が記録されます。Init関数、Calculate関数が呼ばれるタイミング、Calculate関数の引数indexの値、HOURバッファの初期値、ロウソク足増加時のバッファの変化について確認しました。Calculate;end.実行した結果です。最初にInit関数を実行しています。バッファの初期値が100となっているのでSetEmptyValue関数で設定した値がバッファの初期値のようです。Calculate関数の引数を9から0にデクリメントしながら10回実行しています。右端がHOUR[0]になるようです。ローソク足が1本増えると元々のHOUR[0]の値がHOUR[1]にコピーされています。左端がHOUR[10]となって右端がHOUR[0]となっています。勝手にシフトされているようです。exit;この処理で設定済みのバッファは上書きしないようにしています。Calculate関数が毎分実行されてLogが多くなるのを防いでいます。2の購入はこちらから。tester(フォレックステスター)とは(05/16)プログラム言語について(05/16)lazarusのインストール(05/16)とりあえずコンパイル(05/16)ライブラリのサイズの削減(05/16)発見しました。趣味:fx自己紹介:fxの専業トレーダーになって経済的自由と時間的自由を手に入れたいです。自分で売買ルールを作成してテストして自信をもってリアルトレードしたいです。次のページ>>忍者ブログ[PR]。