编码帮助 - 页 471

 
systemfault:
大家好。

我需要帮助...我有一个简单的EA,但为4位数编程。(例如: EUR/USD: 1,1234)

我怎样才能使用我的EA 5位数?(例如: EUR/USD: 1,12345)

谢谢:)

simpleea.mq4

你可以添加这个。

*MathPow(10,_Digits%2)

在你使用_Point的地方,然后它将在4位数和5位数的经纪商上同样以点数工作。

____________________

 

嗨,mladen。

谢谢你的帖子。

我是这样做的。

int CheckForOpen()

{

double L = Low;

double H = High;

double Lots = MathRound(AccountBalance()/100)/1000;

如果((H-Bid>Limit*Point))

{OrderSend(Symbol(),OP_BUY,Lots,Ask,1,0,0,",MAGICMA,0,CLR_NONE);

for(int i=1; i<5; i++){OrderSend(Symbol(),OP_BUYLIMIT,MathPow(2,i)*Lots,Ask-i*Grid*Point*MathPow(10,_Digits%2),1,0,0,",MAGICMA,0,CLR_NONE); }

}

如果((Bid-L>Limit*Point))

{OrderSend(Symbol(),OP_SELL,Lots,Bid,1,0,0,",MAGICMA,0,CLR_NONE);

for(int j=1; j<5; j++){OrderSend(Symbol(),OP_SELLLIMIT,MathPow(2,j)*Lots,Bid+j*Grid*Point*MathPow(10,_Digits%2),1,0,0,",MAGICMA,0,CLR_NONE); }

}

}

其真实性?

 
systemfault:
你好,mladen。

谢谢你的帖子。

我是这样做的。

int CheckForOpen()

{

double L = Low;

double H = High;

double Lots = MathRound(AccountBalance()/100)/1000;

如果((H-Bid>Limit*Point))

{OrderSend(Symbol(),OP_BUY,Lots,Ask,1,0,0,",MAGICMA,0,CLR_NONE);

for(int i=1; i<5; i++){OrderSend(Symbol(),OP_BUYLIMIT,MathPow(2,i)*Lots,Ask-i*Grid*Point*MathPow(10,_Digits%2),1,0,0,",MAGICMA,0,CLR_NONE); }

}

如果((Bid-L>Limit*Point))

{OrderSend(Symbol(),OP_SELL,Lots,Bid,1,0,0,",MAGICMA,0,CLR_NONE);

for(int j=1; j<5; j++){OrderSend(Symbol(),OP_SELLLIMIT,MathPow(2,j)*Lots,Bid+j*Grid*Point*MathPow(10,_Digits%2),1,0,0,",MAGICMA,0,CLR_NONE); }

}

}

它是真的吗?

是的

但是也要把网格参数 从1500改为150,否则会试图把价格设置在离买入价或卖出价1500点的地方。

 

我正在使用这种配置。

Extern int PeriodX = 60;

extern int Limit = 50;

extern int Grid = 14;

extern int Amount = 1;

extern int LockDown = 20;

这是怎样的配置?

 
systemfault:
我正在使用这个配置。

外部int PeriodX = 60;

Extern int Limit = 50;

Extern int Grid = 14;

extern int Amount = 1;

extern int LockDown = 20;

那是怎样的配置?

它将打开买入和卖出限制,离卖出价和买入价有14个点。

试试吧

 
mladen:
它将打开买入和卖出限制,离卖出价和买入价有14个点的距离 试试吧

我试了一下......好像是这样......。

附加的文件:
adsz.png  35 kb
 
systemfault:
我尝试......似乎是这样......

在我看来,它正在做它想做的事情。

 
mladen:
在我看来,它正在做它想做的事情

是的,Miladen...

但我不想在没有利润的情况下关闭订单,止损14个点。

 
systemfault:
是的...但我不想在没有利润的情况下关闭订单,止损14个点。

然后再加上获利 和止损

 
mladen:
然后再加上止盈和止损

我添加了这段代码。

int CheckForClose()

{

如果(getProfit()>=Amount){CloseAll();}。

如果(LockDown>0)

{

for(int TradeNumber = OrdersTotal(); TradeNumber >= 0; TradeNumber--)

{

如果(OrderSelect(TradeNumber, SELECT_BY_POS, MODE_TRADES)&&(LockDown>0))

{ int Pos=OrderType();

如果((Pos==OP_BUY)&&(Bid-OrderOpenPrice()>Point*MathPow(10,_Digits%2)*LockDown)&&(OrderStopLoss() ==0))

{OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+Point,OrderTakeProfit(),0,CLR_NONE); }

如果((Pos==OP_SELL)&&(OrderOpenPrice()-Ask>Point*MathPow(10,_Digits%2)*LockDown)&&(OrderStopLoss() ==0))

{OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Point,OrderTakeProfit(),0,CLR_NONE); }

}

}

}

}

例如;欧元/美元订单价格1.12345 sl/tp 1.12346

我想要sl/tp 1.12355

我不明白哪里出了问题?