[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 481

 
对不起,这是什么?OrderSend功能 对我来说是有效的,而OrderClose 则是在炫耀!
 
Dimka-novitsek:
对不起,这是什么?OrderSend功能对我来说是有效的,而OrderClose则是在炫耀!
total = OrdersTotal();
  for(i=total-1;i>=0;i--)
    {
    OrderSelect(i, SELECT_BY_POS);
    type   = OrderType(); result = false;
    switch(type)
          { 
          case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), l_SlipPage, Red ); break;
          case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), l_SlipPage, Red ); break; 
          }
    if(!result)
      {
      error =  GetLastError(); 
      errorcomment = "Неудалось закрыть ордер №" + OrderTicket() + " " + Symbol() + " " + OrderType() + " " + ErrorDescript(error); 
      Print(errorcomment);
      }  
    }
这是一个关闭所有订单的例子,注意bai和sells是由bids和asks关闭的....。
 
哦,谢谢你!!!。
 
7777877:

非常感谢前面的回答。一切都在运作,几乎一切都很清楚...现在谈谈那个 "几乎"。

1.在哪一行中(见附件中的指标文件),有迹象表明根据阵列数据计算的线应该显示在客户终端窗口?

2.如果缓冲区的数量可以用字符串来声明,为什么需要 IndicatorBuffers 函数(或者说,在什么情况下应该使用它)?

提前感谢您的回答

#property indicator_buffers 3                                           //объявляем количество буферов

该字符串用于声明终端中可见的指标缓冲区的数量。

   IndicatorBuffers(4);                                                 //устанавливаем общее количество всех индикаторов, участвующих в расчете всех индикаторных линий

此字符串用于声明指标用于计算的缓冲区总数(3个可见和1个隐藏)。

如果你不需要任何额外的缓冲区,你就不需要这个字符串。

缓冲区的数量不能超过8个,应小于 indicator_buffers 属性中指定的值。这里有 一个很好的例子。


 
早晨好!告诉我,真的有必要将卖价和买价正常化吗?
NormalizeDouble(Bid, Digits)
因为我是这样的
for(int i=1; i<=OrdersTotal(); i++) {  
            if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symbol( ) )continue;      // Не наш фин. инструм
         if (OrderMagicNumber( ) !=magicnumber)continue;
         if (OrderType()==0){ BUY++; ticket=OrderTicket( );Print( "BUY++   " , BUY  ,"  ticket ",ticket);}
         if (OrderType()==1) {SELL++;ticket=OrderTicket( );Print( "SELL++   " , SELL  ,"  ticket ",ticket);}    } }
         
  
  if (strela1<strela2&&SELL==0&&BUY!=0
  ){ udalenie ();
              
   OrderSend(Symbol( ), OP_BUY, lot, Ask, 3*Point, NormalizeDouble( Bid- (stoplos*Point),Digits),   NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);           
      Print( "strela1<strela2&&BUY==0&&SELL!=0 " , GetLastError()); }
            
  if (strela1>strela2){ udalenie ();
                
   OrderSend(Symbol( ), OP_SELL, lot, Bid, 3*Point, NormalizeDouble( Ask+ (stoplos*Point),Digits),   NormalizeDouble( Ask-( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
        Print( "strela1>strela2&&SELL==0&&BUY!=0 " , GetLastError()); }
      
    if (strela1<strela2&&BUY==0&&SELL==0){    
            
           OrderSend( Symbol( ), OP_BUY, lot, Ask, 3*Point, NormalizeDouble( Bid- (stoplos*Point),Digits),   NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);  
            Print( "strela1>strela2&&BUY==0&&SELL==0   " , GetLastError()  ,"  Ask ",Ask,"   stoplos= NormalizeDouble( Bid- (stoplos*Point),Digits)  ", NormalizeDouble( Bid- (stoplos*Point),Digits),
"    takeprofit= NormalizeDouble( Ask+( takeprofit*Point),Digits) ", NormalizeDouble( Ask+( takeprofit*Point),Digits)); }
           
   if (strela1>strela2&&BUY==0&&SELL==0){  

它是这样犯规的 2012.11.01 11:31:00 AUDUSD,M15: strela1<strela2&&SELL==0&&BUY!=0 129

ERR_INVALID_PRICE 129价格不正确 多年来都没有发生过这样的事情!昨天也没有发生

 
Dimka-novitsek:
早晨好!告诉我,卖价和买价真的需要规范化吗? 因为我有这个

它是这样犯规的 2012.11.01 11:31:00 AUDUSD,M15: strela1<strela2&&SELL==0&&BUY!=0 129

ERR_INVALID_PRICE 129 价格不正确 以前从未发生过!!昨天也没有看到。

在测试器中,你不需要这样做,但在联机中,如果你想工作,你必须做DC服务器规定的任何事情。
 
Dimka-novitsek:
早晨好!卖价和买价真的需要规范化吗?

它是这样犯规的 2012.11.01 11:31:00 AUDUSD,M15: strela1<strela2&&SELL==0&&BUY!=0 129

ERR_INVALID_PRICE 129 价格不正确 多年来都没有发生过这样的事情!这也不是昨天的事


并非总是这样...

"" 买入或卖出价格不正确,可能是非正常化的价格。你需要使用RefreshRates函数在延迟5秒或更长时间后刷新数据,并再次尝试。如果错误持续存在,有必要停止所有的交易 尝试,并改变程序逻辑。"""来自文件"。

如果是在模拟或真实的情况下--这将不起作用。 你经常试图连续开出两个订单。这将在策略测试器中发挥作用。你需要在订单开放之间有一个延迟。

 

谢谢你!!!。放在正常化的...还有该死的--到底发生了什么事,!!!!!!我的头着火了。似乎比高中的几何学更容易。


 
Sepulca:


并非总是这样...

"" 买入或卖出价格不正确,可能是非正常化价格。你需要使用RefreshRates函数在延迟5秒或更长时间后刷新数据,并再次尝试。如果错误持续存在,有必要停止所有的交易尝试,并改变程序逻辑。"""来自文件"。

如果是在模拟或真实的情况下--这将不起作用。 你经常试图连续开出两个订单。这将在策略测试器中发挥作用。在开放的订单之间设置一个延迟。

"不总是 "是什么意思?该代码必须是通用的,也就是说,它必须与任何一家经纪公司合作(无论报价中的数字是多少,以及经纪公司服务器拒绝及时执行交易指令 的各种技巧)!
 
还有,阿片剂如果有问题!!!。