Questions from a "dummy" - page 274

 
Is it only the closing that doesn't work?
 
Yes. And it opens beautifully.
 

And try inserting an order check before OrderSend for correctness:

//---- Проверка торгового запроса на корректность
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);
  }
 

Oh, and one more thing: in the closing procedure, be sure to nullify the structures before filling them in

ZeroMemory(tradeRequest);
ZeroMemory(tradeResult);


After

SymbolInfoTick(symb, price);

these two lines insert.

 
i_logic:

Oh, and one more thing: in the closing procedure, be sure to null the structures before filling them


After

insert these two lines.

no, you have to BEFORE:

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

helped. thank you.

 

Hello, building a fibo grid in an EA

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

Everything works, but now I want to get the price at 23.6%, is there no simple function for this purpose?

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1); This one gives 0.236, i.e. not the price but the level.

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_PRICE,1); This one gives the price at level 0 (or at level 100).

I couldn't find anything other than these two (OBJPROP_PRICE and OBJPROP_LEVELVALUE).

Can you tell me how this problem can be solved. Thank you!

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

Can you tell me how to solve this problem? Thank you!

There are only two arithmetic operations. Multiplication (0.236 multiplied by the difference between the zero and first level prices) and then addition (add the result of multiplication to the zero level price).

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

Hello, thanks for the previous reply!

I am using iCustom(NULL,0, "Examples\\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) In general I am connecting a regular zigzag. Everything seems to be OK with calculations. Could you advise how to enable the EA to automatically draw this connected indicator on the chart? At the moment I have to add the zigzag indicator manually after running the EA and set its parameters as in the EA! Thank you.

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

Hello, thanks for the previous reply!

I am using iCustom(NULL,0, "Examples\\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) I am connecting a regular zigzag. Everything seems to be OK with calculations. Could you advise how to enable the EA to automatically draw this connected indicator on the chart? At the moment I have to add the zigzag indicator manually after running the EA and set its parameters as in the EA! Thank you.

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

I've started to study OOP.

I had a problem when writing a descendant of a base class, the compiler writes - "'ХХХХХХ' - wrong parameters count".

I've been looking for the reason for a long time, re-read articles and reference book,

but I found it - the base class has a constructor, it is one and parametric.

I've found a solution too - overloading of the constructor function with the default constructor,

but then I have to drag all the parameters of the parametric constructor of the base class to the descendant constructor for correct logic.

Are there any other ways?

Is there any way, when declaring a descendant class, to distribute to whom what? For example: these parameters to the constructor of the base class and these parameters so that the descendant doesn't get bored...