たまにはEA作成講座でも・・・その2
前回、最後に掲載したソースですが、冒頭部分のEAプロパティの解説が抜けていました。
//---- input parameters
extern bool OrderOpenMail=true;
extern string OrderOpenMailSubject="Order Open Mail";
extern bool OrderCloseMail=true;
extern string OrderCloseMailSubject="Order Close Mail";
の部分ですが、この記述によりEAのプロパティ画面が次の様になります。

externキーワードは外部から参照されるという意味で、
EAのプロパティ値としてユーザが変更できる変数を宣言する時に使います。
boolは変数の型でtrue(真)またはfalse(偽)のどちらかの値を持ちます。
OrderOpenMail=true;とすることで変数OrderOpenMailの初期値はtrueにするという意味になります。
OrderOpenMail変数は、新たにポジションを持ったときにメール送信を行うかどうかを
ユーザが指定出来る様にしようと考えたからです。
と思って前回のソースをよく見るとこの変数が効いていなかった。_| ̄|○
int start()
{
.
.
.
for(i = 0; i < NUM_POSITION_SIZE; i++){
if(!LiveMap[i] && aiTicket[i] != 0){
//closed order
SendOrderMail(aiTicket[i], false);
aiTicket[i] = 0;
}
}
.
.
.
if(!bFound){
//new order found
SendOrderMail(ticket, true);
for(i = 0; i < NUM_POSITION_SIZE; i++){
if(aiTicket[i] == 0){
aiTicket[i] = ticket;
break;
}
}
}
.
.
.
}
の部分ですが、
int start()
{
.
.
.
for(i = 0; i < NUM_POSITION_SIZE; i++){
if(!LiveMap[i] && aiTicket[i] != 0){
//closed order
if(OrderCloseMail)
SendOrderMail(aiTicket[i], false);
aiTicket[i] = 0;
}
}
.
.
.
if(!bFound){
//new order found
if(OrderOpenMail)
SendOrderMail(ticket, true);
for(i = 0; i < NUM_POSITION_SIZE; i++){
if(aiTicket[i] == 0){
aiTicket[i] = ticket;
break;
}
}
}
.
.
.
}
とする必要がありますね。
EAのプロパティ値の話に戻りますが、stringというのは文字列型変数の宣言で、
OrderOpenMailSubject="Order Open Mail";で新たにポジションを持ったときの
メールの「件名」をユーザが変更できる様にしています。
OrderCloseMail、OrderCloseMailSubjectについては
同様にポジションをクローズしたときのメールに関するプロパティです。
たまにはEA作成講座でも・・・その3に続く。

| h o m e |