Вопросы от "чайника" - страница 274

 
А не работает только закрывание?
 
да. а открывается просто чудесно.
 

А попробуйте перед OrderSend вставить проверку ордера на корректность:

//---- Проверка торгового запроса на корректность
if(!OrderCheck(request,check))
{
 ("Ошибка проверки ордера OrderCheck(): ",ResultRetcodeDescription(check.retcode));
}



//+------------------------------------------------------------------+
//| возврат стрингового результата торговой операции по его коду     |
//+------------------------------------------------------------------+
string ResultRetcodeDescription(int retcode)
  {
   string str;
//----
   switch(retcode)
     {
      case TRADE_RETCODE_REQUOTE: str="Реквота"; break;
      case TRADE_RETCODE_REJECT: str="Запрос отвергнут"; break;
      case TRADE_RETCODE_CANCEL: str="Запрос отменен трейдером"; break;
      case TRADE_RETCODE_PLACED: str="Ордер размещен"; break;
      case TRADE_RETCODE_DONE: str="Заявка выполнена"; break;
      case TRADE_RETCODE_DONE_PARTIAL: str="Заявка выполнена частично"; break;
      case TRADE_RETCODE_ERROR: str="Ошибка обработки запроса"; break;
      case TRADE_RETCODE_TIMEOUT: str="Запрос отменен по истечению времени";break;
      case TRADE_RETCODE_INVALID: str="Неправильный запрос"; break;
      case TRADE_RETCODE_INVALID_VOLUME: str="Неправильный объем в запросе"; break;
      case TRADE_RETCODE_INVALID_PRICE: str="Неправильная цена в запросе"; break;
      case TRADE_RETCODE_INVALID_STOPS: str="Неправильные стопы в запросе"; break;
      case TRADE_RETCODE_TRADE_DISABLED: str="Торговля запрещена"; break;
      case TRADE_RETCODE_MARKET_CLOSED: str="Рынок закрыт"; break;
      case TRADE_RETCODE_NO_MONEY: str="Нет достаточных денежных средств для выполнения запроса"; break;
      case TRADE_RETCODE_PRICE_CHANGED: str="Цены изменились"; break;
      case TRADE_RETCODE_PRICE_OFF: str="Отсутствуют котировки для обработки запроса"; break;
      case TRADE_RETCODE_INVALID_EXPIRATION: str="Неверная дата истечения ордера в запросе"; break;
      case TRADE_RETCODE_ORDER_CHANGED: str="Состояние ордера изменилось"; break;
      case TRADE_RETCODE_TOO_MANY_REQUESTS: str="Слишком частые запросы"; break;
      case TRADE_RETCODE_NO_CHANGES: str="В запросе нет изменений"; break;
      case TRADE_RETCODE_SERVER_DISABLES_AT: str="Автотрейдинг запрещен сервером"; break;
      case TRADE_RETCODE_CLIENT_DISABLES_AT: str="Автотрейдинг запрещен клиентским терминалом"; break;
      case TRADE_RETCODE_LOCKED: str="Запрос заблокирован для обработки"; break;
      case TRADE_RETCODE_FROZEN: str="Ордер или позиция заморожены"; break;
      case TRADE_RETCODE_INVALID_FILL: str="Указан неподдерживаемый тип исполнения ордера по остатку "; break;
      case TRADE_RETCODE_CONNECTION: str="Нет соединения с торговым сервером"; break;
      case TRADE_RETCODE_ONLY_REAL: str="Операция разрешена только для реальных счетов"; break;
      case TRADE_RETCODE_LIMIT_ORDERS: str="Достигнут лимит на количество отложенных ордеров"; break;
      case TRADE_RETCODE_LIMIT_VOLUME: str="Достигнут лимит на объем ордеров и позиций для данного символа"; break;
      case TRADE_RETCODE_INVALID_ORDER: str="Выставляемый ордер имеет запрещенный или неверный тип"; break;
      case TRADE_RETCODE_POSITION_CLOSED: str="Операция с позицией невозможна, так как позиция отсутствует"; break;
      default: str="Неизвестный результат";
     }
//----
   return(str);
  }
 

Да, и еще: в процедуре закрытия обязательно занулите структуры перед их заполением

ZeroMemory(tradeRequest);
ZeroMemory(tradeResult);


После

SymbolInfoTick(symb, price);

эти две строчки вставьте.

 
i_logic:

Да, и еще: в процедуре закрытия обязательно занулите структуры перед их заполением


После

эти две строчки вставьте.

не, нужно ДО:

for(int i=PositionsTotal()-1;i>=0;i--)
    {
      ZeroMemory(tradeRequest);
      ZeroMemory(tradeResult);
      ZeroMemory(price);
      
      symb=PositionGetSymbol(i);
      PositionSelect(symb);
      SymbolInfoTick(symb, price);

помогло. спасибо.

 

Здравствуйте, строю фибо сетку в советнике 

 

ObjectCreate(0,"Fibo",OBJ_FIBO,0,time2,price2,time1,price1);

 

все получается, но теперь хочу получить цену на уровне 23,6%, неужели нет простейшей функции для этой цели?

 

double flevel236 = ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,1);   Вот это  - дает 0.236, т.е. не цену, а именно уровень.

double flevel236 = ObjectGetDouble(0,"Fibo",OBJPROP_PRICE,1);   Вот это -  дает цену на уровне 0 (или на уровне 100).

Ничего кроме этих двух  (OBJPROP_PRICE и OBJPROP_LEVELVALUE) я не нашел.

Подскажите, как можно решить эту задачу. Спасибо! 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
zhurkin:

Подскажите, как можно решить эту задачу. Спасибо! 

Всего две арифметические операции. Умножение (0.236 умножить на разницу между ценами нулевого и первого уровней), а потом сложение (результат умножения прибавить к цене нулевого уровня).

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 

Здравствуйте, спасибо за предыдущий ответ!

Использую iCustom(NULL,0,"Examples\\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) В общем подключаю обычный зигзаг. С расчетами вроде пока все хорошо, подскажите, что нужно сделать, что бы советник автоматически рисовал на графике этот подключенный индикатор? На данный момент мне приходится после запуска советника вручную добавлять индикатор zigzag и выставлять ему параметры как в советнике! Спасибо.

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
zhurkin:

Здравствуйте, спасибо за предыдущий ответ!

Использую iCustom(NULL,0,"Examples\\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) В общем подключаю обычный зигзаг. С расчетами вроде пока все хорошо, подскажите, что нужно сделать, что бы советник автоматически рисовал на графике этот подключенный индикатор? На данный момент мне приходится после запуска советника вручную добавлять индикатор zigzag и выставлять ему параметры как в советнике! Спасибо.

https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - Документация по MQL5
 

Начал изучать ООП.

Возникла проблема при написании потомка базового класса, компилятор пишет -   " 'ХХХХХ' - wrong parameters count"

долго искал причину, перечитывал статейки и справочник, 

нашел - в базовом классе конструктор, он один и параметрический.

 

Выход тоже нашел, перегрузка функции конструктора конструктором по умолчанию,

но тогда приходится все параметры параметрического конструктора базового класса перетаскивать в конструктор потомка для верности логики.

 

Есть ли иные пути?

как-то сразу при объявлении класса потомка можно распределить кому что?  Например: эти параметры на конструктор базового класса, а эти чтобы потомок не скучал...

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