任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 326 1...319320321322323324325326327328329330331332333...1178 新评论 Dmitry Fedoseev 2013.12.09 12:55 #3251 mzk_3om6u: 好吧,每一个tick,新的信息都会通过,每一个tick,买入信号都会通过,但是服务器在那一刻(tick期间)会尝试登录。 所以,随它去吧,有什么不好呢? 但如果有的话,有一个IsConnected()函数。 mzk_3om6u 2013.12.09 13:15 #3252 Integer: 所以随它去吧,有什么大不了的? 但如果有的话,还有IsConnected()函数。 发生的最糟糕的事情是,积极的交易没有打开:) 但我想知道到底发生了什么--是经纪人在捣乱还是我有问题。 Dmitry Fedoseev 2013.12.09 13:20 #3253 mzk_3om6u: 1.好吧,最糟糕的事情是,一个积极的交易没有打开:) 2.但我想知道到底发生了什么--是经纪人在捣乱还是我有问题。 1.这是一种正常的、自然的现象。 没有办法知道。你经常会失去几秒钟的连接。 mzk_3om6u 2013.12.09 13:21 #3254 Integer: 1.这是一种正常的、自然的现象。 2.没有办法知道。很多时候,连接会丢失几秒钟。 在使用该经纪商一个月的测试中,这是第一次发生这种情况,尽管我已经注意到他们有4个问题--我想是时候寻找另一个了:) 谢谢你的回答!) Artem mezhelovsky 2013.12.09 13:44 #3255 TarasBY: 你有没有看过你写的东西? 有些东西告诉我,"这是狗的位置"。 谢谢,知道了。 Alexey Semenov 2013.12.09 15:19 #3256 artmedia70: 你不需要旗帜。在非正常情况下,该标志可能会丢失。最好是检查 - 是否有一个开放的位置,如果有 - 进一步的 哦,我想我已经得到了它。我想明白了这个逻辑,所以我是这样做的。然而,当我编译它时,我得到一个错误')'。- 赋值期望D:\Alpari\experts\Sp.mq4(160,92)。我检查了所有的括号十遍--我找不到错误的地方。Artmedia70,如果你不介意的话,请告诉我错误在哪里。 extern double Lots = 0.1; extern string Сomment = "Pattern_1"; extern int TakeProfit = 0; extern int StopLoss = 0; extern int Step = 0; extern int BULevel = 200; extern int NotBULevel = 20; // Уровень безубытка в пунктах extern int Slippage = 2; // проскальзывание extern int Magic = 111; int ticket, otype; double TP, price; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { if (Digits ==3 || Digits ==5) // для пятизначного брокера { TakeProfit *= 10; StopLoss *= 10; Slippage *= 10; Step *= 10; } return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if (CountTrades()==0 && Open[1]>Close[1] && Open[2]<Close[2] && High[1]>High[2] && Low[1]<Low[2]) // продажа { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Pattern_1",111,0,Red); if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) { TP=NormalizeDouble(Bid - TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(),0,TP,0); } } else if (CountTrades()==0 && Open[1]<Close[1] && Open[2]>Close[2] && High[1]>High[2] && Low[1]<Low[2]) // покупка { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Pattern_1",111,0,Blue); if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) { TP=NormalizeDouble(Ask + TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(),0,TP,0); } } if (CountTrades()>0) { otype = FindLastOrderType(); if (otype == OP_BUY) { // ценапоследнего ордера на покупку price = FindLastBayPrice(); if ((Bid - price) / Point >= Step) { ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid,Slippage,0,0,"Pattern_1",111,0,Red); } } else if (otype == OP_SELL) { // цена последнего ордера на продажу price = FindLastSellPrice() if ((price - Ask) / Point >= Step) { ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask,Slippage,0,0,"Pattern_1",111,0,Blue); } } } return(0); } //+------------------------------------------------------------------+ int CountTrades() // количество открытых ордеров { int count=0; for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==111) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) count++; } } } return(count); } //+------------------------------------------------------------------+ int FindLastOrderType() // вычисляем тип последнего ордера { int oticket, ticketnumber=0, OType; for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==111) { oticket=OrderTicket(); if (oticket > ticketnumber) { ticketnumber = oticket; OType = OrderType(); // самый последний тикет } } } } return(OType); } //+------------------------------------------------------------------+ double FindLastBayPrice() // находим цену последнего ордера на покупку { int oticket, ticketnumber=0; double oprice; for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==111 && OrderType() = OP_BUY) { oticket=OrderTicket(); if (oticket > ticketnumber) { ticketnumber = oticket; oprice = OrderType(); // самый последний тикет } } } } return(oprice); } //+------------------------------------------------------------------+ double FindLastSellPrice() // находим цену последнего ордера на продажу { int oticket, ticketnumber=0; double oprice; for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==111 && OrderType() = OP_SELL) { oticket=OrderTicket(); if (oticket > ticketnumber) { ticketnumber = oticket; oprice = OrderType(); // самый последний тикет } } } } return(oprice); } //+------------------------------------------------------------------+ void BU() { for(int a=0; a<OrdersTotal(); a++) { if (OrderSelect(a, SELECT_BY_POS)) { if(OrderMagicNumber()!=111 || OrderSymbol()!=Symbol()) continue; if(OrderType()==OP_BUY) { if(OrderOpenPrice()<=(Bid-BULevel*Point-NotBULevel*Point)&& OrderOpenPrice()>OrderStopLoss())// последнеее условие БУ + 20 пипсов { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+NotBULevel*Point,OrderTakeProfit(),0,Green); } } if(OrderType() == OP_SELL) { if(OrderOpenPrice()>=(Ask+BULevel*Point+NotBULevel*Point)&& (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss() == 0 ))// последнеее условие БУ + 20 пипсов { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NotBULevel*Point,OrderTakeProfit(),0,Red); } } } } return(0); } Sergey Dzyublik 2013.12.09 15:30 #3257 if (Digits ==3 || Digits ==3) // для пятизначного брокера 这有点奇怪。 Alexey Semenov 2013.12.09 15:39 #3258 ALXIMIKS: 这有点奇怪。 已纠正, ALXIMIKS,请检查错误和逻辑。 Sergey Dzyublik 2013.12.09 15:50 #3259 你应该在安装前阅读说明--前15页。 附加的文件: kod.txt 7 kb [Deleted] 2013.12.09 16:27 #3260 请告诉我这个函数写得是否正确。 double GetLastUpperFractal() { double LastUpperFractalPrice = 0; for (int i = 0; i<=Bars; i++) { double FractalUp = iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i); if (FractalUp != 0) LastUpperFractalPrice = FractalUp; } 返回(LastUpperFractalPrice); } //+------------------------------------------------------------------+ double GetLastLowerFractal() { double LastLowerFractalPrice = 0; for (int i = 0; i<=Bars; i++) { double FractalDown = iFractals(Symbol(),PERIOD_M5, MODE_LOWER,i); if (FractalDown != 0) LastLowerFractalPrice = FractalDown; } 返回(LastLowerFractalPrice); } 1...319320321322323324325326327328329330331332333...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
好吧,每一个tick,新的信息都会通过,每一个tick,买入信号都会通过,但是服务器在那一刻(tick期间)会尝试登录。
所以,随它去吧,有什么不好呢?
但如果有的话,有一个IsConnected()函数。
所以随它去吧,有什么大不了的?
但如果有的话,还有IsConnected()函数。
发生的最糟糕的事情是,积极的交易没有打开:)
但我想知道到底发生了什么--是经纪人在捣乱还是我有问题。
1.好吧,最糟糕的事情是,一个积极的交易没有打开:)
2.但我想知道到底发生了什么--是经纪人在捣乱还是我有问题。
1.这是一种正常的、自然的现象。
没有办法知道。你经常会失去几秒钟的连接。
1.这是一种正常的、自然的现象。
2.没有办法知道。很多时候,连接会丢失几秒钟。
在使用该经纪商一个月的测试中,这是第一次发生这种情况,尽管我已经注意到他们有4个问题--我想是时候寻找另一个了:)
谢谢你的回答!)
你有没有看过你写的东西?
有些东西告诉我,"这是狗的位置"。
谢谢,知道了。
你不需要旗帜。在非正常情况下,该标志可能会丢失。最好是检查 - 是否有一个开放的位置,如果有 - 进一步的
哦,我想我已经得到了它。我想明白了这个逻辑,所以我是这样做的。然而,当我编译它时,我得到一个错误')'。- 赋值期望D:\Alpari\experts\Sp.mq4(160,92)。我检查了所有的括号十遍--我找不到错误的地方。Artmedia70,如果你不介意的话,请告诉我错误在哪里。
这有点奇怪。
请告诉我这个函数写得是否正确。
double GetLastUpperFractal()
{
double LastUpperFractalPrice = 0;
for (int i = 0; i<=Bars; i++)
{
double FractalUp = iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i);
if (FractalUp != 0) LastUpperFractalPrice = FractalUp;
}
返回(LastUpperFractalPrice);
}
//+------------------------------------------------------------------+
double GetLastLowerFractal()
{
double LastLowerFractalPrice = 0;
for (int i = 0; i<=Bars; i++)
{
double FractalDown = iFractals(Symbol(),PERIOD_M5, MODE_LOWER,i);
if (FractalDown != 0) LastLowerFractalPrice = FractalDown;
}
返回(LastLowerFractalPrice);
}