如何编码? - 页 163

 

iCCI问题

我是MQL4的新手,正试图获得以前的CCI值。我已经尝试使用iCCI函数,其移位值为1,但它并没有给我以前的值。如果不把当前值保存到一个变量中,我如何做到这一点呢?我试图确定CCI的发展方向。

谢谢你的帮助。

 

这段代码是基于tick的,所以如果当时没有tick,那么代码就会错过时间检查。我认为,如果没有某种持续运行的循环,你不可能让它精确到秒。

 

关于EA编辑的帮助

我想弄清楚这个问题......请你帮忙。

MB交易 - 股票期权期货外汇在线折扣交易

我改变了这一点。

OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slipage,tp, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor)。

return(0);

到。

int ticket = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slipage,0,0, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor);

Sleep(1500);

OrderModify(ticket,OrderOpenPrice() ,sl,tp,0,ArrowsColor)。

=================================== ======

我得到了这些错误。

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1:OrderModify函数的无效票据

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend error 131

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify error 4051

=====================

 
coach3131:
我正在试图弄清楚这个问题......请你帮助一下?

MB交易 - 股票期权期货外汇在线折扣交易

我改变了这一点。

OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slipage,tp, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor)。

return(0);

到。

int ticket = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slipage,0,0, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor);

Sleep(1500);

OrderModify(ticket,OrderOpenPrice() ,sl,tp,0,ArrowsColor)。

=================================== ======

我得到了这些错误。

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1:OrderModify函数的无效票据

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend error 131

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify error 4051

=====================

你的问题是在你的订单发送状态中的手数(体积),因为错误而返回-1。你必须纠正批号变量mylotsi,使其包含一个可接受的值。其次,你应该在调用ordermodify例程之前检查ticket变量的返回值,看它是否包含一个错误标志。

凯特

 

EA最大仓位

有没有人可以为这个EA增加最大仓位

还是让它只运行一个头寸?

谢谢

附加的文件:
 

你最好使用

MathAbs(NormalizeDouble(Bid,4)-NormalizeDouble(pivot,4))<Delta*Point,

其中Delta=2...5

 
jdun:
谁能告诉我停损和止损的代码。我需要把它添加到这个EA中。

这个隐藏的SL和TP

int TakeProfit=20; // 20 pips take profit

int StopLoss =40; // 40 pips stoploss

int Slippage = 3;

int MagicNumber=1;

int i;

int start(){

//----- exit @ TP

if((ScanTrades()>=1)&& (ProfitInPips()>=TakeProfit)){

//----- This part will close all open orders and delete pending trades

for(i = OrdersTotal()-1; i >=0; i--)

{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )

{

if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);

if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);

if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());

if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());

if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());

if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());

}

}

}

//------exit @ SL

if((ScanTrades()>=1)&& (ProfitInPips()<= -StopLoss)){

//----- This part will close all open orders and delete pending trades

for(i = OrdersTotal()-1; i >=0; i--)

{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )

{

if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);

if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);

if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());

if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());

if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());

if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());

}

}

}

return (0);

}

//----------- Call functions

int ScanTrades()

{

int Tot = OrdersTotal();

int Numb = 0;

for(int cnt=0; cnt<=Tot-1; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) Numb++;

}

return(Numb);

}

double ProfitInPips()

{

RefreshRates();

double Prof=0;

int i;

int totalOrders=OrdersTotal();

for(i=0;i<totalOrders;i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()==MagicNumber)

{

if(OrderType()==0)

{

Prof+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);

}

if(OrderType()==1)

{

Prof+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/MarketInfo(OrderSymbol(),MODE_POINT);

}

}

}

return(Prof);

}

 

假设我有一些买入和卖出的 订单

我想做的是:

- 在比未平仓交易的平衡价格高5个点时退出所有的 "篮子 "交易

我在第一个for循环中试图做的是找到未平仓交易+交换的价值,并将其转换为点数,而这正是我陷入困境的部分。

我已经尝试了一些想法,但我已经走到了死胡同,我知道问题出在第一个for语句中,但我无法解决它,希望得到任何帮助。

SymbolPL = 0;

OrdLots = 0;

Equity = 0;

MinPro = 5;

for(i = 0; i < OrdersTotal(); i++)

{OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

{if(OrderType() == OP_BUY) OrdLots += OrderLots();

if(OrderType() == OP_SELL) OrdLots -= OrderLots();

Equity += OrderProfit() + OrderSwap();

}

}

MinPro= MathRound (MathAbs(Equity /OrdLots)+MinPro);

//--- Count the open trades

int i;

int count=0;

for(i=0;i<OrdersTotal();i++)

{ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()==MagicNumber && OrderType()<2)

{ count++;

}

}

//--- find the profit in pips of the open trades

RefreshRates();

double profits=0,openPrice=0,points=0;

string sym="";

int i;

int totalOrders=OrdersTotal();

for(i=0;i<totalOrders;i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()==MagicNumber)

{

sym=OrderSymbol();

openPrice=OrderOpenPrice();

if(OrderType()==0)

{

profits+=(MarketInfo(sym,MODE_BID)-openPrice)/MarketInfo(sym,MODE_POINT);

}

if(OrderType()==1)

{

profits+=(OrderOpenPrice()-MarketInfo(sym,MODE_ASK))/MarketInfo(sym,MODE_POINT);

}

}

}

//--- Close when the open trades are 5 pips more than the breakeven price

if (count>1 && profits>MinPro )

{

for(i = OrdersTotal()-1; i >=0; i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )

{

OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Plum);

}

}

}

 

我认为你可以使用一个 "每手股票 "的常数,其计算方法是:。

double equity_per_lotpoint = MarketInfo( Symbol(), MODE_TICKVALUE ) / MarketInfo( Symbol(), MODE_TICKSIZE );

[/PHP]

and then you'd have what you need after the first loop, with:

[PHP]if ( Equity > 5 * equity_per_lotpoint * MathAbs( OrdLots ) ) { ...

 

谢谢你,但我将会错过掉期,我想把掉期的利润/亏损包括在订单的关闭决定中。