这是一个买入/卖出,而不是停止
尊敬的女士们
谢谢,但这不是一个停止,而是一个交易 - 买入/卖出,我将尝试2*MarketInfo(Symbol(),MODE_STOPLEVEL)
你好
我得到的错误信息是无效的止损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,来自阿根廷。我试图开发一个简单的EA。
我认为该策略已经 "准备就绪"。但是当我运行回溯测试时,没有订单被打开。我打印了一些调试信息,这些条件都很好。OrderSend函数抛出的错误是138。
代码如下。
RefreshRates();
OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);
谁能给我解释一下哪里出了问题?
谢谢大家。
点燃...错误138 意味着有一个重新报价。你是否尝试过使用更大的点值作为滑点,比如3到5之间?
谢谢你的回答。
Maji,我在一个循环中测试了一些滑点值,OrderSend给了我同样的错误。
elihayun,我已经正确地添加了你的条件,但仍然有同样的错误。
我做了很多测试,但没有好结果。
有什么建议吗?我真的很想完成这个,以便做另一个更严肃的EA,嘿嘿。
谢谢大家
忽略...
首先,为了获得错误描述,请执行以下操作
在#属性链接后添加一行
#属性链接 "http://www.elihayun.com"
#include
现在要检查错误,请这样做
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))。
}
尊敬的先生
我得到的错误信息是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
也许我的止损检查只是没有正确运作。
有什么建议吗?