とりあえず、先に買いだけ作成します。
初期宣言の部分に以下を追加します。
int entrybar;
double entrylow;
そして、start部分に以下を追加します。
//ポジション計算
int buypos=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic01)
{
if(OrderType()==OP_BUY) buypos++;
}
}
//指標計算
double macd1=iMACD(NULL,0,FastEMA,SlowEMA,MACDSMA,PRICE_CLOSE,MODE_MAIN,1);
double macd2=iMACD(NULL,0,FastEMA,SlowEMA,MACDSMA,PRICE_CLOSE,MODE_MAIN,2);
if(entrybar==Bars) entrylow=Low[0];
//手仕舞い判断
if(entrybar!=Bars && buypos!=0
&& (entrylow>Close[1] || (Close[1]<Close[2] && macd1<macd2)))
{
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=magic01 || OrderSymbol()!=Symbol()) continue;
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
}
}
}
//仕掛判断
if(entrybar!=Bars && buypos==0 && Close[1]>Close[2] && macd1>macd2)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",magic01,0,Blue);
entrybar=Bars;
}
次回から解説していきます。