Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 159

 

Здравствуйте УВАЖАЕМЫЕ ПРОГРАММИСТЫ прошу вашей помощи подправить данный советник.



1.Открытие ордеров автоматически. 
2.При достижении + открывает ордер в туже сторону с начальным лотом.
3.При достижении - переворачивает ордер (открывает ордер в сторону в которую был получен - ).
Файлы:
 
Здравия желаю, коллеги!
Подскажите, может кто сталкивался с данной проблемой:
1) Тестил в МТ4 сооветника. В журнале появились ошибки Error to order modify1. Что является причиной ошибки Error to order modify1 и как её исправить?
2) Не получается установить и запустить советника. Переношу советника в окно графика и он либо не закрепляетя в правом верхнем углу, либо закрепляется, но не запускается. Вместо колобка, прямоугольник! (см. скрин)
3) Как правильно устанавливать МТ4 в ОС РОСА (люникс)? У меня МТ4 установлен на c/Program Files (x86)/MT4 . Нужно ли копировать файлы из c/Program Files (x86)/MT4 в c/users/xxl/AppData/ и в _c/users/xxl/Application Data/MetaQuotes/? Если да, то какие файлы помещать в папки LocalLow и Roaming и какие в папки Terminal и WebInstall?
Благодарю за развёрнутый ответ! )

 

Привет всем. Суть в следующем. Есть точка пересечения аллигатора N-ым баром. Нужно найти угол между аллигатором и, например, лоу 1-ого бара от точки данного пересечения. Трудность в том, что имеем две не совместимые величины - количество баров и цену.  Хотел, как предлагалось кем-то, плясать от размера клетки на графике. Но если от изменения масштаба количество баров в клетке пропорционально, то у цены нет такой пропорции. 

Исходя из выше изложенного у меня два вопроса: 

1. Может кто встречал или знает решение данной задачи.

2. Работает ли советник с каким-то определенным масштабом графика, или чисто с ценой?

 
Alexander Dubovik:

Еще замечание разработчикам.

Документация на языковую конструкцию typedef (как, собственно, и сама работа typedef) вызывает недоумение.

typedef char My_Char; - не компилируется.

Из документации: "Ключевое слово typedef в языке C++ позволяет создавать пользовательские типы данных .....".  Простите, но ЗАЧЕМ делать в документации на MQL отсылку к C++, если фактически в MQL реализовано только объявление указателей на функцию?

В MQL4/5 typedef кастрирован и служит только для объявления указателей на функции, больше ни к чему не пригоден.


typedef int (*TFunc)(int,int);

int add(int x,int y) 
{
    return(x+y); 
}

void OnStart()
{
    TFunc pfunc = add;   
    Print(pfunc(4,5));    
}
 
Alex Pirate:

Привет всем! 

простой советник, вообще простой,что то не так, выдаёт ошибку... хочу потом прицепить трал к нему а он даже не открывает...  пишет - return value of 'OrderSend' should be checked

почему он проверять ещё отправляет??? что не так то??? похоже что программисты и те кто шарит задрались тут помогать всем.... жаль ((( 

https://translate.google.ru/?hl=ru&tab=TT#en/ru/return%20value%20of%20'OrderSend'%20should%20be%20checked

Google Переводчик
  • translate.google.ru
Бесплатный сервис Google позволяет мгновенно переводить слова, фразы и веб-страницы с английского на более чем 100 языков и обратно.
 
Alex Pirate:

Привет всем!


 
Artyom Trishkin:


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

 
Alex Pirate:

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

 
Artyom Trishkin:

extern int    MA_1_Period   = 22;
extern int    MA_1_MAShift  = 1;
extern int    MA_1_Method   = 1;
extern int    MA_1_Price    = 1;
extern int    MA_1_Shift    = 0;

extern int    MA_2_Period   = 55;
extern int    MA_2_MAShift  = 1;
extern int    MA_2_Method   = 1;
extern int    MA_2_Price    = 1;
extern int    MA_2_Shift    = 0;

extern int    MA_3_Period   = 163;
extern int    MA_3_MAShift  = 1;
extern int    MA_3_Method   = 1;
extern int    MA_3_Price    = 1;
extern int    MA_3_Shift    = 0;

extern double lot           = 0.1;
extern int    TP            = 60;
extern int    SL            = 40;
extern int    Slippage      = 5;
extern int    Magic         = 888;

int timeprev;

//+------------------------------------------------------------------+
int init()
{ 
   if (Digits == 3 || Digits == 5)
   {
     TP           *= 10;
     SL           *= 10;
     Slippage     *= 10;
     
   }

   return(0); 
}
//+------------------------------------------------------------------+
int deinit() 
{
   return(0);
}
//+------------------------------------------------------------------+

int start()
{
   if (timeprev == Time[0]) return(0);
   timeprev = Time[0];
   
   double MA_1_1 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   double MA_1_2 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   
   double MA_2_1 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   double MA_2_2 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   
   double MA_3_1 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
   double MA_3_2 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
     
 //+------------------------------------------------------------------+  
 // покупаем
 
   if (CountBuy() + CountSell() == 0 && MA_1_1 > MA_1_2 && MA_2_1 > MA_2_2 && MA_3_1 > MA_3_2 )
   
      {
         OrderSend(Symbol(), OP_BUY , lot, Ask, Slippage, SL, TP, "", Magic,0, Green);
      }
// продаём
   
   if (CountBuy() + CountSell() == 0 && MA_1_1 < MA_1_2 && MA_2_1 < MA_2_2 && MA_3_1 < MA_3_2 )
   
      {
         OrderSend(Symbol(), OP_SELL, lot, Bid, Slippage, SL, TP, "", Magic,0, Red);
      }
          
   return(0);
}
//+------------------------------------------------------------------+
int CountBuy()
{
   int count = 0;
   
   for (int i = OrdersTotal() - 1; i >= 0; i --)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() ==  Magic && OrderType() == OP_BUY)
           count++;
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
   int count = 0;
   
   for (int i = OrdersTotal() - 1; i >= 0; i --)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() ==  Magic && OrderType() == OP_SELL)
           count++;
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
 
Alex Pirate:

Что с чем сравниваете?

   double MA_1_1 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   double MA_1_2 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   
   double MA_2_1 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   double MA_2_2 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   
   double MA_3_1 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
   double MA_3_2 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
     
 //+------------------------------------------------------------------+  
 // покупаем
 
   if (CountBuy() + CountSell() == 0 && MA_1_1 > MA_1_2 && MA_2_1 > MA_2_2 && MA_3_1 > MA_3_2 )

Если 0 > 0 и 0 > 0 и 0 > 0

Причина обращения: