ブログトップ > スポンサー広告 > [Code] 配列を利用してクローズポジションを検出する

スポンサーサイト

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

ブログトップ > MT4Code > [Code] 配列を利用してクローズポジションを検出する

[Code] 配列を利用してクローズポジションを検出する

今度はポジションがクローズされた状態について考えます。

1つ前の状態がポジションを持っていた場合については次の2つのパターンが考えられます。

(1)ポジションを持った状態 → 注文のない状態
img2011122604.png

(2)ポジションを持った状態 → ポジションを持った状態(状態の変化なし)
img2011122603.png

ポジションがクローズされた状態は(1)です。これを言葉で説明すると

(1)1つ前の状態でポジションを持っていたチケットが現在の状態にない場合


具体的にプログラムしてみます。

img2011121904.png

この表を配列で表します。

[1]ポジションを持った状態:PreviousOrdersArray[3][5]
[2]ポジションがクローズされた状態:CurrentOrdersArray[2][5]

-----------------------------------------------

static int lastCheckTime = 0;
//Print("lastCheckTime: ", lastCheckTime);

if(TimeCurrent()-lastCheckTime < CheckTimeInterval) return(0);
lastCheckTime = TimeCurrent();

double PreviousOrdersArray[3][5] = { 8015456, OP_BUY, 1.31785, 1.31085, 1.32785,
8015483, OP_BUYSTOP, 1.3246, 1.3156, 1.3346,
8015510, OP_SELLSTOP, 1.31438, 132338, 1.30438 };

double CurrentOrdersArray[2][5] = { 8015483, OP_BUYSTOP, 1.3246, 1.3156, 1.3346,
8015510, OP_SELLSTOP, 1.31438, 1.32338, 1.30438 };

int dim1_size_Previous = ArrayRange(PreviousOrdersArray,0);
Print("dim1_size_Previous: ", dim1_size_Previous);

for(int i= 0;i<dim1_size_Previous;i++){
Print(PreviousOrdersArray[i][TICKET]," ",PreviousOrdersArray[i][ORDERTYPE]," ",PreviousOrdersArray[i][OPENPRICE]," ",PreviousOrdersArray[i][STOPLOSS]," ",PreviousOrdersArray[i][TAKEPROFIT]," ","\n");
}

int dim1_size_Current = ArrayRange(CurrentOrdersArray,0);
Print("dim1_size_Current: ", dim1_size_Current);

for(int j= 0;j<dim1_size_Current;j++){
Print(CurrentOrdersArray[j][TICKET]," ",CurrentOrdersArray[j][ORDERTYPE]," ",CurrentOrdersArray[j][OPENPRICE]," ",CurrentOrdersArray[j][STOPLOSS]," ",CurrentOrdersArray[j][TAKEPROFIT]," ","\n");
}

int exist_TICKET = 0;
int same_TICKET = 0;
int Closed_Num;
int Closed = 0;

for(i= 0;i<dim1_size_Previous;i++){
if(PreviousOrdersArray[i][ORDERTYPE] != OP_BUY && PreviousOrdersArray[i][ORDERTYPE] != OP_SELL) continue;//[1]のPreviousOrdersArrayからポジションを持った状態の「チケット」を探します。
exist_TICKET = 1;
Closed_Num = i;
for(j = 0;j<dim1_size_Current;j++){
if(PreviousOrdersArray[i][TICKET] == CurrentOrdersArray[j][TICKET]){
same_TICKET = 1;//「チケット」が同じ場合は検出から除外します。
break;
}
}
}

if(exist_TICKET==1 && same_TICKET==0) Closed++;//1つ前の状態がポジションを持っていて、現在はその同じ「チケット」が存在しない場合、ポジションがクローズされたとしてフラッグをたてる

if(Closed > 0) Print("PreviousOrdersArray[Closed_Num][TICKET]: ", PreviousOrdersArray[Closed_Num][TICKET]);
else Print("Nothing");
スポンサーサイト

コメント

コメントの投稿
  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL: http://atslab.blog135.fc2.com/tb.php/51-37a3ea47

profile

atslab

Author:atslab
ATSLABへようこそ!FXトレードに関する情報を発信しています。
著者はプログラマー、FXトレーダーです。情報環境学という大学の研究機関で研究員を経て独立。FXは裁量トレード、システムトレード、コンピュータによる自動売買をそれぞれ併用して取り引きしています。これまで取引ツールをいくつもプログラミングしてきました。その中から取引に有効なツールを提供していきたいと考えています。

entry
comment
trackback
archive
category
form
rss
link
qrcode
QR
copyright
Author by atslab

Designed by マンゴスチンw

ATSLAB(FX初心者が読んで面白い!外国為替の自動売買システム研究所)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。