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

 
MakarFX #:

但你为什么需要这个阵列,我还是不明白......

int TradeSignal() 
  {
   int limit, i, sig=-1;
   double Ma_curr, Ma_prev, value;
   limit=MaPeriod*3;
   for(i=limit;i>=0;i--)
     {
      Ma_curr=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,i);
      Ma_prev=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,i+1);
      value=Ma_curr-Ma_prev;
      if(value>0) sig=0;
      if(value<0) sig=1;
     }
   return(sig);
  }

没有它,该功能也能工作。

 
Mihail Matkovskij #:

但你为什么需要这个阵列,我还是不明白......

没有它,该功能也能工作。

而且这里不需要一个循环

int TradeSignal() 
  {
   int sig=-1;
   double Ma_curr, Ma_prev, value;

   Ma_curr=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,0);
   Ma_prev=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,1);
   value=Ma_curr-Ma_prev;
   if(value>0) sig=0;
   if(value<0) sig=1;

   return(sig);
  }
 
Mihail Matkovskij #:

而且不需要一个循环。

我做了,但我想了解为什么阵列不工作。

顺便说一下

ArraySize(Buffer,limit);

没有帮助(


'ArraySize' - 错误的参数计数

无限改正

在'_exp.mq4'中数组超出范围(267,17)

 
MakarFX #:


ArrayResize,而不是ArraySize。

 
Yurij Kozhevnikov #:

ArrayResize,而不是ArraySize。

阵列超出范围
 
MakarFX #:

我做了,但想了解为什么阵列不工作。

顺便说一下

没有帮助(


'ArraySize' - 错误的参数计数

无限改正

在'_exp.mq4'中数组超出范围(267,17)


我注意到了,并在之后立即纠正了。而且你一定是复制了未更正的代码。

如果你想知道为什么阵列不工作,等等,请参阅:操作。见:阵列操作

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.11.28
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Mihail Matkovskij #:


我注意到了,并在之后立即纠正了。而且你一定是复制了未更正的代码。
谢谢你,它正在工作!
 
MakarFX #:
谢谢你,它起作用了!

不客气!完成的信息...

 
//+------------------------------------------------------------------+
//| 审判由muving.mq4 | 审理
///+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#财产版本 "1.00"
#属性严格
extern string Moving_Averages1= "指标参数"。
外置 int MA_Period=13;
外置 int MA_Shift=0;
外来的int MA_Method=0。

外部int int TakeProfit= 300;
外来的int StopLoss= 50;
双重ma1,ma2,Lots,SL,TP。

int res;



//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED)。
}
//+------------------------------------------------------------------+
//|专家去初始化函数|
//+------------------------------------------------------------------+
空白的OnDeinit(const int reason)。
{
}
//+------------------------------------------------------------------+
//|专家勾选功能|
//+------------------------------------------------------------------+
空白的OnTick()
{
if(!OllCount()==0)
{
switch(OrderType())
{
例子 OP_BUY
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0)。
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1)。
如果((ma1-ma2)>0)
{
返回。
否则
SL=NormalizeDouble(Bid+StopLoss*Point,5)。
TP=NormalizeDouble(Bid-TakeProfit*Point,5)。
如果(OrderClose(OrderTicket(),OrderLots(),Ask,3,Black))
如果(OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,",0,0,Red))
返回。
案例 OP_SELL
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0)。
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1)。
如果((ma1-ma2)<0)
{
返回。
}
否则
SL=NormalizeDouble(Ask-StopLoss*Point,5)。
TP=NormalizeDouble(Ask+TakeProfit*Point,5)。
如果(OrderClose(OrderTicket(),OrderLots(),Bid,3,Red))
如果(OrderSend(Symbol(),OP_SELL,Lots,Ask,3,0,0,",0,0,Black))
返回。
}
}
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0)。
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1)。
如果((ma1-ma2)<0)
{
SL=NormalizeDouble(Bid+StopLoss*Point,5)。
TP=NormalizeDouble(Bid-TakeProfit*Point,5)。
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,",0,0,Red)。
如果(res<0)
{
Print("Sell order open error");
}
}
否则
SL=NormalizeDouble(Ask-StopLoss*Point,5)。
TP=NormalizeDouble(Ask+TakeProfit*Point,5)。
如果(OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,",0,0,Blue))
返回。
}
//+------------------------------------------------------------------+
int OllCount()
{
int count=0。
for(int i=OrdersTotal()-1;i>=0;i--)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)。
{
count++。
}
}
return(count)。
}
//+------------------------------------------------------------------+
//+----/| Copyright 2021, MetaQuotes Software Corp.
---------------------------------------------------------------+

//+------------------------------------------------------------------+

我试着写我自己的硕士生导师,我遵循了所有的例子,但它一直返回错误。

'ma1' - 一些操作者预期 审判由muving.mq4 47 21

'=' - ':' 冒号预期 mq4 muving trial 47 24

'=' - 预期的操作数 muving.mq4 47 24

'ma1' - 预期的一些操作者 muving.mq4 60 15

'=' - ':' 冒号预期 muving.mq4 60 18

'=' - 预期的操作数 muving.mq4 60 18


 
Sanjakotik78 #:


你的订单逻辑从一开始就错了。在MA上找到一个简单的EA(例如CodeBase) 并使用它。或者你可以根据你自己的想法来修改它。关于你的整个代码,那里的一切都错了。更加注意编码。从一个简单的开始。或者,就像我说的,找一个现成的例子。

使用顶部的特殊按钮添加代码片断。


原因: