错误代码

 

尊敬的先生

我得到的错误信息是invalid stops err 130,即。

我打印出我的数值,它们如下所示

2006.06.29 13:15:05 AUDUSD,H1: OrderDetails:SellPrice :0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeeprofit : 0.7291 ,slipage : 2

我在下单前用下面的方法来检查我的sl和tp

/

if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;

if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);

有时卖出会通过,如下所示

2006.06.29 08:32:56 AUDUSD,H1: open #5976740 sell 0.01 AUDUSD at 0.7309 sl: 0.7324 tp: 0.7278 ok

也许我的止损检查只是没有正确运作

有什么建议吗?

 

我认为错误在于你的下单方式。如果你使用的是止损单,那么你的订单离市场价格太近了。通常情况下,你的买入止损应该至少是 "MarketInfo(Symbol(),MODE_STOPLEVEL)",与当前的卖出价相差几个点。

如果你要下止损单,请确保你使用RefreshRates(),然后在所需的距离内下单。对于快速移动的市场,它仍然可能不起作用,你将不得不把订单放在更远的地方。

希望这有帮助。

 

这是一个买入/卖出,而不是停止

尊敬的女士们

谢谢,但这不是一个停止,而是一个交易 - 买入/卖出,我将尝试2*MarketInfo(Symbol(),MODE_STOPLEVEL)

 
cardio:
你好

我得到的错误信息是无效的止损Err 130,即。

我打印出我的数值,它们如下所示

2006.06.29 13:15:05 AUDUSD,H1: OrderDetails:SellPrice :0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeeprofit : 0.7291 ,slipage : 2

我在下单前用下面的方法来检查我的sl和tp

/

if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;

if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);

有时卖出会通过,如下所示

2006.06.29 08:32:56 AUDUSD,H1: open #5976740 sell 0.01 AUDUSD at 0.7309 sl: 0.7324 tp: 0.7278 ok

也许我的止损检查只是没有正确运作。

有什么建议吗?

也许你在买入和卖出时都使用了 "+3"。在卖出时,你必须输入"-3 "以使其成为有效价格。

 

这不是麻烦的事

我开始认为是interbankfx试图在市场紧张时防止剥头皮。 当市场不紧张时,它是有效的--但它仍然令人困惑,因为一旦一个人的sl和tp大于MarketInfo(Symbol(),MODE_STOPLEVEL),它应该打开交易。

总之,我使用的代码是这样的

StopLoss = NormalizeDouble((TradeAbovePct/100)*(DemaH-DemaL)*(1/Point),0);

if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;

TakeProfit = NormalizeDouble(2*((DemaH-DemaL)*(1/Point)),0);

if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);

//Then I call a buy and sell as needed

//e.i

OpenBuy1(10);

OpenSell1(10);

////////////////////////////////////////////////

bool OpenBuy1(int pips1)

{

int ticket;

string comment="";

//reset defaults

use_MTBE = use_MTBEd;

use_split = use_splitd;

RefreshRates();

price1 = Ask;

stoploss1 = NormalizeDouble(price1-StopLoss*Point,Digits);

tp1 = NormalizeDouble(price1+TakeProfit*Point,Digits);

//expire1 = iTime(Symbol(),TimeFrame,0)+TimeFrame*HoursStopOpen*60;

Print("Openbuy lots: ", Lots);

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,Lots,price1,2,stoploss1,tp1,comment,MAGICMA,0,Orange);

else

ticket=OrderSend(Symbol(),OP_BUY,Lots,price1,2,0,tp1,comment,MAGICMA,0,Orange);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("BUY order opened : ",OrderOpenPrice());

//time1 = CurTime()+2*60*Period();

return(true);

}

}

else

{

Print("Error opening BUY order : ",GetLastError());

Print("OrderDetails: BuyPrice : ",price1," ,CurrentAsk : ", Ask," ,stoploss : ",stoploss1," ,takeprofit : ",tp1," ,slippage : ",2);

return(false);

}

}

bool OpenSell1(int pips1)

{

int ticket;

string comment="";

//reset defaults

use_MTBE = use_MTBEd;

use_split = use_splitd;

RefreshRates();

price1 = Bid;

stoploss1 = NormalizeDouble(price1+StopLoss*Point,Digits) ;

tp1 = NormalizeDouble(price1-TakeProfit*Point,Digits);

// expire1 = iTime(Symbol(),TimeFrame,0)+TimeFrame*HoursStopOpen*60;

Print("Opensell lots: ", Lots);

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_SELL,Lots,price1,2,stoploss1,tp1,comment,MAGICMA,0,Red);

else

ticket=OrderSend(Symbol(),OP_SELL,Lots,price1,2,0,tp1,comment,MAGICMA,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("SELL order opened : ",OrderOpenPrice());

// time1 = CurTime()+2*60*Period();

return(true);

}

}

else

{

Print("Error opening SELL order : ",GetLastError());

Print("OrderDetails: SellPrice : ",price1," ,CurrentBid : ", Bid," ,stoploss : ",stoploss1," ,takeprofit : ",tp1," ,slippage : ",2);

return(false);

}

}

 

需要帮助 - 错误138打开订单

你好!

如你所见,我是这个论坛的新手。我是Ignacio,来自阿根廷。我试图开发一个简单的EA。

我认为该策略已经 "准备就绪"。但是,当我运行回溯测试时,没有订单被打开。我打印了一些调试信息,这些条件都很好。OrderSend函数 抛出的错误是138。

代码如下。

RefreshRates();

OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);

谁能给我解释一下哪里出了问题?

谢谢大家。

忽略...

 
ignacio:
你好!

嗯,正如你所看到的,我是这个论坛的新手。我叫Ignacio,来自阿根廷。我试图开发一个简单的EA。

我认为该策略已经 "准备就绪"。但是当我运行回溯测试时,没有订单被打开。我打印了一些调试信息,这些条件都很好。OrderSend函数抛出的错误是138。

代码如下。

RefreshRates();

OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);

谁能给我解释一下哪里出了问题?

谢谢大家。

点燃...

错误138 意味着有一个重新报价。你是否尝试过使用更大的点值作为滑点,比如3到5之间?

 

我认为在回测 中不存在重新投票的问题。在我看来,问题的发生是由于 "刷新率",也许在回测中会导致重新投票的问题。考虑一下这个问题

如果(!isTesting())RefreshRates()。

 

谢谢你的回答。

Maji,我在一个循环中测试了一些滑点值,OrderSend给了我同样的错误。

elihayun,我已经正确地添加了你的条件,但仍然有同样的错误。

我做了很多测试,但没有好结果。

有什么建议吗?我真的很想完成这个,以便做另一个更严肃的EA,嘿嘿。

谢谢大家

忽略...

 

首先,为了获得错误描述,请做以下工作

在#property link后面添加一行

#property link "http://www.elihayun.com"

#include

现在要检查 错误,请这样做

int err = GetLastError();

if (err != 0)

{

Print("Error # ", err, " ", ErrorDescription(err));

}

对于你的问题,我想不出其他问题。也许你正在使用另一个RefreshRates(),试着把它们注释出来

// RefreshRates()

 
elihayun:
首先,为了获得错误描述,请执行以下操作

在#属性链接后添加一行

#属性链接 "http://www.elihayun.com"

#include

现在要检查错误,请这样做

int err = GetLastError();

if (err != 0)

{

Print("Error # ", err, " ", ErrorDescription(err));

}[/PHP]

For your problem, I cannot think of another problem. Maybe u are using another RefreshRates() Try to comment them out

// RefreshRates()

这里是脚本的输出。

2006.07.02 11:07:15 2006.01.04 12:00 eaButler EURUSD,H4: Error Description [#138]: requote

2006.07.02 11:07:15 2006.01.04 12:00 stdlib EURUSD,H4: loaded successfully

和这里的代码。

[PHP]

last_ticket = OrderSend( Symbol(), OP_SELL, Lots, Slippage, Bid, 0.0, 0.0, c , magic_number, 0, Red) 。

如果(last_ticket < 0)

{

rv = GetLastError();

Print("错误描述[#"+rv+"]。" + ErrorDescription(rv))。

}