任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 513

 

我做得对吗。

y = OrderOpenPrice()-Ask;

我把当前价格 减去最后一个未平仓订单的价格?

int i_buy=0; int i_sell=0;

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

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol()){

switch(OrderType()){// Есть ли открыте ордера

case OP_BUY:

i_buy++;

break;

case OP_SELL:

i_sell++;

break;

}

y = OrderOpenPrice()-Ask;

}

}


if((i_buy==0 && i_sell==0) || y > Step) //--- нет открытых ордеров, открываем или расстояние от последнего ордера до текущей цены. Больше step

OrderSend(Symbol(), OP_BUY,StartLot,Ask,Slippage,0,Ask+TakeProfit*Point(),WindowExpertName()+" "+(string)0,0,0,clrBlue);


 
woin2110:

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z; //declare "z" variable.
double y; //declare "y" variable.


if(OrderSelect(10,SELECT_BY_POS)==true) //如果选择的订单(按票)是存在的

{

OrderLots()=z //将此订单的手数分配给 "z "变量。

OrderOpenPrice()=y //将开盘价分配给 "y "变量。

}

试试这个

请不要混淆视听,讲废话。你说按票选,但你写的是按索引选择。而且,如果你按票据选择,你不需要指定池子 --函数忽略它,在两个列表中的任何一个中选择它--在它所在的那个中。为了检查订单是从哪个列表中选择的,我们应该在成功选择后检查订单的关闭时间,如果它高于零,那么订单已经被关闭,否则,它将从未结头寸列表中选择。

你不是将手数的值分配给一个变量,反之亦然--你是想将变量的值分配给返回所选订单手数的函数--这根本是无稽之谈。

与你想用返回开盘价的函数做的事情完全一样。

 

artmedia70:

告诉我我做错了什么。一切似乎都是正确的。

如果((i_buy==0 && i_sell==0) || y > Step)

或者(i_buy==0 && i_sell==0)或者 y > Step。如果其中一个是真的。然后我们跳过它,打开一个订单。

 
evillive:

如果Alpari--你永远不可能。如果是另一家经纪公司,这取决于账户。如果我们与Alpari建立了良好的工作关系,我们就会回去撤资。在开始做事之前,应该研究一下贸易条款,都写在那里。

8-800-200-01-31服务台解释说,在上周末,他们已经修复了一个错误,允许在设置SL和TP的同时在ECN账户中开立订单。我在周四关闭了最后一个位置。

你是对的,《交易 条例》没有说到这一点,现在只有OrderModify() 可以保存。

谢谢你的答复。

 
Zolotai:

artmedia70:

告诉我我做错了什么。一切似乎都是正确的。

如果((i_buy==0 && i_sell==0) || y > Step)

或者(i_buy==0 && i_sell==0)或者 y > Step。如果其中一个是真的。然后我们跳过它,打开一个订单。

我实际上不明白这个问题...

我不知道我们缺少什么,但可以开一个订单...也就是说,如果这个条件得到满足,并且应该开出一个订单,那么

我可以告诉你这里说的是什么。

如果i_buy和i_sell都等于0,就可以开出一个订单。或者,如果其中任何一个不等于零,甚至可能两个都不等于,但如果y大于Step,那么也要开一个订单。

 
artmedia70:

我实际上不明白这个问题...

我不知道我们缺少什么,但可以开一个订单...即,如果这个条件得到尊重,应该开出一个订单。

我可以告诉你这里说的是什么。

"如果i_buy和i_sell都等于0,就开一个订单。或者,如果其中任何一个不等于零,甚至可能两个都不等于,但如果y大于Step,那么也应该开一个订单。



我在循环中的理解是正确的。我们从第一个开放的订单进行到最后一个订单。因此,我们应该采取最后一个订单的价格。

还有更多。我在OnTick中加入了Alert("d")。我在测试器中运行了代码,但我没有听到任何提示音或窗口。

 
Zolotai:

在叉子循环中,我的理解是正确的。我们正在从第一个公开的订单到最后一个订单。相应地,我采取了最后一个订单的价格。

我也有这个。我在OnTick中加入了Alert("d")。我在测试器中运行了代码,但我没有听到任何提示音或窗口。

测试仪中的警报会显示在测试仪日志中。但关于循环、跳过、选择、暴力的问题并不清楚。你能得到你想要的最终结果的要点吗?
 

下午好!

当试图编辑EA时,如何与 "未找到MetaEditor "作斗争?MetaTrader构建600。

我似乎不记得在旧版中有这样的问题......。

是否可以这样解释:我工作的电脑功率相当低,50-75%的时间都在加载。我有7个MT4实例在上面运行,但在正常情况下(即没有外部负载,如通过TeamViewer访问并试图启动MetaEditor),其性能是足够的,后台运行的任务管理器显示15-20分钟的平均CPU使用率<=45-50%。

这个问题不会在100%的情况下发生,MetaEditor在表现出不寻常的耐心和毅力后,从第5-10-25次开始每次都会运行。但尝试启动MetaEditor半小时,真的很烦人。

 
artmedia70:
测试仪中的警报被打印在测试仪的日志中。而关于循环、跳过、选择和粗暴对待的问题也不清楚。你能得到你想要的结果的大意吗?


我只想写最简单的机器人。它的作用是由马丁,由它自己。

这就是错误所在。

y = OrderOpenPrice()-Ask;

我没有像我想的那样得到整数的数字。但比如说0.0044。我怎样才能得到44,一个整数?

 
Zolotai:


我只想写最简单的机器人。它的作用是由马丁,由它自己。

这就是错误所在。

y = OrderOpenPrice()-Ask;

我没有像我想的那样得到整数的数字。但比如说0.0044。我怎样才能得到44,一个整数?



int y = int((OrderOpenPrice()-Ask)/Point);