[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
カテゴリー:プログラム
間違えているかもしれませんが前回のコードの説明を少しします。
DateUtils は時間を扱う関数を使用するので記述しています。
HOUR というグローバルのバッファに表示する値(0-23)をいれます。
Init関数はインディケーター読み出し時に実行されます。
何故か Forex Testerを起動した時にも呼ばれています。
ow_SeparateWindow でオシレーターウィンドウに表示しします。
ちなみにow_ChartWindowでチャートウィンドウに表示します。
SetFixedMinMaxValues で上限と下限を指定します。
時刻をバッファに設定しています。
CreateIndexBufferでバッファオブジェクトを作成します。
IndicatorBuffers でインディケーターの数を指定します。
SetIndexBuffer でインディケーターとバッファを結び付けます。
Calculate関数はローソク足完成時とローソク足が変化した時に実行されます。
前回の0時の線が表示されなかったのは
SetEmptyValue関数を実行していなかったのでSetEmptyValue(0)となっていたからです。
この関数で設定した値とバッファの値が等しい時は線を表示しない仕様のようです。
SetEmptyValue(24) とした結果です。0時も表示できました。
SetEmptyValue(6)で以下のようになります。
SetEmptyValueは1度実行するだけなのでInitに追加しました。
その1 その3
まずは簡単なインディケーターから作成してみます。
オシレーターウィンドウにロウソク足の完成した時刻を表示させてみます。
コードは以下です。
library HourDisp; uses Interfaces, DateUtils, graphics, IndicatorInterfaceUnit, TechnicalFunctions; var HOUR: TIndexBuffer; procedure Init; stdcall; begin IndicatorShortName('Hour'); SetOutputWindow(ow_SeparateWindow); SetFixedMinMaxValues(-1, 24); HOUR := CreateIndexBuffer; IndicatorBuffers(1); SetIndexBuffer(0, HOUR); end; procedure Calculate(index: integer); stdcall; begin HOUR[index] := HourOf(Time(index)); end; exports Init, Calculate; end.
Forex Testerを起動してインディケーターを追加すると
勝手に線の種類と色を選択できるようになっていました。親切設計です。
15分足で表示してみました。4本毎に1ずつ増えています。でも0時の時に線が表示されていません。
その2 その3
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
自分で売買ルールを作成してテストして自信をもってリアルトレードしたいです。