FX取引ルール確立のために

取引方針が定まらぬ臆病者の外国為替証拠金取引の行方。 取引ルールの柱にテクニカルな売買サインを導入中。システム開発状況を全て公開。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

OCOもどきストラテジー

これまで紹介してきたサンプルストラテジーは、
ストップを逆指値注文で行い、利確は損益額を使っています。
逆指値注文はその価格で約定されますが、損益額の判断はバーの終値時点で実行されます。

今回はこれを変更して手仕舞いは必ず注文によって行うようなストラテジーを作ってみました。
つまりstop_buyとlimit_sell、またはstop_sellとlimit_buyを同時に実行させます。
できるのかどうか半信半疑でしたが、すんなり動作しました。

あとはどちらかの注文が約定された時に残った注文をどのようにして取り消すかです。
こちらも単純に考えて、ポジションがなくなったら取り消すことにしました。

ついでに損益額を自由に指定できるようにしました。

以下はそのソースコードです。

******************

strategy sample_EURUSD_SMA_OCO;
input lots = 1,
profit = 0.0020 , loss = 0.0010, { 損益額の設定 }
smaperiod = 5;
vars sma1(series), i(number);
begin
sma1 := SMA(close, smaperiod);
i := back(close);
if i <= front(close) + 1 then return;
// 買いポジションと同時に2つの手仕舞い注文をする
if (positionvolume() = 0) and crossup(close, sma1) then begin
buy(lots);
stop_sell(lots , close[i] - loss);
limit_sell(lots , close[i] + profit);
end;

if (positionvolume() = 0) and crossdown(close, sma1) then begin
sell(lots);
stop_buy(lots , close[i] + loss);
limit_buy(lots , close[i] - profit);
end;
// ポジションが無くなったら注文を取り消す
if (positionvolume() = 0) then begin
cancel_all_stops();
cancel_all_limits();
end;
end.

上記の記述は、GFTのdealbook360に対応したものです。
GFT

**********************

問題点:
注文の取り消しは、バーの終値が確定した時点で実行されます。
従って、使用するチャートのタイムフレームの時間だけ注文が放置されます。
5分足チャートならば最大5分間、注文が残った状態になります。
この5分間に価格が急反転して、残っていた注文が約定する可能性があります。
タイムフレームが長い程、注文損益額が小さい程、可能性が大きくなります。

おまけにポジションがあると新たな売買サインがでないので、ポジションがズーット保持されます。

関数の英文説明にOCOはできません、と書いてあるのはこの辺のことのようです。
つまり一方の注文が約定したら、もう一方の注文が取り消される、
というOCO関数が今のところないのが問題点です。

モジュール集の目次

参考になったらクリックよろしく 人気blogランキング

自前の検証をお勧めします
口座開設はこちらから
FX
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://fxrun.blog55.fc2.com/tb.php/1273-e468e36e
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。