Preguntas de un "tonto" - página 274

 
¿Es sólo el cierre lo que no funciona?
 
Sí. Y se abre maravillosamente.
 

Y pruebe a insertar una comprobación de la orden antes de OrderSend para que sea correcta:

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

Ah, y una cosa más: en el procedimiento de cierre, asegúrese de anular las estructuras antes de rellenarlas

ZeroMemory(tradeRequest);
ZeroMemory(tradeResult);


Después de

SymbolInfoTick(symb, price);

estas dos líneas se insertan.

 
i_logic:

Ah, y una cosa más: en el procedimiento de cierre, asegúrese de anular las estructuras antes de llenarlas


Después de

inserta estas dos líneas.

no, tienes que ANTES:

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

Ayudado. Gracias.

 

Hola, la construcción de una rejilla fibo en un EA

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

Todo funciona, pero ahora quiero obtener el precio al 23,6%, ¿no hay ninguna función sencilla para este fin?

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1); Este da 0,236, es decir, no el precio sino el nivel.

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_PRICE,1); Este da el precio en el nivel 0 (o en el nivel 100).

No pude encontrar nada más que estos dos (OBJPROP_PRICE y OBJPROP_LEVELVALUE).

¿Puede decirme cómo se puede resolver este problema? Gracias.

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

¿Pueden decirme cómo resolver este problema? Gracias.

Sólo hay dos operaciones aritméticas. Multiplicación (0,236 multiplicado por la diferencia entre los precios del nivel cero y del primer nivel) y, a continuación, suma (añadir el resultado de la multiplicación al precio del nivel cero).

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

Hola, ¡gracias por la respuesta anterior!

Estoy usando iCustom(NULL,0, "Examples\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) Estoy conectando un zigzag regular. Todo parece estar bien con los cálculos. ¿Podría aconsejar cómo habilitar el EA para que dibuje automáticamente este indicador conectado en el gráfico? ¡Por el momento tengo que añadir el indicador zigzag manualmente después de ejecutar el EA y establecer sus parámetros como en el EA! Gracias.

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

Hola, ¡gracias por la respuesta anterior!

Estoy usando iCustom(NULL,0, "Examples\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) Estoy conectando un zigzag regular. Todo parece estar bien con los cálculos. ¿Podría aconsejar cómo habilitar el EA para que dibuje automáticamente este indicador conectado en el gráfico? ¡Por el momento tengo que añadir el indicador zigzag manualmente después de ejecutar el EA y establecer sus parámetros como en el EA! Gracias.

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

He empezado a estudiar OOP.

Tuve un problema al escribir un descendiente de una clase base, el compilador escribe - "'ХХХХХХ' - recuento de parámetros erróneo".

Llevo mucho tiempo buscando la razón, releyendo artículos y libros de referencia,

pero lo encontré - la clase base tiene un constructor, es uno y paramétrico.

Yo también he encontrado una solución: sobrecargar la función del constructor con el constructor por defecto,

pero entonces tengo que arrastrar todos los parámetros del constructor paramétrico de la clase base al constructor descendiente para que la lógica sea correcta.

¿Hay otras formas?

¿Hay alguna manera, al declarar una clase descendiente, de distribuir a quién qué? Por ejemplo: estos parámetros al constructor de la clase base y estos parámetros para que el descendiente no se aburra...