火鸟v63G - 页 30

 

正如你在上周美元兑瑞郎的图表中所看到的,Firebird在区间市场中表现非常好。当市场成为趋势时,Firebird经常做出错误的决定。因此,解决这个问题的方法可能非常简单:我们必须在标记成为趋势时立即退出,并在区间约束市场恢复时回来。

在凤凰城,有一段代码在关注这些变化。简而言之,它采用过去24小时、12小时、6小时和2小时的高点,可以决定市场何时成为趋势,何时恢复区间约束市场。

附加的文件:
 

亨德里克的工作非常出色,你的头脑风暴得到了回报,我期待着在你发布凤凰城时对它进行测试。

Hendrick:
在这里,你可以看到当事情变得艰难时,凤凰和火鸟在美元兑瑞郎上的行为差异。

火鸟正在放置3个买盘,都停止了。

菲尼克斯在等待合适的时机,做了3次卖出,都击中了TP。

不错吧?
 
MarvinSk:
现在越来越接近了

我已经添加了这个。

如果((Safe1!=1)&&(DealTime==2)) {

for (int i=OrdersTotal()-1; i>=0; i--){

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){

如果(OrderSymbol()==Symbol()) {

如果(OrderType()==OP_BUY){

pBid=MarketInfo(OrderSymbol(), MODE_BID)。

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy)。

}

如果(OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK)。

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell)。

}

}

}

}

}

在回溯测试中,我看到它关闭了OpenTrades,但我需要添加STOPLOSS查询功能,因为它关闭了有正收益的交易,当Safe1和DealTime变量匹配....。

所以止损必须是第三个陷阱......我将在下周转发,一旦我得到它的工作......

每个人都有一个想法,那就是在市场波动时对现有的未平仓交易进行一些控制......如果一个交易要停止,我宁愿它停在一半而不是100%。至少当市场恢复时,你不会有很多东西需要弥补......

谢谢

嗨,马文。

一个更简单的解决方案是,一旦信号发生变化,就立即关闭未结的交易。你怎么看?

 
Hendrick:
嗨,马文,一个更简单的解决方案是,一旦信号发生变化,就立即关闭未平仓的交易。你怎么看?

嘿,Hendrick...你说的信号是指当Safe1和Dealtime值变为真实时吗?

如果是这样的话,我从回溯测试 中看到,因为现在市场是关闭的,所以一些积极的交易也被关闭了。所以STOPLOSS检查是控制这种情况的第三个变量。

我有一些由ELIHAYUN 提出的代码

看看这个,Hendrick...

void CloseOrder(int ticket,double numLots,double close_price)

{

int CloseCnt, err;

// 尝试关闭3次

CloseCnt = 0。

while (CloseCnt < 3)

{

如果(OrderClose(ticket,numLots,close_price,Slippage,Violet))

{

CloseCnt = 3。

}

否则

{

err=GetLastError();

Print(CloseCnt," Error closing order :(", err , " ) " + ErrorDescription(err))。

如果(err > 0) CloseCnt++;

}

}

}

void CloseHalfSL()

{

double LosePercent = 50.0; // 50% from the S/L

for(int i=OrdersTotal()-1;i>=0;i--) // 扫描所有订单和头寸...

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。

if (OrderMagicNumber() !=MagicNumber) 继续。

如果 ( OrderSymbol()==Symbol() )

if (OrderProfit() < 0) // 我们有亏损交易

{

double prc = Bid;

如果(OrderType() == OP_SELL) prc = Ask;

double ord_prc = OrderOpenPrice();

double ord_SL = OrderStopLoss();

int SL_points = MathAbs(ord_prc - ord_SL) / Point;

int Actual_Lose = MathAbs(prc - ord_prc) / Point;

if ( (Actual_Lose * 100 / SL_points) >= LosePercent) // 损失太大

{

CloseOrder(OrderTicket(), OrderLots(), prc)。

}

}

}

}

/// ---- 检查是否可以安全交易,然后调用CloseHalfSL

if (NotSafeToTrade) CloseHalfSL();

 
MarvinSk:
现在越来越接近了

我已经添加了这个。

如果((Safe1!=1)&&(DealTime==2)) {

for (int i=OrdersTotal()-1; i>=0; i--){

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){

如果(OrderSymbol()==Symbol()) {

如果(OrderType()==OP_BUY){

pBid=MarketInfo(OrderSymbol(), MODE_BID)。

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy)。

}

如果(OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK)。

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell)。

}

}

}

}

}

在回溯测试中,我看到它关闭了OpenTrades,但我需要添加STOPLOSS查询功能,因为它关闭了有正收益的交易,当Safe1和DealTime变量匹配....。

所以止损必须是第三个陷阱......我将在下周转发,一旦我得到它的工作......

每个人都有一个想法,那就是在市场波动时对现有的未平仓交易进行一些控制......如果一个交易要停止,我宁愿它停在一半而不是100%。至少当市场恢复时,你没有太多的时间来弥补......

谢谢

这可能是一个让正收益订单保持开放的方法。在if(OrderType())行中加入"&&OrderProfit()<0"。

如果((Safe1!=1)&&(DealTime==2)) {

for (int i=OrdersTotal()-1; i>=0; i--){

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){

如果(OrderSymbol()==Symbol()) {

如果(OrderType()==OP_BUY && OrderProfit()<0){

pBid=MarketInfo(OrderSymbol(), MODE_BID)。

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy)。

}

如果(OrderType()==OP_SELL && OrderProfit()<0){

pAsk=MarketInfo(OrderSymbol(), MODE_ASK)。

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell)。

}

}

}

}

}

Wackena

 
Wackena:
这可能是一个让正向收益订单开放的方法。在if(OrderType())行中加入"&&OrderProfit()<0"。

如果((Safe1!=1)&&(DealTime==2)) {

for (int i=OrdersTotal()-1; i>=0; i--){

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){

如果(OrderSymbol()==Symbol()) {

如果(OrderType()==OP_BUY && OrderProfit()<0){

pBid=MarketInfo(OrderSymbol(), MODE_BID)。

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy)。

}

如果(OrderType()==OP_SELL && OrderProfit()<0){

pAsk=MarketInfo(OrderSymbol(), MODE_ASK)。

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell)。

}

}

}

}

}

Wackena

Wackena 谢谢......但我对我们的语法做了一个修正

double pBid, pAsk;

如果((Safe1!=1)&&(DealTime==2)) {

for (int i=OrdersTotal()-1; i>=0; i--){

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){

如果(OrderSymbol()==Symbol()) {

如果((OrderType()==OP_BUY)&&(OrderProfit()<0)){

pBid=MarketInfo(OrderSymbol(), MODE_BID)。

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy)。

}

如果((OrderType()==OP_SELL)&&(OrderProfit()<0)) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK)。

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell)。

}

}

}

}

}

 

好吧,我正在测试我所做的关于在市场波动时处理现有未平仓交易的补充内容...。

我唯一的例外是...我没有使用TradingHour from 0 - 24

我正在交易这个模式。

0 - 7 EST

美东时间11 - 24

我这样做是因为我想确保EA在纽约开市时不进行交易......我在美东时间8-10点看到过很多波动。

随着本周的进展,我将公布我的结果...本周我们有一些制造噪音的新闻,让我们看看会发生什么。

 

我刚刚读完《狮国观鸟》这本书。 这本书还不错。 最后一章很有用。 它与《火鸟》和《凤凰》背后的想法也相当相关。 这个想法并不完全相同,但非常相似,人们可以很容易地从中窃取一些好的想法,并将其植入,进一步使火鸟成为一个了不起的EA。 如果Hendrick、Wackena和其他几个Firebird的开发者有兴趣阅读它,请告诉我。

 

想测试一下Firebird

嗨,hendrik,...我想测试火鸟的新版本(因为有很多版本的火鸟)。你能告诉我吗,....。

你们为开发Fire Bird到Phoenix所做的努力,我尊敬你们所有人,...

谢谢

 

真实账户没有问题

MarvinSk:
有没有人在InterbankFX开了一个真实账户?

我遇到了这些错误

2006.06.26 20:10:59 : 订单买入 1.00 USDCHFm 开盘价 1.2407 sl: 1.2307 tp: 1.2417 失败 [常见错误]

这是否意味着他们不允许在真实账户上使用EA?

我有一个IBFX的真实账户,到目前为止没有问题...

原因: