任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 332 1...325326327328329330331332333334335336337338339...1178 新评论 Vitalie Postolache 2013.12.10 15:46 #3311 alexey1979621: 来源 为什么要计算挂单?那么谁是BU();? if (OrderSymbol()!=Symbol() && OrderMagicNumber()!=Magic) continue;//отделяем свои ордера. Магик задается в настройках 将自己的立场与他人的立场 "分开 "的奇怪方法,难道不是更好吗? if (OrderSymbol()=Symbol() && OrderMagicNumber()=Magic) отделяем свои ордера. Магик задается в настройках {сюда пересчёт рыночных позиций и отложек} Alexey Semenov 2013.12.10 15:58 #3312 evillive: 为什么要计算挂单?那么谁是BU();? 把自己的立场和别人的立场 "分开 "是一种奇怪的方法。 难道不是更好吗? BU();是一个Breakeven函数。 我的变体有什么问题? сюда пересчёт рыночных позиций и отложек 在我的情况下会是什么样子? Vitalie Postolache 2013.12.10 16:07 #3313 alexey1979621: 在我的情况下会是什么样子? 和它看起来一样,只是多加了几个大括号。 void CountTrades() // количество открытых ордеров { for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()=Symbol() && OrderMagicNumber()=Magic)//отделяем свои ордера. Магик задается в настройках { int typ=OrderType(); //однократный вызов функции ускоряет работу switch (typ) { case 0: bs++; case 1: ss++; case 2: blms++; case 3: slms++; case 4: bsts++; case 5: ssts++; default: break; } } } } return; } Frangatic 2013.12.10 16:11 #3314 好了,伙计们:) Alexey Semenov 2013.12.10 16:16 #3315 evillive: 和它的样子一样,只是会多加几个大括号。我进行了纠正、编译和测试--问题仍然存在--当达到某个条件时,专家顾问就会开仓交易,并在止盈或止损 时关闭交易。在这一点上,尽管开启交易的条件已经满足,但专家顾问不再开启交易。 以下是代码的全文。 extern double Lots = 0.1; extern string Сomment = "Pattern_1"; extern int TakeProfit = 10; extern int StopLoss = 0; extern int Step = 2; extern int StepOtl = 4; extern int BULevel = 2; extern int NotBULevel = 2; // Уровень безубытка в пунктах extern int Slippage = 2; // проскальзывание extern int Magic = 111; int ticket1, ticket2, bs, ss, bsts, ssts, slms, blms;//добавил колич. ордеров по типам и их тикеты int timeprev; double price1, price2; //цены открытия ордеров //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double SL,TP; int slv=MarketInfo(Symbol(),MODE_STOPLEVEL); if(Step<=slv || StepOtl<=slv) {Print("Step или StepOtl слишком мал"); return(0);} CountTrades(); //подсчет ордеров по типам. BU(); //если нет рыночных ордеров----------------------------------------- if(bs+ss+bsts+ssts+blms+slms==0) { if (Open[1]>Close[1] && Open[2]<Close[2] && High[1]>High[2] && Low[1]<Low[2]) // продажа { TP=NormalizeDouble(Bid - TakeProfit * Point, Digits); SL=NormalizeDouble(Bid + StopLoss*Point,Digits); if(TakeProfit==0) TP=0; if(StopLoss==0) SL=0; ticket1=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",Magic,0,Red);//Сразу с тейк-профитом, магик в настройках if(OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES)) price1=OrderOpenPrice();//цена первого ордера SL=NormalizeDouble(Bid+StepOtl*Point-StopLoss*Point,Digits); if(StopLoss==0) SL=0; ticket2=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(Bid+StepOtl*Point,Digits),0,SL,0,"Pattern_1",Magic,0,Blue);//тикет для BuyStop if(OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES)) price2=OrderOpenPrice();//цена второго ордера } if (Open[1]<Close[1] && Open[2]>Close[2] && High[1]>High[2] && Low[1]<Low[2]) // покупка { TP=NormalizeDouble(Ask + TakeProfit * Point, Digits); if(TakeProfit==0) TP=0; SL=NormalizeDouble(Ask-StopLoss*Point,Digits); if(StopLoss==0) SL=0; ticket1=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"Pattern_1",Magic,0,Blue);//с тейком, магик в настройках if(OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES)) price1=OrderOpenPrice();//цена первого ордера SL=NormalizeDouble(Bid-StepOtl*Point+StopLoss*Point,Digits); if(StopLoss==0) SL=0; ticket2=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(Bid-StepOtl*Point,Digits),0,SL,0,"Pattern_1",Magic,0,Red);//тикет для SellStop if(OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES)) price2=OrderOpenPrice();//цена второго ордера } } return(0); } //+------------------------------------------------------------------+ void CountTrades() // количество открытых ордеров { for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)//отделяем свои ордера. Магик задается в настройках { int typ=OrderType(); //однократный вызов функции ускоряет работу switch (typ) { case 0: bs++; case 1: ss++; case 2: blms++; case 3: slms++; case 4: bsts++; case 5: ssts++; default: break; } } } } return; } //+------------------------------------------------------------------+ void BU() { for(int a=OrdersTotal()-1; a>=0; a--) { if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue; int typ=OrderType(); //вызываем функции int tic=OrderTicket(); //один раз double oop=OrderOpenPrice(); //это ускоряет работу double otp=OrderTakeProfit(); //советника double osl=OrderStopLoss(); if(typ==OP_BUY) { if(oop<=NormalizeDouble(Bid-BULevel*Point-NotBULevel*Point,Digits) && oop>osl)// последнеее условие БУ + 20 пипсов OrderModify(tic,oop,NormalizeDouble(oop+NotBULevel*Point,Digits),otp,0,Green); OrderDelete(ticket2,Yellow); } if(typ==OP_SELL) { if(oop>=NormalizeDouble(Ask+BULevel*Point+NotBULevel*Point,Digits) && (oop<osl || osl==0))// последнеее условие БУ + 20 пипсов OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NotBULevel*Point,OrderTakeProfit(),0,Red); OrderDelete(ticket2,Yellow); } } } return; } Boris 2013.12.10 16:18 #3316 artmedia70: 关于好--那是水里的干草叉。如果它是快速的,那也是有点牵强的......如果它很便宜,见第1点。 然后它是这样的。 1.好的是有点像泥巴里的棍子。2.关于快速,这也是一把双刃剑......3.如果它很便宜--见第1点。 现在我明白了! Artyom Trishkin 2013.12.10 16:23 #3317 alexey1979621: 修正、编译、测试--问题仍然存在--当某个条件发生时,专家顾问开仓交易,并在止盈或止损时关闭交易。在这一点上,尽管开启交易的条件已经满足,但专家顾问不再开启交易。 以下是代码的全文。 哪里算? bs+ss+bsts+ssts+blms+slms 他们是全球性的。而且它们似乎在被检查之前不会被重置。而他们在检查前的计算 - 在哪里? Vitalie Postolache 2013.12.10 16:28 #3318 alexey1979621: 修正、编译、测试--问题仍然存在--当某个条件发生时,专家顾问开仓交易,并在止盈或止损时关闭交易。在这一点上,尽管开启交易的条件已经满足,但专家顾问不再开启交易。 以下是代码的全文。 BU重做,你不能删除市场头寸,而且由于冻结的止损,不会再有任何头寸))))。 Artyom Trishkin 2013.12.10 16:31 #3319 alexey1979621: 修正、编译、测试--问题仍然存在--当某个条件发生时,专家顾问开仓交易,并在止盈或止损时关闭交易。在这一点上,尽管开启交易的条件已经满足,但专家顾问不再开启交易。 以下是代码的全文。 case 0: bs++; break; case 1: ss++; break; case 2: blms++; break; case 3: slms++; break; case 4: bsts++; break; case 5: ssts++; break; default: break; Vitalie Postolache 2013.12.10 17:07 #3320 evillive: BU重做,你不能删除市场头寸,而且由于悬挂的止损,不会再有任何头寸了 ))) 让大师们评论一下BU() 函数是否需要 中断(注释出来),让alexey1979621 想想,这个函数是否在那里被调用? 另外,如果像这样使用CountTrades();函数,就等于OrdersTotal(),更简单更快捷。 void BU() { bool bu=false; for(int a=OrdersTotal()-1; a>=0; a--) { if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber()==Magic || OrderSymbol()==Symbol()) { int typ=OrderType(); //вызываем функции int tic=OrderTicket(); //один раз double oop=OrderOpenPrice(); //это ускоряет работу double otp=OrderTakeProfit(); //советника double osl=OrderStopLoss(); if(typ==OP_BUY) { if(oop<=NormalizeDouble(Bid-BULevel*Point-NotBULevel*Point,Digits) && oop>osl)// последнеее условие БУ + 20 пипсов OrderModify(tic,oop,NormalizeDouble(oop+NotBULevel*Point,Digits),otp,0,Green); bu=true; //break; } if(typ==OP_SELL) { if(oop>=NormalizeDouble(Ask+BULevel*Point+NotBULevel*Point,Digits) && (oop<osl || osl==0))// последнеее условие БУ + 20 пипсов OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NotBULevel*Point,OrderTakeProfit(),0,Red); bu=true; //break; } if(bu==true && (typ==OP_BUYSTOP || typ==OP_SELLSTOP)) { OrderDelete(tic,Yellow); bu=false; } } } } return; } 1...325326327328329330331332333334335336337338339...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
来源
为什么要计算挂单?那么谁是BU();?
将自己的立场与他人的立场 "分开 "的奇怪方法,难道不是更好吗?
为什么要计算挂单?那么谁是BU();?
把自己的立场和别人的立场 "分开 "是一种奇怪的方法。 难道不是更好吗?
BU();是一个Breakeven函数。
我的变体有什么问题?
сюда пересчёт рыночных позиций и отложек
在我的情况下会是什么样子?在我的情况下会是什么样子?
和它看起来一样,只是多加了几个大括号。
和它的样子一样,只是会多加几个大括号。
我进行了纠正、编译和测试--问题仍然存在--当达到某个条件时,专家顾问就会开仓交易,并在止盈或止损 时关闭交易。在这一点上,尽管开启交易的条件已经满足,但专家顾问不再开启交易。
以下是代码的全文。
关于好--那是水里的干草叉。如果它是快速的,那也是有点牵强的......如果它很便宜,见第1点。
然后它是这样的。
1.好的是有点像泥巴里的棍子。2.关于快速,这也是一把双刃剑......3.如果它很便宜--见第1点。
现在我明白了!
修正、编译、测试--问题仍然存在--当某个条件发生时,专家顾问开仓交易,并在止盈或止损时关闭交易。在这一点上,尽管开启交易的条件已经满足,但专家顾问不再开启交易。
以下是代码的全文。
哪里算?
他们是全球性的。而且它们似乎在被检查之前不会被重置。而他们在检查前的计算 - 在哪里?修正、编译、测试--问题仍然存在--当某个条件发生时,专家顾问开仓交易,并在止盈或止损时关闭交易。在这一点上,尽管开启交易的条件已经满足,但专家顾问不再开启交易。
以下是代码的全文。
修正、编译、测试--问题仍然存在--当某个条件发生时,专家顾问开仓交易,并在止盈或止损时关闭交易。在这一点上,尽管开启交易的条件已经满足,但专家顾问不再开启交易。
以下是代码的全文。
BU重做,你不能删除市场头寸,而且由于悬挂的止损,不会再有任何头寸了 )))
让大师们评论一下BU() 函数是否需要 中断(注释出来),让alexey1979621 想想,这个函数是否在那里被调用?
另外,如果像这样使用CountTrades();函数,就等于OrdersTotal(),更简单更快捷。