忍者ブログ

forex tester2のインディケーターを自作

fx(外国為替証拠金取引)のトレードの練習やルールの検証をForex Tester 2というソフトでしてみます。 Meta Trader4(MT4)のインディケーター(indicator)をForex Tester2用に移植できたらしてみます。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


BreakOut-EAGLE__ut2DaMax.mq4 みたいなの移植成功

BreakOut-EAGLE__ut2DaMax.mq4 に似たのが完成しました。
これくらいのことで徹夜しました。4流プログラマー以下です。

Forex Tester2には矩形(OBJ_RECTANGLE)のオブジェクトが無いようなので
4本の線で代用しました。

下手なコードですがCalculateだけ晒します。

procedure Calculate(index: integer); stdcall; var timestr, objnumstr: String; timeindex: TDateTime; begin if (index <> 0) then exit; if oldBars > Bars then exit; timeindex := Time(index); timestr := TimeToStr(timeindex); objnumstr := IntToStr(objnum); if (mode = 0) then begin if StrLComp(PChar(timestr),PChar('21:00:00'),4) = 0 then begin highp := High(index); lowp := Low(index); if ObjectExists(objnumstr+'l') then begin ObjectDelete(objnumstr+'l'); ObjectDelete(objnumstr+'u'); ObjectDelete(objnumstr+'d'); ObjectDelete(objnumstr+'r'); end; ObjectCreate(objnumstr+'l', obj_TrendLine, 0,timeindex, highp,timeindex, lowp); ObjectCreate(objnumstr+'u', obj_TrendLine, 0,timeindex, highp,timeindex, highp); ObjectCreate(objnumstr+'d', obj_TrendLine, 0,timeindex, lowp, timeindex, lowp); // create text if ObjectExists(objnumstr+'t1') then begin ObjectDelete(objnumstr+'t1'); ObjectDelete(objnumstr+'t2'); end; ObjectCreate(objnumstr+'t1', obj_Text, 0, timeindex, highp); ObjectSetText(objnumstr+'t1', FloatToStr(highp), 12, 'Arial', clYellow); ObjectSet(objnumstr+'t1', OBJPROP_VALIGNMENT, tlBottom); ObjectSet(objnumstr+'t1', OBJPROP_HALIGNMENT, taLeftJustify); ObjectCreate(objnumstr+'t2', obj_Text, 0, timeindex, lowp); ObjectSetText(objnumstr+'t2', FloatToStr(lowp), 12, 'Arial', clYellow); ObjectSet(objnumstr+'t2', OBJPROP_VALIGNMENT, tlTop); ObjectSet(objnumstr+'t2', OBJPROP_HALIGNMENT, taLeftJustify); mode := 1; end; end else if (mode = 1) then begin if (highp < high(index)) then highp := high(index); if (lowp > low(index)) then lowp := low(index); ObjectSet(objnumstr+'l', OBJPROP_PRICE1, highp); ObjectSet(objnumstr+'l', OBJPROP_PRICE2, lowp); ObjectSet(objnumstr+'u', OBJPROP_PRICE1, highp); ObjectSet(objnumstr+'u', OBJPROP_PRICE2, highp); ObjectSet(objnumstr+'u', OBJPROP_TIME2, timeindex); ObjectSet(objnumstr+'d', OBJPROP_PRICE1, lowp); ObjectSet(objnumstr+'d', OBJPROP_PRICE2, lowp); ObjectSet(objnumstr+'d', OBJPROP_TIME2, timeindex); // set text props ObjectSet(objnumstr+'t1', OBJPROP_TIME1, timeindex); ObjectSet(objnumstr+'t1', OBJPROP_PRICE1, highp); ObjectSet(objnumstr+'t2', OBJPROP_TIME1, timeindex); ObjectSet(objnumstr+'t2', OBJPROP_PRICE1, lowp); ObjectSetText(objnumstr+'t1', FloatToStr(highp), 12, 'Arial', clYellow); ObjectSetText(objnumstr+'t2', FloatToStr(lowp), 12, 'Arial', clYellow); if StrLComp(PChar(timestr),PChar('5:00:00'), 3) = 0 then begin mode := 2; if not(ObjectExists(objnumstr+'r')) then ObjectCreate(objnumstr+'r', obj_TrendLine, 0, timeindex, highp, timeindex, lowp); highp2 := highp; lowp2 := lowp; mode2 := 0; end; end else if (mode = 2) then begin ObjectSet(objnumstr+'u', OBJPROP_TIME2, timeindex); ObjectSet(objnumstr+'d', OBJPROP_TIME2, timeindex); if ((mode2 = 0) and (highp2 < Close(index))) or ((mode2 = 1) and (highp2 <= high(index))) then begin highp2 := high(index); if ObjectExists(objnumstr+'t3') then ObjectDelete(objnumstr+'t3'); ObjectCreate(objnumstr+'t3', obj_Text, 0, timeindex, highp2); ObjectSetText(objnumstr+'t3', FloatToStr(highp2), 12, 'Arial', clWhite); ObjectSet(objnumstr+'t3', OBJPROP_VALIGNMENT, tlBottom); ObjectSet(objnumstr+'t3', OBJPROP_HALIGNMENT, taLeftJustify); if mode2 = 0 then begin lowp2 := low(index); mode2 := 1; end; end; if ((mode2 = 0) and (lowp2 > Close(index))) or ((mode2 = 1) and (lowp2 >= low(index))) then begin lowp2 := low(index); if ObjectExists(objnumstr+'t4') then ObjectDelete(objnumstr+'t4'); ObjectCreate(objnumstr+'t4', obj_Text, 0, timeindex, lowp2); ObjectSetText(objnumstr+'t4', FloatToStr(lowp2), 12, 'Arial', clWhite); ObjectSet(objnumstr+'t4', OBJPROP_VALIGNMENT, tlTop); ObjectSet(objnumstr+'t4', OBJPROP_HALIGNMENT, taLeftJustify); if mode2 = 0 then begin highp2 := high(index); mode2 := 1; end; end; if StrLComp(PChar(timestr),PChar('20:00:00'), 4) = 0 then begin objnum := objnum+1; if objnum > 10 then begin objnum := 0; end; mode := 0; end; end; oldbars := Bars; end;

赤い枠がNYボックスです。まだ時間は合わせていません。
黄色い文字がNYボックスの高値と安値です。
高値と安値を超えたら白い文字が表示されます。



動画もアップしてみました。

PR

トラックバック

トラックバックURL:

コメント

FX練習生がアップするの?
NYボックスをFT2で練習するとき、ボックスを引くのが大変な手間ですが、こちらでご紹介しておられるBreakOut-EAGLEがあれば千人力と思いました。
販売のご予定はありますか?
また、夏時間・冬時間の設定を変更するメニューはございますか?

(ちなみに、Calculateを紹介しておいでですが、私はプログラムの知識が皆無なので、自分がこれで何かができるのかどうかまったくわかりません)
初めまして 
こちらのBreakOut-EAGLEを使わしてもらったのですが、テストモードで使用した場合 boxの描写の開始時刻 periodbegin を午前1時か3の倍数の時刻にしないと何も表記されないというバグがあるのです(複数通貨で確認)。

日本時間NYBOX開始時刻の13時か14時では描写できないのですが手直しすることはできないでしょうか?。有料でも構いません。

どうかよろしくお願いします。

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字(絵文字)


forex tester2 販売
Forex Tester 2の購入はこちらから。
カレンダー
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
カテゴリー
フリーエリア



最新記事
最新CM
最新TB
RSS
ブログ内検索
アーカイブ
最古記事
プロフィール
HN:
fx練習生
年齢:
49
性別:
男性
誕生日:
1975/04/03
職業:
夢は専業トレーダー
趣味:
fx
自己紹介:
fxの専業トレーダーになって経済的自由と時間的自由を手に入れたいです。
自分で売買ルールを作成してテストして自信をもってリアルトレードしたいです。
P R