Любые вопросы новичков по 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' - wrong parameters count

исправил без лимит

array out of range in '_exp.mq4' (267,17)

 
MakarFX #:


ArrayResize, а не ArraySize.

 
Yurij Kozhevnikov #:

ArrayResize, а не ArraySize.

array out of range
 
MakarFX #:

Я так и сделал, но хотел понять почему массив не работал.

и кстати

не помогло (


'ArraySize' - wrong parameters count

исправил без лимит

array out of range in '_exp.mq4' (267,17)


Я потом сразу же заметил и поправил . А вы наверное скопировали не исправленный код.

А если хотите узнать, почему массив не работал и т.п. , то смотрите:  Операции с массивами

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


Я потом сразу же заметил и поправил . А вы наверное скопировали не исправленный код.
Спасибо, заработало!
 
MakarFX #:
Спасибо, заработало!

Пожалуйста! Дополнил сообщение...

 
//+------------------------------------------------------------------+
//|                                             проба по мувингу.mq4 |
///+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
extern string Moving_Averages1= "параметры индикатора";
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=0;

extern int TakeProfit= 300;
extern int StopLoss= 50;
double ma1,ma2,Lots,SL,TP;

int res;



//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    if(!OllCount()==0)
    {
     
              switch(OrderType())
          {
            case 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);
                  if((ma1-ma2)>0)
                    {
                         return;
                    }else 
                      SL=NormalizeDouble(Bid+StopLoss*Point,5);
                      TP=NormalizeDouble(Bid-TakeProfit*Point,5);
                     if(OrderClose(OrderTicket(),OrderLots(),Ask,3,Black))
                     if(OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",0,0,Red))
                    return;
             
            case 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);
                  if((ma1-ma2)<0)
                    {
                         return;
                          
                    }
                    else
                      SL=NormalizeDouble(Ask-StopLoss*Point,5);
                      TP=NormalizeDouble(Ask+TakeProfit*Point,5); 
                     if(OrderClose(OrderTicket(),OrderLots(),Bid,3,Red))
                     if(OrderSend(Symbol(),OP_SELL,Lots,Ask,3,0,0,"",0,0,Black))
                     return;
            }
         }         
  
  ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0);
  ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1);
   if((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);
            if(res<0)
             {
               Print("ошибка открытия ордера на продажу");
             }
      }
      else
         
      SL=NormalizeDouble(Ask-StopLoss*Point,5);
      TP=NormalizeDouble(Ask+TakeProfit*Point,5);
      
       if(OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Blue))
   return;
   
  }
//+------------------------------------------------------------------+
int OllCount()
{
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
   {
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
       {     
            count++;
       } 
   }        
    return(count);
   }
   //+------------------------------------------------------------------+
   //+---/|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
---------------------------------------------------------------+

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

пробовал написать свой советник по МА,вроде все делал по образцам но выдает ошибки.не пойму что не так. если можете подскажите пожалуйста.

'ma1' - some operator expected проба по мувингу.mq4 47 21

'=' - ':' colon sign expected проба по мувингу.mq4 47 24

'=' - operand expected проба по мувингу.mq4 47 24

'ma1' - some operator expected проба по мувингу.mq4 60 15

'=' - ':' colon sign expected проба по мувингу.mq4 60 18

'=' - operand expected проба по мувингу.mq4 60 18


 
Sanjakotik78 #:


У вас изначально неправильная логика работы с ордерами. Найдите простого эксперта на МА (например, в CodeBase) и пользуйтесь. Или можете переделать его под свою задумку. Относительно вашего кода в целом, там всё неправильно. Уделите больше внимания кодингу. Начните с простого. Или, как я уже сказал, найдите готовый пример.

Фрагменты кода добавляйте с помощью специальной кнопки сверху: