Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1552

 
Novichokkk #:

Написал скрипт, который заполняет массив значениями тайм серии.

Если брать данные символа текущего графика, то всё нормально

А как указать другой символ инструмента?

Так выдаёт ошибку  'Symbol' - wrong parameters count


Читайте внимательнее справку по используемым функциям.

Функция Symbol() возвращает строку с именем текущего символа. Если нужен другой, то указываем его или в виде строкового литерала, либо создаём строковую переменную с нужным названием и её передаём в функцию iOpen().

void OnStart() {
   double M[10] = {0};
   for(int i = 0; i < 10; i++) {
      M[i] = iOpen("EURUSD", PERIOD_H1, i);

      Alert(M[i]);
   }
}
 
Yuriy Bykov #:

Читайте внимательнее справку по используемым функциям.

Функция Symbol() возвращает строку с именем текущего символа. Если нужен другой, то указываем его или в виде строкового литерала, либо создаём строковую переменную с нужным названием и её передаём в функцию iOpen().

Спасибо. Справку читал, но примера с указанием другого символа не нашёл. Спасибо. Ваш бы пример прям в справку ниже и засунуть.

 
Условно я хочу, чтобы мой код начинался так: if текушее время >=9:00, то  у меня открывается сделка 

Все уже почти готово, код есть частично, идея как сделать есть, а вот на реализацию ума не хватает, помогите
 
Всем привет. Помогите. Написал функцию подсчета прибыли закрытых ордеров. Не работает в тестере. Подскажите пожалуйста в чем проблема и куда смотреть нужно. 
double History_Profit(datetime startTime)
  {
   double h_profit = 0.0;
   ulong ticket;
   HistorySelect(startTime, TimeCurrent()); // Выбор истории сделок в указанном диапазоне
   int total_h = HistoryDealsTotal(); // Общее количество сделок в истории

// Цикл проходит по всем сделкам в истории
   for(int i = total_h - 1; i >= 0; i--)
     {
      ticket = HistoryDealGetTicket(i); // Получение тикета сделки
      if(ticket > 0)
        {
         // Получение символа, магического числа и прибыли сделки
         string dealSymbol = HistoryDealGetString(ticket, DEAL_SYMBOL);
         long dealMagic = (long)HistoryDealGetInteger(ticket, DEAL_MAGIC);
         double dealProfit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
         double dealCommission = HistoryDealGetDouble(ticket, DEAL_COMMISSION);
         double dealSwap = HistoryDealGetDouble(ticket, DEAL_SWAP);

         // Фильтрация сделок по символу и магическому числу
         if(dealSymbol == _Symbol && dealMagic == Magic)
           {
            // Суммирование прибыли, комиссии и свопа
            h_profit += dealProfit + dealCommission + dealSwap;
           }
        }
     }
    return (h_profit); // Возврат общей прибыли
  }
 
Robert Sadamon #:
Всем привет. Помогите. Написал функцию подсчета прибыли закрытых ордеров. Не работает в тестере. Подскажите пожалуйста в чем проблема и куда смотреть нужно. 
Привет. А переменная Magic где своё значение получает? Она глобальная?
 
Yuriy Bykov #:
Привет. А переменная Magic где своё значение получает? Она глобальная?

Конечно. Она во внешних переменных.

 
Robert Sadamon #:
Всем привет. Помогите. Написал функцию подсчета прибыли закрытых ордеров. Не работает в тестере. Подскажите пожалуйста в чем проблема и куда смотреть нужно. 

У вас всё не так, к тому-же, ордер не может быть закрыт/открыт, он может быть установлен/удалён.

Закрыта может быть позиция.

 
Vitaly Muzichenko #:

У вас всё не так, к тому-же, ордер не может быть закрыт/открыт, он может быть установлен/удалён.

Закрыта может быть позиция.

Прошу прощения за свой пережиток с MQL4. Конечно же речь идет о закрытых позициях.

Функция 

HistoryDealsTotal

возвращает именно значение закрытых позиций. Но при отладке, я вижу что в мою функцию не передается нужный тикет. (в тестере). А соответственно и информация об ордерах неверная. И до подсчета прибыли из-за неверно переданного Magic дело вообще не доходит.

 
 
  SL = (SymbolInfoDouble(_Symbol, POSITION_PRICE_OPEN) - StopLoss * _Point) ;
  TP = (SymbolInfoDouble(_Symbol, POSITION_PRICE_OPEN) + TakeProfit * _Point) ;

Друзья, помогите исправить ошибку, выдает 'SymbolInfoDouble' - no one of the overloads can be applied to the function call, что делать?


 
statist247 #:
 

Друзья, помогите исправить ошибку, выдает 'SymbolInfoDouble' - no one of the overloads can be applied to the function call, что делать?


Вот в этой таблице найдите POSITION_PRICE_OPEN

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger() , SymbolInfoDouble() и SymbolInfoString() . В качестве второго...