[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 215

 

还有,如何限制EA中未结订单的数量,因为它像滚雪球一样打开它们?

 
stalkertula:

还有,如何限制EA中未结订单的数量,因为它像滚雪球一样打开它们?

1.检查了设置订单的必要性,如果是的话。

2.检查现有订单的数量,如果是,那么...

3.检查了自上一个订单设置以来所经过的时间(或任何其他延迟标准),如果是,那么...

4.下了一个订单。

一般来说,它是这样的...

尽管......这些项目中的每一项都包括纠正订单设置参数所需的各种其他检查(以避免从DC返回错误)。

提示:
当你决定下单或开仓时,你自己的标准是什么?
现在问自己一个问题:"为什么我不像我一样让我的EA评估所有的 决策标准?
一旦你在你的EA中考虑到所有的 标准,你将大大减少逻辑错误......

把它作为一个规则,首先在一张纸上描述这个或那个程序块的所有逻辑(这没有什么错,恰恰相反--它有帮助),
,然后把它翻译成代码。

 
artmedia70:

1.检查了是否需要安装授权书,如果是的话

2.检查已经存在的订单数量,如果是,则...

3.检查了自上一个订单设置以来所经过的时间(或任何其他延迟标准),如果是的话。

4.下了订单。

一般来说,情况是这样的......
虽然......每一个点也包括各种必要的检查,以纠正订单设置参数(以避免从DC返回错误)。

谢谢你的回答,但算法是用俄语写的,但在mql中,我不强,至少要提示一下固定数量(设置中的处方数量)开单卖出/买入的函数,然后是禁止放置卖出/买入的信号。

//----------------------------------------------------------------------- проверка установленных стоп ордеров

double StopOrderUp,StopOrderDn,price,MinBuyOrder=1000000000,MaxSellOrder,OldBuyOrder,OldSellOrder,OldBuyLot,OldSellLot;

int TicketUp,TicketDn;

TimeOllOpenBuy=0;TimeOllOpenSell=0;

double OOL_BUYSTOP,OOL_SELSTOP;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{ price = OrderOpenPrice();

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

{

if (OrderType()==OP_BUYSTOP ) {StopOrderUp = price; TicketUp=OrderTicket(); OOL_BUYSTOP=OrderLots();}

if (OrderType()==OP_SELLSTOP) {StopOrderDn = price; TicketDn=OrderTicket(); OOL_SELSTOP=OrderLots();}

if (OrderType()==OP_BUY )

{ TimeOllOpenBuy = TimeOllOpenBuy + TimeCurrent()-OrderOpenTime();

if (MinBuyOrder > price) MinBuyOrder = price;

OldBuyOrder=price;

OldBuyLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Bay "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Bid);

ObjectSet(NameLine, OBJPROP_COLOR,LightSkyBlue);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Bid,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

if (OrderType()==OP_SELL)

{ TimeOllOpenSell = TimeOllOpenSell + TimeCurrent()-OrderOpenTime();

if (MaxSellOrder < price) MaxSellOrder = price;

OldSellOrder=price;

OldSellLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Sell "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Ask);

ObjectSet(NameLine, OBJPROP_COLOR,Pink);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Ask,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

}

}

}

if (MinBuyOrder==1000000000 && MaxSellOrder==0 && OOL_BUYSTOP!=OOL_SELSTOP)//если серия закрылась

{

DELETEORDERS();

}
 
Roman.:

我在新条形图的开盘价上测试EA(为此我需要在EA代码中指定新条形图的形成控制)。
我试图以嘀嗒的方式来修改停顿。罗曼,除了缺少修改箭头外,这种修改的缺点是什么?
 

粘贴指标时,终端挂起,并在日志中写下同样的话:ObjectCreate函数 的未知子窗口号-1

我在所有的ObjectCreate(x=WindowFind(short_name); ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0)) 中都有这个指标名称的窗口索引。

以前一直是这样的......我不明白为什么会这样。

 
eddy:

当我插入一个指标时,终端挂起,并在日志中写下同样的内容:15:18:16 RSI EURUSD,M15: ObjectCreate函数的未知子窗口号-1

我在所有ObjectCreate(WindowFind(indikator_name))中都有一个带有该指标名称的窗口索引,例如,ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0)。

以前一直都是这样的......我不明白为什么会变成这样

这可能是因为ObjectCreate 是从init()调用的。在这种情况下,即使指标名称正确,窗口搜索也可能返回-1。
 
这就是他在做的事......谢谢你
 
我无法理解。
2011.03.07 15:49:40     2011.01.19 10:50  RSI-тралинг EURUSD,H1: OrderSend error 131

这是在Alpari上......有浮动点差......但固定点差也能正常工作......

我读到了这个错误,我把所有的量和1手和0.1手和0.01手.....pis同样的错误((((((。

 
Vovo4ka:
我无法理解,它说。

这是在Alpari上......有浮动点差......但固定点差也能正常工作......

我读到了这个错误,我把所有的量和1手和0.1手和0.01手.....pis同样的错误((((((。

在一个错误的代码 上,你可以了解挖掘的方向。但是,如果没有代码,没有人会告诉你这个错误是怎么来的。

 
Vovo4ka:
我无法理解。

这是在Alpari上......有浮动点差......但固定点差也能正常工作......

我读到了这个错误,我把所有的量和1手和0.1手和0.01手.....pis同样的错误((((((。


编写代码。