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

 
Aleksander:

所以...做两个脚本--把它们挂在你需要的键上--并在其中添加一个终端的全局变量--你的专家顾问将定期读取--并改变Barshift...:-)

如果可以的话--你可以通过图形对象做同样的事情......。例如,在EA的初始化过程中,会显示两个文本标记--如果其中一个丢失(在EA工作过程中,你用鼠标选择了其中一个--按下Del键)--那么你的Barsheift计数器就会受到这样或那样的指控 :-)- 恢复屏幕上的删除标记....


胡说八道,那就已经在图上追纵了,而且是相对的。
 
alsu:

顺便问一下,为什么MT不想要钩子?

保护。子类的工作。
 
Zhunko:
保护。子类的工作。
然后替代WindowProc))
 

大家好。请帮助我找到代码中的错误,我已经筋疲力尽了--我什么都做不了。

最有可能的是在最后部分。

#define MagicNum  700283
//-----
ObjectSetText
extern double  Percent        = 0.8;
extern double  TakeProfit     = 55;
extern bool    UseMM          = true;
extern int     PercentMM      = 1;
extern double  Lots           = 0.1;
//+------------------------------------------------------------------+
double GetLots()
 { 
   if (UseMM)
    {
      double a;
      a = NormalizeDouble((PercentMM * AccountFreeMargin() / 100000), 2);      
      if(a > 49.99) return(49.99);
      else if(a < 0.01)
       {
         return(0);
       }
      else return(a);
    }    
   else return(Lots);
 }
//+------------------------------------------------------------------+ 
int CalculateCurrentOrders()
 {
   int orderT = OrdersTotal(), buys = 0, sells = 0;
   //----
   for(int i = 0; i < orderT; i++)
    {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNum)
       {
         if(OrderType() == OP_BUY)  buys++;
         if(OrderType() == OP_SELL) sells++;
       }
    }
   if(buys > 0) return(buys);
   else if(sells > 0) return(-sells);
   else return(0);
 }
//+------------------------------------------------------------------+  
int start()
 {
        //==============
   int  ticket;
   //-----
   if(CalculateCurrentOrders() == 0) 
    {
      if(AccountFreeMargin() < (1000 * GetLots())) 
         {
            return(0);  
         }
      if(High[1]<High[2] && Low[1]>Low[2] && (High[1]-Low[1])/(High[2]-Low[2])<Percent)
       {
         ticket=OrderSend(Symbol(), OP_BUYSTOP, GetLots(), High[1], 3, Low[2], High[1] + TakeProfit * Point, "iB", MagicNum, 0, Green);
         ticket=OrderSend(Symbol(), OP_SELLSTOP, GetLots(), Low[1], 3, High[2], Low[1] - TakeProfit * Point, "iB", MagicNum, 0, Red);
       }
    }
 }
 
SkinnerDE:

大家好。请帮助我找到代码中的错误,我已经筋疲力尽了--我什么都做不了。

最有可能的是在最后部分。


有什么问题吗?"不编译 "还是什么?
 
顺便说一下,你忘了把手数乘以杠杆率。因此,你的GetLots()函数中的一个变量很可能是0(除非你的账户里有一百万)。
 

{'--左括号预计C:\DOCUME~1\9226~1\0016~1\Forex\MACD_N~1.MQ4(11,2)。

'{' - 预计分号 C:\DOCUME~1\9226~1\0016~1\Forex\MACD_N~1.MQ4 (11, 2)

这里是

 
//+------------------------------------------------------------------+
double GetLots()
 { 
   if (UseMM) {
      double a;
      a = NormalizeDouble((PercentMM * AccountFreeMargin() / 100000), 2);      
      if(a > 49.99) return(49.99);
      if(a < 0.01)  return(0);
      return(a);
    }    
 return(Lots);
 }
由于某种原因,塞满了括号和yelsev:-)
 
没有任何变化,同样的错误((()
 
ZS - lot = 0 - 在试图进行交易时将会导致错误...