変数の定義もれ?
稚拙なEAをつくってみました。変数が定義されていない箇所が一か所あるというエラーメッセージがでます。売りポジションのストップロスあたりのようなのですが、どこかわかりません。どなたかよろしくお願いいたします。(安易に聞くなと怒られそうですが、3日考えてもわかりません。よろしくお願いします。)
??????????????????????????????????????????????????????????????????????????
//パラメーターの設定//
extern double Lots = 1.0; //取引ロット数
extern int Slip = 10; //許容スリッページ数
extern string Comments = ""; //コメント
extern int TP =20 ; //利益確定ポイント数
extern int SL =15 ; //ストップロスポイント数
//変数の設定//
int Ticket_L = 0; //買い注文の結果をキャッチする変数
int Ticket_S = 0; //売り注文の結果をキャッチする変数
int Exit_L = 0; //買いポジションの決済注文の結果をキャッチする変数
int Exit_S = 0; //売りポジションの決済注文の結果をキャッチする変数
double st_2_60 = 0; //60分足の2本前のバーのストキャスティクス
double st_1_60 = 0; //60分足の1本前のバーのストキャスティクス
double st_2_15 =0; //15分足の2本前のバーのストキャスティクス
double st_1_15 =0; //15分足の1本前のバーのストキャスティクス
double signal_2_60 =0; //60分足の2本前のバーのシグナル
double signal_1_60 =0; //60分足の1本前のバーのシグナル
double signal_2_15= 0; //15分足の2本前のバーのシグナル
double signal_1_15= 0; //15分足の1本前のバーのシグナル
int start()
{
st_2_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,0,2);
st_1_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,0,1);
st_2_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,0,2);
st_1_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,0,1);
signal_2_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,1,2);
signal_1_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,1,1);
signal_2_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,1,2);
signal_1_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,1,1);
//買いポジションの利益確定
OrderSelect(Ticket_L,SELECT_BY_TICKET);
if( (OrderOpenPrice()+TP*Point<=Bid)
&&(Ticket_L != 0 && Ticket_L != -1 ))
{
Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red);
if( Exit_L ==1 ) {Ticket_L = 0;}
}
//売りポジションの利益確定
OrderSelect(Ticket_S,SELECT_BY_TICKET);
if( (OrderOpenPrice()-TP*Point>=Ask)
&&(Ticket_S!= 0 && Ticket_S != -1 ))
{
Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
if( Exit_S==1 ) {Ticket_S = 0;}
}
//買いポジションのストップロス
OrderSelect(Ticket_L,SELECT_BY_TICKET);
if( (OrderOpenPrice()-SL*Point>=Bid)
&&(Ticket_L!=0 && Ticket_L!=-1))
{
Exit_L=OrderClose(Ticket_L,Lots,Bid,Slip,Red);
if(Exit_L==1){Ticket_L=0;}
//売りポジションのストップロス
OrderSelect(Ticket_S,SELECT_BY_TICKET);
if( (OrderOpenPrice()+SL*Point<=Ask)
&&(Ticket_S != 0 && Ticket_S != -1))
{
Exit_S=OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
if(Exit_S==1){Ticket_S=0;}
//買いポジションのエグジット
if( st_1_15 <= 25
&& Ticket_L != 0 && Ticket_L != -1)
{
Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red);
if( Exit_L ==1 ) {Ticket_L = 0;}
}
//売りポジションのエグジット
if( st_1_15 >=75
&& Ticket_S != 0 && Ticket_S != -1 )
{
Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
if( Exit_S ==1 ) {Ticket_S = 0;}
}
//買いエントリー
if( st_2_60 > 20
&& st_1_60 > st_2_60
&& st_1_60 < 70
&& st_2_15 > 20
&& st_1_15 > st_2_15
&& st_1_15 < 70
&& st_1_15 >= signal_1_15
&& ( Ticket_L == 0 || Ticket_L == -1 )
&& ( Ticket_S == 0 || Ticket_S == -1 ))
{
Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red);
}
//売りエントリー
if( st_2_60 < 80
&& st_1_60 < st_2_60
&& st_1_60 >30
&& st_2_15 < 80
&& st_1_15 <= st_2_15
&& st_1_15 <= signal_1_15
&& ( Ticket_S == 0 || Ticket_S == -1 )
&& ( Ticket_L == 0 || Ticket_L == -1 ))
{
Ticket_S = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue);
}
return(0);
}
// the end.
お礼
>>決定ロジックを理解してbufferの値を使って色を算出する(つまり、トレンドを見る)ように考える やはり値をもって返してあげないとダメなんですね。 >>すいません、余分なコメントが多すぎました。。。 いえいえ、余分に参考になりました! EA作成に着手して今夜で2日目、何事も大変参考になります。 当該インジ、添付画像でみると大変理解しやすいですね。 ありがとうございました。