ご指摘ありがとうございます。
https://mt4kyoto.blogspot.com/2015/12/eamt4.html?showComment=1584272741163
久しぶりにソースを見てみると無駄が多かったのでリビルドしました。
マジックナンバーやコメントの設定も追加しました。
半裁量でポジション管理すれば、面白いEAと思います!
// 金閣寺 Rock on Z So Cock Z 2015/12/25
// Update 2020.03.15
#property strict
#property copyright "TACA"
#property link "mt4kyoto.blogspot.jp"
input int MAGIC=1397;
extern int Profit=200;
input string COMMENT="Kinkaku-G";
extern double Lots=0.03;
int d;
double ProfitP;
datetime TimeOld;
string S=_Symbol;
int OnInit()
{
ProfitP=Profit*Point;
return INIT_SUCCEEDED;
}
void OnTick()
{
if(Time[0]==TimeOld)return;
TimeOld=Time[0];
double PosAll=0,PosAve=0,PrSub;
int PosNum=0,Mode=0,Judge=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(!OrderSelect(i,SELECT_BY_POS))continue;
if(OrderMagicNumber()!=MAGIC)continue;
PosAll+=OrderOpenPrice();
PosNum++;
}
if(PosNum)PosAve=PosAll/PosNum;
Mode=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(!OrderSelect(i,SELECT_BY_POS))continue;
if(OrderMagicNumber()!=MAGIC)continue;
if(OrderType())
{
Mode=-1;
PrSub=PosAve-ProfitP;
PrSub=NormalizeDouble(PrSub,_Digits);
if(OrderTakeProfit()>PrSub)d=OrderModify(OrderTicket(),OrderOpenPrice(),0,PrSub,0);
}
else
{
Mode=1;
PrSub=PosAve+ProfitP;
PrSub=NormalizeDouble(PrSub,_Digits);
if(OrderTakeProfit()<PrSub)d=OrderModify(OrderTicket(),OrderOpenPrice(),0,PrSub,0);
}
}
ZeroMemory(Judge);
if (iMA(S,15,5,0,0,PRICE_CLOSE,1)>iMA(S,15,5,0,0,PRICE_OPEN,1))Judge++;
if (iMA(S,60,5,0,0,PRICE_CLOSE,1)>iMA(S,60,5,0,0,PRICE_OPEN,1))Judge++;
if (iMA(S,60,20,0,0,PRICE_CLOSE,1)>iMA(S,60,20,0,0,PRICE_OPEN,1))Judge++;
if(Mode==1&&Judge==3&&PosAve>Close[0])EntryL();
if(Mode==-1&&!Judge&&PosAve<Close[0])EntryS();
if(!Mode&&Judge==3)EntryL();
if(!Mode&&!Judge)EntryS();
}
void EntryL()
{
d=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,Ask+ProfitP,COMMENT,MAGIC,0,clrRed);
}
void EntryS()
{
d=OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,Bid-ProfitP,COMMENT,MAGIC,0,clrBlue);
}
//+------------------------------------------------------------------+
0 件のコメント:
コメントを投稿