//
// ys2MA01a.mq4
// 愛称「2本のチカラ」
// エントリ、エグジットは LWMA 2本を使う
// 15分足でよい結果
//マジックナンバーの定義
#define MAGIC 2021060401
//パラメーターの設定//
extern double Lots = 0.1; //取引ロット数
extern int Slip = 10; //許容スリッページ数
extern string Comments = “ys2MA01a”; //コメント
extern int Fast_period = 10 ;
extern double margin = 0.022 ;
int ma1 = 30 ;
int ma2 = 100 ;
extern int in_time =8; // 取引開始時間(サーバー時間)
extern int out_time = 11; // 取引停止時間(最大24)
//変数の設定//
int Ticket_L = 0; //買い注文の結果をキャッチする変数
int Ticket_S = 0; //売り注文の結果をキャッチする変数
int Exit_L = 0; //買いポジションの決済注文の結果をキャッチする変数
int Exit_S = 0; //売りポジションの決済注文の結果をキャッチする変数
int OS1 ;
int OS2 ;
double OOPL;
double OOPS;
int B_cnt = 0 ;
int S_cnt = 0 ;
extern double ILC = 5.0 ;
extern int TeikyuuYoubi = 0 ; // 定休曜日(0=日, 1=月, 2=火, 3=水, 4=木, 5=金)
int start()
{
double lc = ILC;
if(( Digits ==3 ) ||(Digits ==5)) lc = lc*10.0 ;
if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;
if ( DayOfWeek() == TeikyuuYoubi ) return(0) ;
double lwma1 = iMA(NULL,0,ma1,0,MODE_LWMA,PRICE_CLOSE,1);
double lwma2 = iMA(NULL,0,ma2,0,MODE_LWMA,PRICE_CLOSE,1);
double lwma1p = iMA(NULL,0,ma1,0,MODE_LWMA,PRICE_CLOSE,2);
double lwma2p = iMA(NULL,0,ma2,0,MODE_LWMA,PRICE_CLOSE,2);
double lwma1pp = iMA(NULL,0,ma1,0,MODE_LWMA,PRICE_CLOSE,3);
int trendy = 0;
if ( lwma1 > lwma2 && lwma1 > lwma1p && lwma2 > lwma2p && (( lwma1 – lwma1p ) > ( lwma1p – lwma1pp ) ) ) trendy = 1 ;
if ( lwma1 < lwma2 && lwma1 < lwma1p && lwma2 < lwma2p && (( lwma1 – lwma1p ) < ( lwma1p – lwma1pp ) ) ) trendy = -1 ;
if ( B_cnt > 0){
if ( B_cnt > Fast_period) B_cnt = Fast_period ;
double FastLL2 = Low[iHighest(NULL, 0, MODE_LOW, B_cnt, 2)];
}
if ( S_cnt > 0){
if ( S_cnt > Fast_period) S_cnt = Fast_period ;
double FastHH2 = High[iLowest(NULL, 0, MODE_HIGH, S_cnt, 2)];
}
//買いポジションのエグジット
OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);
OOPL = OrderOpenPrice();
if( ( OOPL – lc*Point >= Close[1] || Close[1] < FastLL2 – margin || Close[1] < lwma1 )
&& ( Ticket_L != 0 && Ticket_L != -1 ))
{
Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Pink);
if( Exit_L ==1 ) {Ticket_L = 0;}
B_cnt= 0 ; S_cnt = 0 ;
}
//売りポジションのエグジット
OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET);
OOPS = OrderOpenPrice();
if( ( OOPL – lc*Point >= Close[1] || Close[1] > FastHH2 + margin || Close[1] > lwma1 )
&& ( Ticket_S != 0 && Ticket_S != -1 ))
{
Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Aqua);
if( Exit_S ==1 ) {Ticket_S = 0;}
B_cnt= 0 ; S_cnt = 0 ;
}
//買いエントリー
if( trendy >0 && Close[1] > High[2]
&& (Hour() >= in_time && Hour() < out_time)
&& ( 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,Pink);
B_cnt= 1 ; S_cnt = 0 ;
}
//売りエントリー
if( trendy <0 && Close[1] < Low[2]
&& (Hour() >= in_time && Hour() < out_time)
&& ( 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,Aqua);
S_cnt= 1 ; B_cnt = 0 ;
}
return(0);
}