如何编码? - 页 266

 
ixbone:
大家好。

我想用魔法收集一个货币对的所有订单(买入和卖出),如果它们达到收支平衡,所有的订单应该被关闭。

非常欢迎任何指导,谢谢

extern bool PairBreakeven=true;//每对订单的盈亏平衡都是由同一对/魔法的所有订单决定的。

extern double Pairbreakevengain=6;//实现收支平衡所需的点数收益

extern double Pairbreakeven=3;//收支平衡,订单关闭,3点利润/损失。

双倍Pairmovebreakeven;

如果(PairBreakeven=true){

if(Pairbreakevengain>0)Pairmovebreakeven(Pairbreakevengain,Pairbreakeven);

CloseBuyOrders(Magic);

CloseSellOrders(Magic)。

}

void Pairmovebreakeven(double Pairbreakevengain,double Pairbreakeven){

RefreshRates();

如果(OrdersTotal()>0){

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

OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。

如果(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic ){

返回。

}

}

}

}

int CloseBuyOrders(int Magic){ //op_sell类似

int total=OrdersTotal();

for(int cnt=total-1;cnt>=0;cnt--){

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。

如果(OrderMagicNumber()==Magic && OrderSymbol()==Symbol()){

如果(OrderType()==OP_BUY){

OrderClose(OrderTicket(),OrderLots(), Bid,3*mt)。

}

}

}

return(0);

}

这段代码的主要问题是在BE函数中,它从来没有真正移动停止或采取任何行动。如果你没有用文字说明你的意图,我真的无法从代码中发现你想做什么。

你想让代码检测到你账户中所有的订单,这些订单的止损价等于订单的开仓价,并关闭所有的订单?那么实际的收支平衡动作是由其他EA完成的?我想帮助你,但不知道你想做什么。

 
christinaLi:
这段代码的主要问题是在BE函数中,它从未真正移动过停止或采取任何行动。如果你不说出你的意图,我真的无法从代码中检测出你想做什么。 你想让代码检测出你账户中所有止损=订单开盘价的订单,并关闭所有的订单?那么实际的收支平衡动作是由其他EA完成的?我想帮助你,但我不知道你想做什么。

christinaLi,

对不起,我的误导。

-我想通过魔法收集一个货币对的所有订单,并总结所有订单的利润,不管是买入、卖出、tp、sl,例如:我们有8个买入和卖出订单,总结的利润是6点//extern double Pairbreakevengain=6;//为实现收支平衡所需的点数收益

-如果一个货币对的所有订单(买入和卖出)的利润是+6点,所有的订单(买入/卖出)sl应该设置止损为当前价格-3 //extern double Pairbreakeven=3;//收支平衡, 订单关闭, 3点利润/损失

-如果Pairbreakevengain从一对订单的所有利润中扣除,例如:8个混合买入/卖出订单的利润之和为6,回到3,所有订单被关闭。

我有一个正确的单子盈亏平衡的工作模块,我试图自己修改它,我缺乏mt4的代码技能,很多年前,我学会了汇编...

我应该发布单笔盈亏平衡订单的功能吗?

谢谢你的帮助

 

嗨,九哥。

我知道你现在想做什么。这是可以做到的。

事情有点复杂,因为你可能同时有买入和卖出。因为当你谈到 "当前价格 "时,对于买入来说是指买入价,对于卖出来说是指卖出价,因为只有这些是现实的价格,才能关闭订单。因此,你可以看到在任何时候,当你调整订单的止损 时,买入和卖出都有一个差价。如果你的点差不是恒定的,有很多机会你的订单不会在同一时间被关闭,有时有可能你一半的订单不会被关闭。

我认为好的方法是不实际移动止损,相反,一旦整体利润达到6点,EA将激活记忆,然后简单地在市场上关闭所有订单,而整体利润下降到3点。在这种情况下,EA强制关闭订单,它们不会被MT4停止。

 
christinaLi:
嗨,IX。

我知道你现在想做什么。这是可以做到的。

事情有点复杂,因为你可能同时有买入和卖出。因为当你谈到 "当前价格 "时,对于买入来说,它指的是买入价,对于卖出来说,它指的是卖出价,因为只有这些是现实的价格,才能关闭订单。因此,你可以看到在任何时候,当你调整订单的止损时,买入和卖出都有一个差价。如果你的点差不是恒定的,有很多机会你的订单不会在同一时间被关闭,有时可能有一半的订单不会被关闭。

我认为好的方法是不实际移动止损,相反,一旦整体利润达到6点,EA将激活记忆,然后简单地在市场上关闭所有订单,而整体利润下降到3点。在这种情况下,EA强制关闭订单,它们不会被MT4停止。

嗨,ChristinaLi。

我100%同意,这太复杂了,我明白你的意思,也许不移动 止损的一对(篮子)计算是解决方案,比如。

- 选择每一对的所有订单,并使用魔法

- 总结所有订单的利润

- 如果利润总和=6点

- 关闭所有订单,如果没有发生滑点,盈亏平衡将是6点 "利润",如果滑点3点,盈亏平衡的结果是3点 "利润"

1) 优点是:完全没有问题

2) 缺点:所有订单都没有(3点)空间,如果我有7个买入和6个卖出的对冲订单,如果一个买入订单增加6点,所有订单都关闭,是否有一个选项可以在达到6点(盈亏平衡=true)时,通过减少3点(6-3=3点利润)将所有订单标记为关闭(breakevencloseorders=true)?

在#1中,7buy和6sell的对冲订单不能上涨超过6点,它们总是被关闭。

在#2中,6点只是一个激活标记,如果下降到3点,关闭所有订单,如果上涨超过6点,例如15点,有+3点到15点的空间,这导致12点的利润

点差在这个时候没有计算!因为7buys和6sells总结了2个点的点差为26个点,一个买入订单必须有 "0 "的平衡,一个买入订单必须有32个点的#1和29个点的#2 - 我说的对吗?

谢谢你的建议

 
ixbone:
你好,ChristinaLi。

我100%同意,它太复杂了,我明白你的意思,也许不移动止损的一对(篮子)计算是解决方案,比如。

- 选择每一对的所有订单,并施以魔法

- 总结所有订单的利润

- 如果利润总和=6点

- 关闭所有订单,如果没有发生滑点,盈亏平衡将是6点 "利润",如果滑点3点,盈亏平衡的结果是3点 "利润"

1) 优点是:完全没有问题

2) 缺点:所有订单都没有(3点)空间,如果我有7个买入和6个卖出的对冲订单,如果一个买入订单增加6点,所有订单都关闭,是否有一个选项可以在达到6点(盈亏平衡=true)时,通过减少3点(6-3=3点利润)将所有订单标记为关闭(breakevencloseorders=true)?

在#1中,7buy和6sell的对冲订单不能上涨超过6点,它们总是被关闭。

在#2中,6点只是一个激活标记,如果下降到3点,关闭所有订单,如果上涨超过6点,例如15点,有+3点到15点的空间,这导致12点的利润

点差在这个时候没有计算!因为7buys和6sells总结了2个点的点差为26个点,一个买入订单必须有 "0 "的平衡,一个买入订单必须有32个点的#1和29个点的#2 - 我说的对吗?

谢谢你的建议

IX

我想你误解了我的意思,你想要的东西是可以准确实现的,只是没有实际修改止损。我今天会找时间编写代码并为你演示。克里斯蒂娜

 
ixbone:
嗨,ChristinaLi。

我100%同意,它太复杂了,我明白你的意思,也许不移动止损的一对(篮子)计算是解决方案,比如。

- 选择每一对的所有订单,并施以魔法

- 总结所有订单的利润

- 如果利润总和=6点

- 关闭所有订单,如果没有发生滑点,盈亏平衡将是6点 "利润",如果滑点3点,盈亏平衡的结果是3点 "利润"

1) 优点是:完全没有问题

2) 缺点:所有订单都没有(3点)空间,如果我有7个买入和6个卖出的对冲订单,如果一个买入订单增加6点,所有订单都关闭,是否有一个选项可以在达到6点(盈亏平衡=true)时,通过减少3点(6-3=3点利润)将所有订单标记为关闭(breakevencloseorders=true)?

在#1中,7buy和6sell的对冲订单不能上涨超过6点,它们总是被关闭。

在#2中,6点只是一个激活标记,如果下降到3点,关闭所有订单,如果上涨超过6点,例如15点,有+3点到15点的空间,这导致12点的利润

点差在这个时候没有计算!因为7buys和6sells总结了2个点的点差为26个点,一个买入订单必须有 "0 "的平衡,一个买入订单必须有32个点的#1和29个点的#2 - 我说的对吗?

谢谢你的建议

IX

事实上,现在我又想了一下,你要求的事情是做不到的。

这很有意思,我编了很多类似的函数,你可以计算美元金额或点数的BE实习生,但他们都是同一个订单类型。它不能在买入和卖出时都进行。例如,如果你有X个买入(它们可以是不同的手数),在某些时候,所有的美元利润加在一起是0,所以现在你是在BE。如果是买入,如果你想获得3个点的利润,那么只需在当前买入价上加3个点,就有了目标价格。但如果你同时有买入和卖出,你会怎么做? 加还是减?

在以下情况下,你如何定义你有3个点的利润?1手在1.4100买入,2手在1.4150卖出?

唯一可以做的是使用美元的利润,而不是点的利润,我想。

 
christinaLi:
我想你误解了我的意思,你想要的东西是可以准确实现的,只是没有实际修改止损。我今天会找时间编写代码,为你演示。湘云

谢谢你,克里斯蒂娜。

我非常感谢你的知识!

冯小刚

 
christinaLi:
实际上,现在我又多想了一下,你所问的事情是做不到的。

这相当有趣,我已经编码了很多类似的函数,你可以计算美元金额或点数的BE实习生,但他们都是相同的订单类型。买入和卖出不能同时进行。例如,如果你有X个买入(它们可以是不同的手数),在某些时候,所有的美元利润加在一起是0,所以现在你是在BE。如果是买入,如果你想获得3个点的利润,那么只需在当前买入价上加3个点,就有了目标价格。但如果你同时有买入和卖出,你会怎么做? 加还是减?

在以下情况下,你如何定义你有3个点的利润?1手在1.4100买入,2手在1.4150卖出?

唯一可以做的是使用美元的利润,而不是点的利润,我想。

克里斯蒂娜。

加法或减法并不重要,因为7个买单和6个卖单 的手数之和足以达到正常的利润,一个货币对的所有订单的BE应该作为一种安全功能。

有了这个对冲功能,你可以节省大量的保证金,在50点之间,你的账户不会被抹去,如果没有达到正常的利润,BE应该关闭所有的订单,并开始一个新的信号和第一个订单。

对于买入/卖出信号,我使用价格行动。

附加的文件:
unbenannt.png  7 kb
 
ixbone:
克里斯蒂娜。

增加或减少并不重要,因为7个买单与6个卖单的手数之和足以达到正常利润,BE对一个货币对的所有订单应作为一个安全功能。

有了这个对冲功能,你可以节省大量的保证金,在50点之间,你的账户不会被抹去,如果没有达到正常的利润,BE应该关闭所有的订单,并开始一个新的信号和第一个订单。

对于买入/卖出信号,我使用价格行动。

其他信息。

- 我同时交易8-10个主要市场,以实现多样化(部分相关),因此,用0.01交易10个货币对比用0.1交易一个货币对更好。

- 我将订单之间的步数增加一倍,即25、50、100、200、400。

例如。

第一笔订单1.5000

第二笔订单1.5025

第3次.........1.050

第4次.........1.100

以此类推

 

我想对你所说的这个功能 提供帮助,但似乎我不能简单地弄清你的逻辑。这真的与策略的其他逻辑没有关系。

我只是想知道这一点。

如果你有1手在1.4110买入,2手在1.4200卖出。你认为你在什么价格上有6个点的收益?