ブログトップ > アーカイブ - 2012年01月

スポンサーサイト

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

ブログトップ > アーカイブ - 2012年01月

[Code] 配列を利用して注文の変更を検出する

今度はORDERTYPE以外の注文内容が変更された状態について考えます。

■注文を持った状態 → 注文を持った状態(ORDERTYPE以外の注文内容が変更)
img2012010501.png

上の例では、STOPLOSSの値が1つ前の状態とで異なります。

1つ前の状態の同じチケットで、ORDERTYPE以外の注文内容が変更された場合について、具体的にプログラムしてみます。

[1]注文を持った状態:PreviousOrdersArray[1][5]
[2]注文を持った状態:CurrentOrdersArray[1][5]

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

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

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

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

double CurrentOrdersArray[1][5] = { 8015456, OP_BUY, 1.31785, 1.31700, 1.32785 };

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

for(int i= 0;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 Print(CurrentOrdersArray[j][TICKET]," ",CurrentOrdersArray[j][ORDERTYPE]," ",CurrentOrdersArray[j][OPENPRICE]," ",CurrentOrdersArray[j][STOPLOSS]," ",CurrentOrdersArray[j][TAKEPROFIT]," ","\n");
}

int Modified_Num;
int Modified = 0;
int FixProfit_Num;
int FixProfit = 0;

for(i= 0;i<dim1_size_Current;i++){//*2
for(j = 0;j<dim1_size_Previous;j++){//*3
if(CurrentOrdersArray[i][TICKET] == PreviousOrdersArray[j][TICKET]){//*4
if(CurrentOrdersArray[i][OPENPRICE] != PreviousOrdersArray[j][OPENPRICE] ||
CurrentOrdersArray[i][STOPLOSS] != PreviousOrdersArray[j][STOPLOSS] ||
CurrentOrdersArray[i][TAKEPROFIT] != PreviousOrdersArray[j][TAKEPROFIT]){//*5
Modified_Num = i;
Modified++;
//if(Modified > 0) Print("Modified: ",CurrentOrdersArray[i][TICKET]);

if((CurrentOrdersArray[i][ORDERTYPE] == OP_BUY &&
CurrentOrdersArray[i][STOPLOSS] > CurrentOrdersArray[i][OPENPRICE] &&
PreviousOrdersArray[j][STOPLOSS] <= CurrentOrdersArray[i][OPENPRICE] )||
(CurrentOrdersArray[i][ORDERTYPE] == OP_SELL &&
CurrentOrdersArray[i][STOPLOSS] < CurrentOrdersArray[i][OPENPRICE] &&
PreviousOrdersArray[j][STOPLOSS] >= CurrentOrdersArray[i][OPENPRICE] )){//*6
FixProfit_Num = i;
FixProfit++;
}//*6
}//*5
break;
}//*4
}//*3
}//*2

if(Modified > 0) Print("CurrentOrdersArray[Modified_Num][TICKET]: ", CurrentOrdersArray[Modified_Num][TICKET]);
else Print("Nothing: Modified");
if(FixProfit > 0) Print("CurrentOrdersArray[FixProfit_Num][TICKET]: ", CurrentOrdersArray[FixProfit_Num][TICKET]);
else Print("Nothing: FixProfit");

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

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