新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 899

 
下午好。我需要帮助,因为我自己不知道如何编码、编写或修改指标。我将会很简短。

CrossUp从0.00000到-1.00000
CrossDown从-1.00000到0.00000时,你能不能添加一个声音通知(警报)。
请帮助,我将永远感激。谢谢你。

附加的文件:
 
S.P.I:
你好。我需要帮助,因为我自己对编码、写作或改变指标一窍不通。我将会很简短。
你能不能增加一个声音通知(警报),当
CrossUp从0.00000到-1.00000
CrossDown从-1.00000到0.00000
请帮助我,我将永远感激不尽。谢谢你。

错误的格式,你需要mq4

 
Alekseu Fedotov:

错误的格式,你需要mq4

你也可以用ex4做这件事--进入它的资源并读取缓冲区。

 
Artyom Trishkin:

用ex4也可以完成这个任务--到资源和读取缓冲区。

标准指标 通过iCustom()调用,我认为这将需要15-20分钟,让有2个指标文件

 
Igor Makanu:

标准指标 通过iCustom()调用,我想这需要15-20分钟,如果有2个指标文件的话

资源中也有iCustom(),但有一个文件。

我有两个文件 - 让它成为两个,让它成为一个。而且有同样多的工作。

 
Alekseu Fedotov:

这是正确的,计算一下。

是的,但它已经是利润的一个百分比,必须做一些构造,使变量drawdown在drawdown时被赋予一个值,如果头寸处于盈利状态,值drawdown=0。
 
nalyk:
是的,但它已经是利润的一个百分比,必须发明某种结构,使变量drawdown在drawdown时被赋予一个值,如果头寸处于盈利状态,那么值drawdown=0。
   double drawdown=(AccountProfit()<0 ? AccountProfit()*100/AccountBalance() : 0);
   Comment("текущая просадка  = ",drawdown);
 

你好,你能告诉我如何正确写出上一个分形的开仓单吗?我试图这样做,但在测试器中打不开。

void CheckForOpen()
{
  
   double hai_candle = iHigh(NULL,TimeCandleTrade,0);
   double low_candle = iLow(NULL,TimeCandleTrade,0); 
   fr_down = iFractals (Symbol(), 0, MODE_LOWER,3);
   fr_up = iFractals(Symbol(),0,MODE_UPPER,3);
   double SL, TP;
  
 if (BuyCount()==0 )
   {
  
    if (fr_down>0 && low_candle<Low[fr_down])
   {
     
      SL = NormalizeDouble(Ask - StopLoss*Point,Digits);
      TP = NormalizeDouble(Ask + TakeProfit*Point,Digits);
      ticket = OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP,NULL,magik,0,CLR_NONE);
      if (ticket <0)
       Print ("Не удалось открыть ордер на покупку",GetLastError());
   }
   
   }

int BuyCount()
  {
  int count = 0;
  for (int i=OrdersTotal()-1;i>=0;i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES) == true && 
        OrderMagicNumber()== magik &&                        
        OrderType() == OP_BUY )                       
        {
        count ++;
        }
    }
}

 
Artyom Trishkin:
谢谢你。
 
nelenaby:

你好,你能告诉我如何正确写出上一个分形的开仓单吗?我试图这样做,但在测试器中打不开。

你要找的是第三条杠上的分形,它可能不在那里。寻找循环中的第一个分形。

 
 for (int s=2; s<100; s++) 
     {
    fr_down=iFractals(Symbol(), 0, MODE_LOWER, s);
    if (f!=0) break;
     }
原因: