编码帮助 - 页 18

 

在EA中出现错误 需要帮助

只获得一个交易

我需要在icustom ARROW中生成的所有交易。

外部字符串 Symbol_1 = "EURUSD";

int magic=9503;

return(0);

int deinit()

{

return(0);

}

datetime newbar;

int start()

{

如果(newbar==Time[0])返回(0); //

否则newbar=Time[0]。

double ArrowUp = iCustom(NULL,0, "NBO-System_v1",2,1,10000,2,1);

double ArrowDown = iCustom(NULL,0, "NBO-System_v1",2,1,10000,3,1); // PERIOD_M5

如果(ArrowDown >0 && ArrowDown!=2147483647 && OrdersTotal()==0)//!=EMPTY_VALUE)

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick) 。

}

如果(ArrowUp >0 && ArrowUp! =2147483647 && OrdersTotal()==0)

{

OrderSend(Symbol_1,OP_SELL,0.1, MarketInfo(Symbol_1,MODE_BID), 2, NULL, NULL, "RapidFire", magic, NULL, LimeGreen ) 。

}

return(0);

}

附加的文件:
ea.png  22 kb
 
 
在你的EA中,这个条件

OrdersTotal()==0

如果你想开一个以上的订单,请删除该条件,但你必须添加代码,以避免在同一酒吧开多个订单(否则你会有无数的订单)。你可以使用一个函数,它看起来像这样。

int countOpenedOnACurrentBar()

{

int openedAtBar = 0;

datetime startTime = Time[0];

datetime endTime = Time[0]+Period()*60;

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

{

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;

if(OrderMagicNumber() != MagicNumber) continue;

if(OrderSymbol() != Symbol()) continue;

if(OrderOpenTime()=endTime) continue;

openedAtBar++;

break;

}

return(openedAtBar);

}

[/PHP]

然后你的完整条件(买入)将是这样的。

[PHP]如果(ArrowDown >0 && ArrowDown!=2147483647 && countOpenedOnACurrentBar()==0)

它将防止在同一个柱子上打开多个订单(这段代码没有检查在当前柱子上已经打开的订单的类型,如果你想检查这个,你必须增加一些条件

vegadigitalco:
仅获得1笔交易

我需要在icustom ARROW中生成的所有交易。

extern string Symbol_1 = "EURUSD";

int magic=9503;

return(0);

int deinit()

{

return(0);

}

datetime newbar;

int start()

{

如果(newbar==Time[0])返回(0); //

否则newbar=Time[0]。

double ArrowUp = iCustom(NULL,0, "NBO-System_v1",2,1,10000,2,1);

double ArrowDown = iCustom(NULL,0, "NBO-System_v1",2,1,10000,3,1); // PERIOD_M5

如果(ArrowDown >0 && ArrowDown!=2147483647 && OrdersTotal()==0)//!= EMPTY_VALUE )

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick) 。

}

如果(ArrowUp >0 && ArrowUp! =2147483647 && OrdersTotal()==0)

{

OrderSend(Symbol_1,OP_SELL,0.1, MarketInfo(Symbol_1,MODE_BID), 2, NULL, NULL, "RapidFire", magic, NULL, LimeGreen ) 。

}

return(0);

}
 

非常非常感谢您对HELPPPPPPPP的支持

对HELPPPPPPP来说,非常非常比X。

对HELPPPPPPP的评价非常非常高

对HELPPPPPPP来说,非常非常重要。

对HELPPPPPPP来说,非常非常多。

mladen:
在您的EA中,这个条件

OrdersTotal()==0

如果你想开一个以上的订单,请删除该条件,但你必须添加代码,以避免在同一酒吧开多个订单(否则你会有无数的订单)。你可以使用一个函数,它看起来像这样。
int countOpenedOnACurrentBar()

{

int openedAtBar = 0;

datetime startTime = Time[0];

datetime endTime = Time[0]+Period()*60;

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

{

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;

if(OrderMagicNumber() != MagicNumber) continue;

if(OrderSymbol() != Symbol()) continue;

if(OrderOpenTime()=endTime) continue;

openedAtBar++;

break;

}

return(openedAtBar);

}

[/PHP]

然后你的完整条件(买入)将是这样的。

[PHP]如果(ArrowDown >0 && ArrowDown!=2147483647 && countOpenedOnACurrentBar()==0)
它可以防止在同一时间段内开出多个订单(该代码不检查 在目前的交易时段内已经开出的订单类型,如果你也想检查的话,你必须增加一些条件
附加的文件:
 

平衡是指回测、现场演示测试或真实资金交易平衡。

我从来没有想过EA,因为半自动进场是很好的,而且足够酷(半自动意味着当你下单时有额外的障碍,像飞线一样,电脑可以裁定你的进场无效)。

但是ticks-ease就像电子游戏中的火圈,在任何时候都只有几个点,你可以把自己放进去,其他的会很容易把你烧死-----这不是过去5到10个月的市场状况,事情越来越容易。

我想读一下上面EA中的代码--但这些代码超出了我的理解范围。

 

在上述编码的交易中需要警报

你好mladen。

感谢你对我的独特支持

还有一件事,我怎样才能在你建议的上述代码产生的买入或卖出中添加警报 代码。

在实时市场中,它不会关闭买入或卖出,它只是创建新的交易。

谢谢你

 

...

试试这样的方法(这只是一个买入的例子)
if (ArrowDown >0 && ArrowDown!=2147483647 &&countOpenedOnACurrentBar()==0)

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

if (!IsTesting()) Alert(Symbol_1+" BUY ordere opened at "+TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

}

vegadigitalco:
你好mladen,

感谢你对我的独特支持

,还有一件事,我怎样才能在你建议的上述代码中添加买入或卖出的警报代码,

在实时市场中,它不会关闭买入或卖出,它只是创建新的交易。

提前感谢
 

介意在这里分享你的EA吗?我真的很喜欢这个EA的交易方式。

 

你好,mLaden。

再次感谢您的大力帮助:)

只有一个问题没有解决

在实时市场中,它不会关闭之前的买入或卖出头寸,只是创建新的交易。???

感谢ADV的帮助

mladen:
试试这样的方法(这只是一个买入的例子)。
if (ArrowDown >0 && ArrowDown!=2147483647 &&countOpenedOnACurrentBar()==0)

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

if (!IsTesting()) Alert(Symbol_1+" BUY ordere opened at "+TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

}

 

...

vegadigitalco

你必须在你的EA中添加关闭逻辑。要么使用获利 和止损,要么根据一些退出规则使用明确的OrderClose()。

vegadigitalco:
你好,mLaden。

再次感谢您的大力帮助:)

只有一个问题没有解决

在实时市场中,它不会关闭之前的买入或卖出头寸,它只是创建新的交易。???

谢谢你,ADV
原因: