PR
CALENDAR
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     
<< April 2012 >>
ARCHIVES
RECOMMEND
MOBILE
qrcode
スポンサーサイト
この広告は60日以上更新がないブログに表示されております。
新しい記事を書くことで広告を消すことができます。
| - | | - | - | - | |
問題のEA
 GBPJPY スプレッド7固定で計算




 なんでこうなるの・・・?
 たぶん、曜日アノマリーが強く表出するのが一定期間だけ、ということになるのかなぁ。
 実際にはスプ3強でポジれるからもうちょっと右肩上がりになるはずだけど、これはちょっと使えないです。
 この結果見るとEAは、今どのテクニカルが効くのかを自らバックテストしながら運用する、ということになるっぽい。
| - | 15:48 | comments(2) | trackbacks(0) | - | ログピに投稿する |
曜日EA
・曜日にこだわったEA。
・1枚固定。
・多重ポジは可能(最高3枚くらい?)でナンピンは不可。
・これ作った私自身が実際これで利益出せるのか不安・・・。
・今週から動かしてみます。

USDJPY スプレッド3固定で計算
 

EURUSD スプレッド2固定で計算


GBPUSD スプレッド4固定で計算
| - | 15:32 | comments(0) | trackbacks(0) | - | ログピに投稿する |
EA失敗作


スプレッドは全て0で計算

EURUSD 4361トレード 3.18pips
USDJPY 2.08pips
GBPUSD 2.60pips

//+------------------------------------------------------------------+
//|                                               Moving Average.mq4 |
//|                      Copyright ゥ 2005, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#define MAGICMA  20050612

extern double Lots               = 0.1;
extern double MaximumRisk        = 0.02;
extern double DecreaseFactor     = 3;
extern double MovingPeriod       = 12;
extern double MovingShift        = 6;


//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

 


//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
   int flagm=0;
   int timer=0;
   double score=0;
   double scoreb=0;
int magicbango=0;
int a;  
int b;
double hourmax=-99999;  
double hourmin=99999;  

double hourscore[30];
int hourcount[30];
double niku=0;
double nikuniku=1;
double kasan[30];
int fla=0;
for(a=0;a<26;a++){
hourscore[a]=0;
hourcount[a]=0;
kasan[a]=0;
}


   if(Volume[0]>1) return;

b=0;
for(a=1;a<140;a++){
if(TimeHour(Time[a]) == 0)b=a;
}
//24*30個の足の終値を各時間に分けて加算する。何回加算したかを記録する。
for(a=b;a<(24 * 50);a++){
if(hourcount[TimeHour(Time[a])] < 30){
hourscore[TimeHour(Time[a])] += Close[a];
//hourscore[TimeHour(Time[a])] += Close[a] - Open[a];
hourcount[TimeHour(Time[a])]++;
}
}

//各時間の終値平均を計算する
for(a=0;a<24;a++){
hourscore[a] = (hourscore[a] / hourcount[a]);
}

 

 


//終値平均の中で一番高い物と低い物はどれか
for(a=0;a<24;a++){
if(hourscore[a] > hourmax)hourmax = hourscore[a];
if(hourscore[a] < hourmin)hourmin = hourscore[a];
}


fla=1;
for(a=0;a<24;a++){
if(hourscore[TimeHour(Time[a])]<0)fla=0;
}
if(hourmax != hourmin){

if((hourscore[TimeHour(Time[1])] == hourmax)){flagm=2;magicbango=3000;}
if((hourscore[TimeHour(Time[1])] == hourmin)){flagm=1;magicbango=3001;}
}

 


   if(1 == 1){


if(flagm==1){
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,300,0,0,"",magicbango,0,Red);//
//      res=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(MarketInfo(Symbol(), MODE_ASK),2),300,0,0,"",0201,0,Red);//
      Alert(Symbol(),"Open","BUY");
      SendMail("MailAlert",Symbol()+"OpenBUY");

      return;

 


}

}

 

   if(1 == 1){//押し目

if(flagm==2){
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,300,0,0,"",magicbango,0,Red);//
//      res=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(MarketInfo(Symbol(), MODE_BID),2),300,0,0,"",0201,0,Red);//
      Alert(Symbol(),"Open","SELL");
      SendMail("MailAlert",Symbol()+"OpenSELL");

      return;

 

 

}
}

 

//----
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
   int    res;
   int timer=0;
   double score=0;
   double scoreb=0;

//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;

if(OrderSymbol() == Symbol()){

   int flagm=0;
  
   int ii;  
   double niku = 0;
   double nikuniku = 1;
double hourmax=-99999;  
double hourmin=99999.0;  

double hourscore[30];
int hourcount[30];
int a;
int b;
for(ii=0;ii<26;ii++){
hourscore[ii]=0;
hourcount[ii]=0;
}


b=0;
for(a=1;a<100;a++){
if(TimeHour(Time[a]) == 0)b=a;
}

//24*30個の足の終値を各時間に分けて加算する。何回加算したかを記録する。
for(a=b;a<(24 * 40);a++){
if(hourcount[TimeHour(Time[a])] < 30){
hourscore[TimeHour(Time[a])] += Close[a];
//hourscore[TimeHour(Time[a])] += Close[a] - Open[a];
hourcount[TimeHour(Time[a])]++;
}
}

//各時間の終値平均を計算する
for(a=0;a<24;a++){
hourscore[a] = (hourscore[a] / hourcount[a]);
}

//終値平均の中で一番高い物と低い物はどれか
for(a=0;a<24;a++){
if(hourscore[a] > hourmax)hourmax = hourscore[a];
if(hourscore[a] < hourmin)hourmin = hourscore[a];
}

 


if(hourmax != hourmin){

if((hourscore[TimeHour(Time[1])] == hourmax)){flagm=1;}
if((hourscore[TimeHour(Time[1])] == hourmin)){flagm=2;}
}

 


  

if(flagm==1){
      if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,300,White);
//      if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(Symbol(), MODE_BID),2),300,White);
      if(OrderType()==OP_BUY)Alert(Symbol(),"Close","BUY");
      if(OrderType()==OP_BUY)SendMail("MailAlert",Symbol()+"CloseBUY");
}


if(flagm==2){

      if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,300,White);

//      if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(Symbol(), MODE_ASK),2),300,White);
      if(OrderType()==OP_SELL)Alert(Symbol(),"Close","SELL");
      if(OrderType()==OP_SELL)SendMail("MailAlert",Symbol()+"CloseSELL");
}


}
}
}
//----
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
 
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;

 


   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    {CheckForClose();
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
}
//----
  }
//+------------------------------------------------------------------+

| - | 21:31 | comments(0) | trackbacks(0) | - | ログピに投稿する |
心機一転でいきたい
 です。
EA作り中。
| - | 20:36 | comments(0) | trackbacks(0) | - | ログピに投稿する |
| 1/1PAGES |