for (int j = 0; j < OrdersTotal(); j ++)
{
if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) // If there is the next one
{ // Analyzing orders: if (OrderSymbol()==Symbol())continue; // Another security //--------------Exit criteria (Exit Buy) if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY; // Trigger for CloseBuy (more can be added)if (CloseSell1_1 <= CloseSell1_2) Order = SIGNAL_CLOSESELL; // Trigger for Closesell (more can be added)if (Order == SIGNAL_CLOSEBUY)
{
OrderClose()
改为
for (int k = 0; k < OrdersTotal(); k ++)
{
OrderSelect(k, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())
{
if(OrderType() == OP_BUY)
{
//--------------Exit criteria (Exit Buy) if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY; // Trigger for CloseBuy (more can be added)if (CloseSell1_1 <= CloseSell1_2) Order = SIGNAL_CLOSESELL; // Trigger for Closesell (more can be added)if (Order == SIGNAL_CLOSEBUY)
{
OrderClose(....)
for (int j = 0; j < OrdersTotal(); j --)
{
if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) // If there is the next one
{ // Analyzing orders: if (OrderSymbol()==Symbol()) // Another security
{
//--------------Exit criteria (Exit Buy) if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY; // Trigger for CloseBuy (more can be added)if (CloseSell1_1 <= CloseSell1_2) Order = SIGNAL_CLOSESELL; // Trigger for Closesell (more can be added)if (Order == SIGNAL_CLOSEBUY)
{
OrderClose(....)
那么它也应该工作吗?因为我试过了,它又只是在每个货币对 上开一个订单。
或者,如果我把第二段代码改为(k++改为k--),它也是每个货币对只开一个交易。
for (int k = 0; k < OrdersTotal(); k --)
{
OrderSelect(k, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())
{
if(OrderType() == OP_BUY)
{
for (int j = 0; j < OrdersTotal(); j ++)
{
if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) // If there is the next one
{ // Analyzing orders: if (OrderSymbol()==Symbol())continue; // Another security
我把关闭机制从。
改为
现在一切都按预期进行。尽管我不明白这是为什么。因为我真的不明白第二段代码中的附加行。但还是要谢谢你们!
我把关闭机制从。
到
现在一切都按预期进行。谢谢你们!
我把关闭机制从。
改为
现在一切都按预期进行。尽管我不明白这是为什么。因为我真的不明白第二段代码中的附加行。但还是要感谢你们!
你的第二段代码是正确的,但有点可笑。打开MetaEditor,导航窗口(Ctrl+D),字典标签,选择MQL4参考>标准常量>交易操作。
这可能并不总是奏效 ......当在一个循环中关闭未结订单或删除待定订单时,你必须 向下而不是向上计数 ......你需要改变你的循环。你需要把Symbol()的缺口放回去 ... ...否则欧元兑美元的EA最终可能会关闭英镑兑美元的订单 ... ...你需要做的是摆脱继续 . ..或者把== 变成!
只是为了弄清楚你的意思。你说的是,如果我把第一段代码修改为。
那么它也应该工作吗?因为我试过了,它又只是在每个货币对 上开一个订单。
或者,如果我把第二段代码改为(k++改为k--),它也是每个货币对只开一个交易。
只是为了弄清楚你的意思。你说的是,如果我把第一段代码修改为。
那么它也应该工作吗?因为我试过了,它又只是在每个货币对上开一个订单。
或者如果我把第二段代码改为(k++改为k--),它也是每个货币对只开一个交易。
我说的是第一段代码,也就是你用来关闭订单的那个循环......它必须递减。...否则你会错过订单。 我看到你已经删除了继续,并添加了 { } 大括号,非常好 :-)
每个货币对 开一个订单还是总共一个订单?
每个货币对开一个订单还是总共一个订单?
是的,当然是总数。好吧,第二段代码。
当我们谈论循环时,我想你是指这个。
事实上,我会把它改成这样的。
这一行对每个货币对 只打开一个订单(如所愿!)。
关于这个问题,现在的循环是否正确?
RaptorUK:
这可能并不总是奏效 ......当在一个循环中关闭未结订单或删除待定订单时,你 必须 向下而不是向上计数 ...... 你需要改变你的循环。 你需要 把Symbol()的缺口放回去 ... ...否则欧元兑美元的EA最终可能会关闭英镑兑美元的订单 ... ...你需要做的是去掉 continue . ........或者把 == 变成 !是的,当然是总共。好吧,第二段代码。
当我们在谈论循环时,我想你是指这个。
事实上,我会把它改成这样的。
这一行对每个货币对只打开一个订单(如所愿!)。
关于这个问题,现在的循环是否正确?
不,这样做 . .
第一个订单的位置是0,所以如果你有5个 订单,位置是0,1,2,3,4 ... ...所以最后一个是OrdersTotal() - 1 ... ...所以要倒数,你从OrdersTotal()-1开始,以0结束
不,这样做 ... ...
第一个订单的位置是0,所以如果你有5个 订单,位置是0,1,2,3,4 ... ...所以最后一个是OrdersTotal() - 1 ... ...所以要倒数,你从OrdersTotal()-1开始,以0结束
所以它应该是这样的。
因为你是这样写的。
还是我错了?
所以它应该是这样的。
因为这是你写的。
还是我错了?