[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 161

 
Mopo3:

ну да, это называется "учите матчасть", т.е. язык :)


НУ я помню что там принцип основан на том,чтобы были таймы 1мин. а потом что бы скажем посмотреть период за 20мин. данные берутся как раз по 20 барам по 1 минуте....

смысл такой...то я не замарачивался по этому поводу...))

 

Народ! Посмотрите на смену тренда МА, мож кто поможет? https://www.mql5.com/ru/forum/131277/page159

 
если не трудно подскажите какой период надо установить для уровней мюррея чтоб он не врал или для каждого ТФ свой период. Если свой то какие
 

Доброго времени суток!!!!!

Подскажите, где промах...... при компиляции ошибок нет но не торгует в журнале тестера ошибка eSvechi+MA AUDUSD,H1: OrderSend error 131 а что к чему - непойму

//+------------------------------------------------------------------+
//|                                                   eSvechi+MA.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


//---- input parameters
extern int       MA=13;
extern double    Lots=0.01;
extern int       StopLoss=100;
extern int       TakeProfit=100;
extern int       MagicNumber=501;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
bool CheckOrders(int Type)
{
 bool Result=True;
 for(int i=0;i<OrdersTotal();i++)
  if(OrderSelect(i,SELECT_BY_POS))
   if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol())
      if(OrderType()==Type)
        {
         if(Type==OP_BUY)
           if(!OrderClose(OrderTicket(),OrderLots(),Bid,0))
             Result=False;
         if(Type==OP_SELL)
           if(!OrderClose(OrderTicket(),OrderLots(),Ask,0))
             Result=False;
         } 
        else Result=False;
 return(Result); 
}

// Проверяем наличие закрытой на текущей свече позиции типа Type. Если есть, то возвращает False  
bool CheckExists(int Type)  
{
 bool Result=True;
 for(int i=OrdersHistoryTotal()-1; i>=0;i--)
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol() && OrderCloseTime() >= Time[0] && OrderType() == Type)
    {
     Result=False;
     break;
     }
 return(Result); 
 }
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

        // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

        //Рассчитываем значения средних на 0-ом и 1-м баре
    double MA_0 =iMA(NULL, 0, MA,0,1,1,0);    
    double MA_1 =iMA(NULL, 0, MA,0,1,1,1);
    
 //-------------открытие позиции Buy покупка-----------------
 //сравниваем на 1-м баре цену закр. и откр. между собой и с МА, на 0-м баре откр. меньше МА закр. больше МА
    if(
       (Open[0+1]<Close[0+1])&& 
       (Close[0+1]<MA_1)&&
       (Open[0]<MA_0)&&
       (Close[0]>MA_0)
      )
     if(CheckOrders(OP_SELL) && CheckExists(OP_BUY))
      {
       if(StopLoss <= StopLevel+Spread)
         double SL = 0;
        else
         SL = Ask - StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         double TP = 0;
        else
         TP = Ask + TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
    //-------------------Конец блока покупки -------------------
    //-------------Открытие позиции Sell продажа----------------   
    if(
       (Open[0+1]>Close[0+1])&& 
       (Close[0+1]>MA_1)&&
       (Open[0]>MA_0)&&
       (Close[0]<MA_0)
      )
     if(CheckOrders(OP_BUY) && CheckExists(OP_SELL))
      {
       if(StopLoss <= StopLevel+Spread)
         SL = 0;
        else
         SL = Bid + StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         TP = 0;
        else
         TP = Bid - TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//-----------------конец блока продажи ----------------------
   return(0);
  }
//+------------------------------------------------------------------+

ERR_INVALID_TRADE_VOLUME 131 Неправильный объем, ошибка в грануляции объема. Необходимо прекратить все попытки торговых операций и изменить логику программы.

Вроде логика правильная.............................................

 
igrok2008:

Доброго времени суток!!!!!

Подскажите, где промах...... при компиляции ошибок нет но не торгует в журнале тестера ошибка eSvechi+MA AUDUSD,H1: OrderSend error 131 а что к чему - непойму

ERR_INVALID_TRADE_VOLUME 131 Неправильный объем, ошибка в грануляции объема. Необходимо прекратить все попытки торговых операций и изменить логику программы.

Вроде логика правильная.............................................


Lots должен быть не меньше (+ вроде как кратен) MarketInfo(Symbol(), MODE_MINLOT);

У многих трейдерский программ это 0.1, а у Вас стоит в 10 раз меньше

 
ilunga:


Lots должен быть не меньше (+ вроде как кратен) MarketInfo(Symbol(), MODE_MINLOT);

У многих трейдерский программ это 0.1, а у Вас стоит в 10 раз меньше

И ВСЁ !!!! Вся загвоздка в этом!!!!!!!!! .......... Ну а как же маленькие депо 5 -10 баксов???????
 
ilunga:


Lots должен быть не меньше (+ вроде как кратен) MarketInfo(Symbol(), MODE_MINLOT);

У многих трейдерский программ это 0.1, а у Вас стоит в 10 раз меньше

изменил лот на 0,1 всё равно не торгует
 
igrok2008:
изменил лот на 0,1 всё равно не торгует


запустил на InterBank, все работает даже с 0.01

Alpari на 0.01 выдает ошибку 131-ю, при 0.1 работает

 
ilunga:


запустил на InterBank, все работает даже с 0.01

Alpari на 0.01 выдает ошибку 131-ю, при 0.1 работает

именно Alpari на демо счёте и тестируется НЕ ТОРГУЕТ!!!!! терминал МТ4 build 229........ подскажите!!!!!!
 
igrok2008:

Доброго времени суток!!!!!

Подскажите, где промах...... при компиляции ошибок нет но не торгует в журнале тестера ошибка eSvechi+MA AUDUSD,H1: OrderSend error 131 а что к чему - непойму

ERR_INVALID_TRADE_VOLUME 131 Неправильный объем, ошибка в грануляции объема. Необходимо прекратить все попытки торговых операций и изменить логику программы.

Вроде логика правильная.............................................

нужно выполнить нормализацию стоплосса, тейка и цены открытия с помощью функции NormalizeDouble
Причина обращения: