[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 569

 
xant:

里戈尼奇,

准确地说(OrderProfit()+OrderCommission()+OrderSwap()

那么,我如何从已关闭的订单中获取信息?

我使用OrderSelect()和MODE_HISTORY从已关闭的订单中选择,但我如何选择必要的订单?

如果我可以从那些在我的状况之后关闭的历史中提取,那么我当然会提取并总结我所需要的东西。但不幸的是,我不明白如何做到这一点。


你需要什么?例如,记住你的EA在该工具上的第一个订单的开盘日期,并选择在它之后开出的所有订单,在按条件关闭后重置变量的值,并 记住新的(当前)值。
 
xant:

请告知。

在我的EA中,退出计算是基于累计利润。例如,如果在某个时间点,股权=平衡,那么当当前股权超过这个非常初始的股权时,EA将关闭所有交易。它将关闭所有的交易,无论有多少个交易。

在测试器中很简单,因为有一个货币对。

然而,现实中的交易是用几种货币进行的,每一种货币都必须单独考虑。例如:如果某个货币对没有开放交易,那么变量==0。我们也应该追踪这个符号的平仓交易,直到累计利润超过这个符号的未平仓订单的损失的指定值。

我在教程中找不到一个可以用来分开核算不同货币的累计利润的函数。请告知。谢谢你。


https://www.mql5.com/ru/forum/131859/page3#434223 在这里,还有https://www.mql5.com/ru/forum/131859/page3#434222
 
帮我写一个开仓 的条件。

我不能按照我的想法写一个附加条件来开仓。

如果我用TP或SL关闭任何头寸,它应该用相反的头寸重新打开。

例子:如果一个卖出头寸,比如说SL,被关闭了,它将和它一起重新建立一个卖出头寸,并买入

以下是专家顾问的2个条件:

买入的条件

if (BUY)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
if(NumberOfPositions(Symbol(),OP_BUY,Magic)<MaxOrders)OPENORDER("Buy");
}

卖出条件

if (SELL)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0;
if(NumberOfPositions(Symbol(),OP_SELL,Magic) <MaxOrders)OPENORDER ("Sell");
}

谁明白这一点,请帮助我写出附加条件
附加的文件:
sellbuy_4.mq4  3 kb
 
你的条件不符合((只要存款足够,它就会无限期地打开订单
 
rigonich:

要向左移动--F12,向右移动--我不知道。

Rigonich谢谢,这是个很好的建议。这正是我所需要的!
 
哦,太好了,谢谢大家
 
伙计,有了这个条件,真的有那么难吗(((像一个小顾问。
 

我没有对它做任何处理,它仍然不工作 ((((

只有当价格向一个方向发展时,它才会打开,如果价格掉头,它就不会打开(()。

附加的文件:
trudnyaga.mq4  5 kb
 
Frostr:
帮我写一个开仓的条件。

我不能按照我的想法写一个附加条件来开仓。

如果我用TP或SL关闭任何头寸,我希望它用相反的值开一个新头寸。

例如:如果一个卖出头寸被SL关闭,它将重新打开一个卖出头寸与它一起买入。

以下是EA的2个条件。

购买条件

如果(购买)
{
如果(takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); 否则TP=0。
如果(stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); 否则SL=0;
如果(NumberOfPositions(Symbol(),OP_BUY,Magic)<MaxOrders)
}

出售条件

如果 (SELL)
{
如果(takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); 否则TP=0。
如果(stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); 否则 SL=0;
如果(NumberOfPositions(Symbol(),OP_SELL,Magic)<MaxOrders)
}

谁明白这一点,请帮助我写出附加条件

很抱歉,在所附文件中,你有一个编译的文件,而不是源文件。 你不能查看它。 请发送以.mq4为扩展名的文件
 
我想我已经把它修好了。
附加的文件: