Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 274

 
STARIJ:
напишите скрипт и после каждого оператора выводите на экран информацию + GetLastError()  функцией Alert() - посмотрите пример скрипта чуть выше
Как мне это сделать если у меня ошибка в коде? Мне Alert() не поможет, если скрип работать не будет!
 
Lowech:
Как мне это сделать если у меня ошибка в коде? Мне Alert() не поможет, если скрип работать не будет!

выбросьте из скрипта все, кроме первой строки и добавьте Alert.  Потом постепенно добавляйте - научитесь программировать и отлаживать

 
LRA:
Быстро у Вас получилось. Как бары будете искать? В цикле или структуру времени использовать?

    EUR USD

//+-------------------------------------------------------+
//| Проверка дней недели                       PRVERKA.mq4|
//| если первая пятница месяца была бычьей, а             |
//| 2-й понедельник медвежий - открываем сделку на продажу|
//+-------------------------------------------------------+
#property strict
void OnStart()
{
  int День=Day(), ДеньН=DayOfWeek();
  Alert("----------------------");
  int ДеньНачалаМесяца = (ДеньН-День+36) % 7;

// Если день начала месяца = 6, то число первой пятницы равно 7. Иначе 6 - день начала месяца
  int ЧислоПервойПятницы = ДеньНачалаМесяца==6?7:6-ДеньНачалаМесяца;

// Если день начала месяца < 2, то число второго понедельника равно 9 - день начала месяца. Иначе 16 - день начала месяца
  int ЧислоВторогоПонедл = (ДеньНачалаМесяца<2?9:16)-ДеньНачалаМесяца;
  Alert("ЧислоПервойПятницы = ", ЧислоПервойПятницы, "  ЧислоВторогоПонедл = ", ЧислоВторогоПонедл);

  if(ЧислоВторогоПонедл>=День)
  {
    Alert("Надо подождать числа ", ЧислоВторогоПонедл+1);
    return;   // Отключил до числа, следующего за вторым понедельником
  }

  int Продавать=0;
  for(int Бар=0;;Бар++)  //  Ищем на D1 номера баров для заданных чисел месяца
  {
    if(TimeDay(iTime(NULL,PERIOD_D1,Бар))==ЧислоВторогоПонедл)
    {
      if(iClose(NULL,PERIOD_D1,Бар)<iOpen(NULL,PERIOD_D1,Бар)) Продавать++;
      break;
    }
    if(TimeDay(iTime(NULL,PERIOD_D1,Бар))==ЧислоПервойПятницы)
      if(iClose(NULL,PERIOD_D1,Бар)>iOpen(NULL,PERIOD_D1,Бар)) Продавать++;
  }
  if(Продавать==2) bool x=OrderSend(_Symbol, OP_SELL, 0.1, Bid, 7, 0, 0);
}
 
LRA:

выбросьте из скрипта все, кроме первой строки и добавьте Alert.  Потом постепенно добавляйте - научитесь программировать и отлаживать

Ничего не получилось( но спасибо за вашу помощь.
 
int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
   int tip=OrderType();
   Добрый день. Нужна помощь, нужно чтобы если был закрыт ордер sell то следующий ордер может быть открыт только buy, хочу с помощью истории ордеров найти последний закрый ордер и узнать его тип, но у меня не выходит( кто знает что делаю не так подскажите?) кто незнает ответа который мне бы помог, чтобы код заработал, пожалуйста не пишите! 
 
Lowech:
int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
   int tip=OrderType();
   Добрый день. Нужна помощь, нужно чтобы если был закрыт ордер sell то следующий ордер может быть открыт только buy, хочу с помощью истории ордеров найти последний закрый ордер и узнать его тип, но у меня не выходит( кто знает что делаю не так подскажите?) кто незнает ответа который мне бы помог, чтобы код заработал, пожалуйста не пишите! 
Когда пробуем транслировать - выдает сообщение об ошибке: '1' - name expected. Требуется имя переменной вместо числа 1
 

Добрый вечер, ниже код, написан счетчик тиков, по идее, как я хотел тики считаются на каждом баре в цикле, на каждом новом баре счетчик обнуляется, при запуске индикатора выдает в коментах что на прошлом баре 1 тик и текущие тики начинает считать с момента

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

#property indicator_chart_window
double old_price;
double count_plus=0,count_minus=0,sum=0,psum=0;
bool Fun_New_Bar=false;
datetime Prev_Time=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   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[])
  {

  double price;
  int i=0;
  int limit; 
  double delta; 
limit=rates_total-prev_calculated;
if(prev_calculated<1) limit=rates_total-1;
for(i=limit; i>=0; i--)  
{
 if (Fun_New_Bar==false)                              
  {                                             
   
   if (Prev_Time==0) 
     {
        Prev_Time=time[i];
        Fun_New_Bar=false;
     }
   if(Prev_Time!=time[i])                        
     {
      Prev_Time=time[i];
      psum=sum;
      count_plus=0;
      count_minus=0;
      sum=0;                         
      Fun_New_Bar=false;                            
     }
    } 
  if(old_price==0) old_price=close[i];
   
    price = close[i];
    delta = price - old_price;
     
     //-- считаем "верхние" тики 
    if(delta>=0) {
      count_plus++;
               }
      
     //-- считаем "нижние" тики
    if(delta<0) {
      count_minus++;
        }
    sum=count_minus+count_plus;   
        //----
    old_price=price;
    
  Comment(StringFormat("Выводим цены\ncount_minus = %G\ncount_plus = %G\nsum = %G\npsum = %G",count_minus,count_plus,sum,psum));
}

   return(rates_total);
  }

   

 
PokrovMT5:

Добрый вечер, ниже код, написан счетчик тиков, по идее, как я хотел тики считаются на каждом баре в цикле, на каждом новом баре счетчик обнуляется, при запуске индикатора выдает в коментах что на прошлом баре 1 тик и текущие тики начинает считать с момента

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

   

Если я правильно понял проблему и сам вопрос, так на истории тики не сохраняются. Посмотри мой индикатор.

 
Alexey Viktorov:

Если я правильно понял проблему и сам вопрос, так на истории тики не сохраняются. Посмотри мой индикатор.


А ссылка не рабочая , пишет нет страницы 

 
PokrovMT5:

Добрый вечер, ниже код, написан счетчик тиков, по идее, как я хотел тики считаются на каждом баре в цикле, на каждом новом баре счетчик обнуляется, при запуске индикатора выдает в коментах что на прошлом баре 1 тик и текущие тики начинает считать с момента

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

   

возвращайте rates_total-1 или 0

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