Ваши вопросы по языку MQL4

Всем добрый день.
Скажите, как можно оптимизировать параметры индикатора? Или надо делать простейшего эксперта, и через него оптимизировать? Интересно, бывают такие шаблоны экспертов,к которым можно было прикрепить индикатор и оптимизировать?
 
Всем добрый день.
Скажите, как можно оптимизировать параметры индикатора? Или надо делать простейшего эксперта, и через него оптимизировать? Интересно, бывают такие шаблоны экспертов,к которым можно было прикрепить индикатор и оптимизировать?

Да, через эксперта. Да, есть такой, поищите
 
Привет, подскажите пожалуйста как прописать алерт после закрытия бара.
 
Добрый день.
У меня советник выдает на "табло" информацию. В коде прописано так:
TEX2="MA4("+DoubleToStr(MAperiod4,0)+"-TF2("+DoubleToStr(ma4TF2)+"): "+gtex(S7)
на "табло" печатает так:
МА4(5-TF2(60.00000000):Селл
Подскажите, пжл, что надо поправить, чтобы появилась скобка у МА4(5 и таймфрейм(переменная ma4TF2) печатался как целое число, чтобы на "табло" получилось так:
МА4(5)-TF2(60):Селл
 
Добрый день.
У меня советник выдает на "табло" информацию. В коде прописано так:
TEX2="MA4("+DoubleToStr(MAperiod4,0)+"-TF2("+DoubleToStr(ma4TF2)+"): "+gtex(S7)
на "табло" печатает так:
МА4(5-TF2(60.00000000):Селл
Подскажите, пжл, что надо поправить, чтобы появилась скобка у МА4(5 и таймфрейм(переменная ma4TF2) печатался как целое число, чтобы на "табло" получилось так:
МА4(5)-TF2(60):Селл
Сравни
DoubleToStr(MAperiod4,0)
DoubleToStr(ma4TF2) ??? Где второй параметр функции отвечающий за разрядность?
 
Здравствуйте!
Индикатор не рисует стрелки в реальном времени при соблюдении условий. Стрелки появляются только если переключить ТФ либо удалить и снова поставить на график.
Компилятор ошибок и предупреждений не даёт. Где мой косяк понять не могу.

PHP:
//+------------------------------------------------------------------+
//|                                                    RsiArrows.mq4 |
//|                                                   Copyright 2015 |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015"
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 clrGreen
#property indicator_color2 clrRed

double ArrowUp[];
double ArrowDn[];
double Rsi[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorBuffers(3);
  
   SetIndexBuffer(0,Rsi);
   SetIndexBuffer(1,ArrowUp);
   SetIndexBuffer(2,ArrowDn);
   
   SetIndexStyle(0,DRAW_NONE,EMPTY);
   SetIndexStyle(1,DRAW_ARROW,EMPTY);
   SetIndexArrow(1,233);
   SetIndexStyle(2,DRAW_ARROW,EMPTY);
   SetIndexArrow(2,234);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i, limit;
   
   limit = rates_total - prev_calculated - 1;
   if(rates_total < 1) return(0);
   
   for(i=0;i<limit;i++)
   {
    Rsi[i] = iRSI(Symbol(),0,4,PRICE_CLOSE,i);
   }
   
   for(i=0;i<limit;i++)
     {
      if(Rsi[i+1] <= 10) ArrowUp[i+1] = low[i+1];
      if(Rsi[i+1] >= 90) ArrowDn[i+1] = high[i+1];
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Здравствуйте!
Индикатор не рисует стрелки в реальном времени при соблюдении условий. Стрелки появляются только если переключить ТФ либо удалить и снова поставить на график.
Компилятор ошибок и предупреждений не даёт. Где мой косяк понять не могу.

PHP:
//+------------------------------------------------------------------+ u
//|                                                    RsiArrows.mq4 |
//|                                                   Copyright 2015 |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015"
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 clrGreen
#property indicator_color2 clrRed

double ArrowUp[];
double ArrowDn[];
double Rsi[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorBuffers(3);
  
   SetIndexBuffer(0,Rsi);
   SetIndexBuffer(1,ArrowUp);
   SetIndexBuffer(2,ArrowDn);
   
   SetIndexStyle(0,DRAW_NONE,EMPTY);
   SetIndexStyle(1,DRAW_ARROW,EMPTY);
   SetIndexArrow(1,233);
   SetIndexStyle(2,DRAW_ARROW,EMPTY);
   SetIndexArrow(2,234);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i, limit;
   
   limit = rates_total - prev_calculated - 1;
   if(rates_total < 1) return(0);
   
   for(i=0;i<limit;i++)
   {
    Rsi[i] = iRSI(Symbol(),0,4,PRICE_CLOSE,i);
   }
   
   for(i=0;i<limit;i++)
     {
      if(Rsi[i+1] <= 10) ArrowUp[i+1] = low[i+1];
      if(Rsi[i+1] >= 90) ArrowDn[i+1] = high[i+1];
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
Измените расчет переменной limit
limit = rates_total - prev_calculated;
if(prev_calculated == 0)
limit--;

Перед вторым for
Еще раз
if(prev_calculated == 0)
limit--;
 
Последнее редактирование:
у меня что то только крсные стрелки показывает.

Можете исправить?
Индексы надо поправить. Чтоб 0 и 1 были стрелки, а 2й - невидимый )
У Вас возможно фон черный, поэтому не заметили что цвет не назначен стрелке
Код:
//+------------------------------------------------------------------+ u
//|                                                    RsiArrows.mq4 |
//|                                                   Copyright 2015 |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015"
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 clrGreen
#property indicator_color2 clrRed

double ArrowUp[];
double ArrowDn[];
double Rsi[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorBuffers(3);
  
   SetIndexBuffer(2,Rsi);
   SetIndexBuffer(0,ArrowUp);
   SetIndexBuffer(1,ArrowDn);
   
   SetIndexStyle(2,DRAW_NONE,EMPTY);
   SetIndexStyle(0,DRAW_ARROW,EMPTY);
   SetIndexArrow(0,233);
   SetIndexStyle(1,DRAW_ARROW,EMPTY);
   SetIndexArrow(1,234);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i, limit;
   
   limit = rates_total - prev_calculated;
   if(prev_calculated == 0) 
           limit--;
   if(rates_total < 1) return(0);
   
   for(i=0;i<limit;i++)
   {
    Rsi[i] = iRSI(Symbol(),0,4,PRICE_CLOSE,i);
   }
     if(prev_calculated == 0) 
           limit--;
  
   for(i=0;i<limit;i++)
     {
      if(Rsi[i+1] <= 10) ArrowUp[i+1] = low[i+1];
      if(Rsi[i+1] >= 90) ArrowDn[i+1] = high[i+1];
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Господа программисты помогите ! Нужно определить профит последнего закрытого ордера на покупку или на продажу. Из того что нашел в инете собрал функцию к примеру на покупку, посмотрите пожалуйста, буде работать моя писанина или нет ? ошибок компилятор не выдает, но уверенности что функция вернет нужное нет. За ранее СПАСИБО
double historyBuy()
{
double profit = 0;
datetime time = 0;
for(int i = OrdersHistoryTotal();i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
if(OrderSymbol() == Symbol()&& OrderMagicNumber () == Magic && OrderType() == OP_BUY)
{
if(time<OrderCloseTime())
{
time=OrderCloseTime();

profit = OrderProfit();
}
}
}
}

return(profit);
}
 
Господа программисты помогите ! Нужно определить профит последнего закрытого ордера на покупку или на продажу. Из того что нашел в инете собрал функцию к примеру на покупку, посмотрите пожалуйста, буде работать моя писанина или нет ? ошибок компилятор не выдает, но уверенности что функция вернет нужное нет. За ранее СПАСИБО
double historyBuy()
{
double profit = 0;
datetime time = 0;
for(int i = OrdersHistoryTotal();i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
if(OrderSymbol() == Symbol()&& OrderMagicNumber () == Magic && OrderType() == OP_BUY)
{
if(time<OrderCloseTime())
{
time=OrderCloseTime();

profit = OrderProfit();
}
}
}
}

return(profit);
}
Не проверял, но выглядит правильно.
Возможно по смыслу не хватает еще ordercommission && orderswap
 
Может кто подскажет код? Нужно запретить советнику торговать при достижении определенного процента прибыли и чтоб это ограничение действовало до начала следующего месяца, и потом вновь повторялось.
 
Народ...как оживить советник на внешних индюках, на АВТОНОМНОМ ГРАФИКЕ (или на нестандартном таймфрейме), кто знает?
 
Может кто подскажет код? Нужно запретить советнику торговать при достижении определенного процента прибыли и чтоб это ограничение действовало до начала следующего месяца, и потом вновь повторялось.


Ты вопрос реши, где до следующего месяца флаг "события" хранить будешь, или другие его параметры, время последнего события например, и проверяй как сова или терминал работать будет.
Проще в переменных терминала, там, если что, ручками подправить можно будет, вдруг жадность победит. :laugh:
 
Ты вопрос реши, где до следующего месяца флаг "события" хранить будешь, или другие его параметры, время последнего события например, и проверяй как сова или терминал работать будет.
Проще в переменных терминала, там, если что, ручками подправить можно будет, вдруг жадность победит. :laugh:

Разве нельзя без всяких заморочек решить этот вопрос? Закрылась сделка, проверили прибыль, если >=X%, то не открывать сделки до первого числа следующего месяца.
Индикатор i-Profit, к примеру, показывает прибыль за день, неделю, месяц.
 
Разве нельзя без всяких заморочек решить этот вопрос? Закрылась сделка, проверили прибыль, если >=X%, то не открывать сделки до первого числа следующего месяца.
Индикатор i-Profit, к примеру, показывает прибыль за день, неделю, месяц.

Вы не можете найти исходный код этого индикатора, чтобы просто вставить в свой советник?
 
Вы не можете найти исходный код этого индикатора, чтобы просто вставить в свой советник?

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

Вложения

Разве нельзя без всяких заморочек решить этот вопрос? Закрылась сделка, проверили прибыль, если >=X%, то не открывать сделки до первого числа следующего месяца.
Индикатор i-Profit, к примеру, показывает прибыль за день, неделю, месяц.
Можно без заморочек - торгуй руками.
Хочешь совой, собери и отдай ей всю необходимую для её работы инфу и наслаждайся созерцанием результата.

PS
Чужой код вставлять в чужой советник, не понимая, как от работает, дело не благодарное.
Про сохранение, обновление, удаление, тоже придётся позаботиться.
 
Последнее редактирование:
PS
Чужой код вставлять в чужой советник, не понимая, как от работает, дело не благодарное.
Про сохранение, обновление, удаление, тоже придётся позаботиться.

Чужой код находится в свободном доступе (хотя я его показал как пример), а советник мой и я отлично знаю как он работает, моральные принципы не затронуты.

Индикатор ж как-то это делает, считает прибыль за различные промежутки времени. С процентами у него беда, но с пунктами показывает точно, поэтому лучше даже сделать ограничение по количеству пунктов в месяц.
Я не программист, поэтому прошу помощи, а рассуждения о сохранении, обновлении и тд. для меня как пустой звук.
 
Чужой код находится в свободном доступе (хотя я его показал как пример), а советник мой и я отлично знаю как он работает, моральные принципы не затронуты.

Индикатор ж как-то это делает, считает прибыль за различные промежутки времени. С процентами у него беда, но с пунктами показывает точно, поэтому лучше даже сделать ограничение по количеству пунктов в месяц.
Я не программист, поэтому прошу помощи, а рассуждения о сохранении, обновлении и тд. для меня как пустой звук.

Настрой историю в терминале, и первый параметр в индикаторе и не будет беды.
 

Посмотрели (409) Посмотреть

Отслеживают (499) Посмотреть

Назад
Верх