ブログトップ > スポンサー広告 > [Code] 配列を利用して指値逆指値キャンセルを検出する

スポンサーサイト

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

ブログトップ > MT4Code > [Code] 配列を利用して指値逆指値キャンセルを検出する

[Code] 配列を利用して指値逆指値キャンセルを検出する

今度は指値逆指値のキャンセルがあった状態について考えます。

1つ前の状態が指値逆指値の注文を持っていた場合については次の2つのパターンが考えられます。

(1)指値逆指値の注文を持った状態 → 注文のない状態
img2012010202.png

(2)指値逆指値の注文を持った状態 → 指値逆指値の注文を持った状態(状態の変化なし)
img2012010203.png

指値逆指値のキャンセルがあった場合は(1)です。これを言葉で説明すると

(1)1つ前の状態で指値逆指値の注文を持ち、現在の状態ではその同じチケットは存在しない場合


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

[1]指値逆指値の注文を持った状態:PreviousOrdersArray[1][5]
[2]注文のない状態:CurrentOrdersArray[1][5]

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

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

double PreviousOrdersArray[1][5] = { 8015456, OP_BUYLIMIT, 1.31785, 1.31085, 1.32785};

double CurrentOrdersArray[1][5] = {};

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_PreviousTICKET = 0;
int same_CurrentTICKET = 0;
int PO_Closed_Num;
int PO_Closed = 0;

for(i= 0;i<dim1_size_Previous;i++){
if(PreviousOrdersArray[i][ORDERTYPE] == OP_BUY || PreviousOrdersArray[i][ORDERTYPE] == OP_SELL) continue;
exist_PreviousTICKET = 1;
PO_Closed_Num = i;
for(j = 0;j<dim1_size_Current;j++){
if(PreviousOrdersArray[i][TICKET] == CurrentOrdersArray[j][TICKET]){
same_CurrentTICKET = 1;
break;
}
}
}

if(exist_PreviousTICKET==1 && same_CurrentTICKET==0) PO_Closed++;

if(PO_Closed > 0) Print("PreviousOrdersArray[PO_Closed_Num][TICKET]: ", PreviousOrdersArray[PO_Closed_Num][TICKET]);
else Print("Nothing");

//----
return(0);
}
スポンサーサイト

コメント

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

トラックバック

トラックバックURL: http://atslab.blog135.fc2.com/tb.php/53-1cae4f85

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。