向鉴赏家提问 - 页 8

 

下午好。在"感觉!一个有利可图的策略已经被发现了!

Rid今天早上 发布了一个EA。我下载了它,优化了一下并运行了它。

它在模拟账户(DAX)上运行没有任何问题(MT4经纪交易)。

我已经在真实账户上进行了测试。开始手数=0.01或0.1。

它不起作用!日志返回错误

2009.06.12 15:17:26 HlopMaster FDAXM9,M1: OrderSend函数的无效手数

2009.06.12 15:17:26 HlopMaster FDAXM9,M1: OrderSend()- Error OP_SELLSTOP. op 5087.50000000 sl 0.00000000 tp 0.00000000 4051

//------------------------------------------------------------------

我不明白为什么。

押金的大小允许你将某一特定的地段设定为有保留的地段。在专家顾问的代码中,对真实账户没有任何限制。

那么问题出在哪里?请指教!


 

这里是源代码。

...!!!!!!!!!!!!!!!!!! .........!!!!!!!!!!!!!!!!!

我想知道。他们什么时候会取消对代码的限制?为什么我不能在一个开放的窗口中把专家顾问的代码完整地张贴在一个专门的论坛上?

我得到的答案而不是 "READY LARGE TEXT SIZE",效果太好。

看起来MQ的工作人员都是竞争对手的 "哥萨克",他们竭尽所能地惹恼游客,阻止他们在这里提出正确的问题。



附加的文件:
hlopmaster.mq4  11 kb
 

以下是负责计算地段的代码片断。

//------------------------------------------------
double GetMaxLot()// Функция возвращает максимальный обьем 
//открытой позиции.  
{int i;double maxlot;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect( i-1, SELECT_BY_POS)==true) 
       {                                   
           if((OrderType()==OP_BUY ||OrderType()==OP_SELL)  && OrderSymbol()==Symbol()
          && maxlot<OrderLots()){ maxlot=OrderLots();}
       }
    }   
return( maxlot);
}
//-----------------------------------------------
double GetMaxLotOrder()
//Функция возвращает максимальный обьем установленных
// стоп ордеров. 
{int i;double maxlot;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect( i-1, SELECT_BY_POS)==true) 
       {                                   
           if((OrderType()==OP_BUYSTOP ||OrderType()==OP_SELLSTOP)  &&
           OrderSymbol()==Symbol() && maxlot<OrderLots())
           { maxlot=OrderLots();}
       }
    }   
return( maxlot);
}
//----------------------------------------------
int GetLastTypePos(){
   int i;datetime dt;int type;
      for( i=1; i<=OrdersTotal(); i++)         
      {
         if(OrderSelect( i-1, SELECT_BY_POS)==true) 
          {                                   
              if((OrderType()==OP_BUY ||OrderType()==OP_SELL)  && OrderSymbol()==Symbol() 
              && dt<OrderOpenTime())
              { dt=OrderOpenTime(); type=OrderType();}
          }
       }   
   return( type);
}
//-----------------------------------------------
int DopOrder(double Lots)
{
int type= GetLastTypePos();
   if( type==1){
     op=Bid+ pips*Point;if( SL>0){ sl=Bid;}else{ sl=0;}if( TP>0){ tp= op+ TP*Point;}else{ tp=0;}
     err=OrderSend(Symbol(),OP_BUYSTOP, Lots,NormalizeDouble( op,Digits),3,NormalizeDouble( sl,Digits),
NormalizeDouble( tp,Digits),"FORTRADER.RU",0,0,Red);
     if( err<0){Print("OrderSend()-  Ошибка OP_BUYSTOP. 
                op "+ op+" sl "+ sl+" tp "+ tp+" "+GetLastError());return(-1);}
   }
   if( type==0){
      op=Ask- pips*Point;if( SL>0){ sl=Ask;}else{ sl=0;}if( TP>0){ tp= op- TP*Point;}else{ tp=0;}
      err=OrderSend(Symbol(),OP_SELLSTOP, Lots,NormalizeDouble( op,Digits),3,NormalizeDouble( sl,Digits),
NormalizeDouble( tp,Digits),"FORTRADER.RU",0,0,Red);
      if( err<0){Print("OrderSend()-  Ошибка OP_SELLSTOP. 
                   op "+ op+" sl "+ sl+" tp "+ tp+" "+GetLastError());return(-1);}
   }
return(0);
}
//-------------------------------------------------
int CloseAllPos(int type)
{  int buy=1; int sell=1;
int i, b=0;int ordertiket;
 
 if( type==1)
   {
   while( buy==1)
     {
        buy=0;
        for( i=0; i<OrdersTotal(); i++)
         {
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() ){ buy=1; 
                                  OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);}
           }else{ buy=0;}
         }  
         if( buy==0){return(0);}
      } 
   }
   
   if( type==0)
   {
      while( sell==1)
     {
        sell=0;
        for( i=0; i<OrdersTotal(); i++)
         {
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol() ){ sell=1;
                                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); }
           }else{ sell=0;}
         }  
         
        if( sell==0){return(0);}
      } 
     }
   return(0);
   }
//--------------------------------------------------------


 
Rita писал(а)>>

以下是计算地段的代码片段。

专家顾问的设计不是为了在真实账户上工作。如果在其他符号上至少有一个开放的位置,那么工作逻辑就会被打破。当然,它可能会被纠正,但我,不认为这样做有什么意义。

 
谢谢你。那么为什么会返回这样一个奇怪的错误呢?
 
Rita писал(а)>>
>> 谢谢你。为什么当时会出现这样一个奇怪的错误呢?

该错误最可能发生在

   if(OrdersTotal()<1){ err= OpenNewOrders();}
   if(OrdersTotal()>0){ TrailStopOrders();}

当调用TrailStopOrders() 时。

因为已经有了其他符号的订单。在这种情况下,EA根本就没有打开。

然而,我们必须考虑逻辑问题。

看来,错误发生在其他地方。但我将无法检查它。我没有任何空缺职位。

我只能在心里检查。而我需要我的EA是属于我的。

 
你知道目前MT4中是否有一个系统可以确定今天的交易中获得或失去的点数?
 

我不太清楚你到底想要什么。看看这个设计吧。

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=45

 
丽塔,谢谢你!
 

晚上好。一个大问题出现了。并非真正的主题。而且时机非常不好。

昨晚,我在ICQ中收到了一个难以理解的链接,我不小心点击了它。

此后,我的电脑冻结了,出现了一个窗口,建议发送短信。

我重新启动了几次电脑,45-50分钟后就解锁了。

但现在我无法进入我的WM钱包了

需要某种关键的访问代码。(文件本身的钥匙是)。

我不知道该怎么做。谁-knib.是在一个类似的sititsiyu?