Questions d'un "mannequin - page 274

 
Est-ce que c'est seulement la fermeture qui ne fonctionne pas ?
 
Oui. Et il s'ouvre magnifiquement.
 

Et essayez d'insérer un contrôle de commande avant OrderSend pour plus de précision :

//---- Проверка торгового запроса на корректность
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, et encore une chose : dans la procédure de fermeture, assurez-vous d'annuler les structures avant de les remplir

ZeroMemory(tradeRequest);
ZeroMemory(tradeResult);


Après

SymbolInfoTick(symb, price);

ces deux lignes s'insèrent.

 
i_logic:

Oh, et encore une chose : dans la procédure de fermeture, veillez à invalider les structures avant de les remplir


Après

insérez ces deux lignes.

non, vous devez BEFORE :

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

Cela m'a aidé. Merci.

 

Bonjour, construction d'une grille de fibros dans un EA

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

Tout fonctionne, mais maintenant je veux obtenir le prix à 23,6%, n'y a-t-il pas une fonction simple à cet effet ?

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1); Celui-ci donne 0.236, c'est-à-dire pas le prix mais le niveau.

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_PRICE,1); Celui-ci donne le prix au niveau 0 (ou au niveau 100).

Je n'ai rien trouvé d'autre que ces deux-là (OBJPROP_PRICE et OBJPROP_LEVELVALUE).

Pouvez-vous me dire comment ce problème peut être résolu. Merci !

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

Pouvez-vous me dire comment résoudre ce problème ? Merci !

Il n'y a que deux opérations arithmétiques. Multiplication (0,236 multiplié par la différence entre le prix du niveau zéro et celui du premier niveau) et ensuite addition (ajouter le résultat de la multiplication au prix du niveau zéro).

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

Bonjour, merci pour la réponse précédente !

J'utilise iCustom(NULL,0, "Examples\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) En général, je connecte un zigzag régulier. Tout semble être OK avec les calculs. Pourriez-vous me conseiller comment permettre à l'EA de dessiner automatiquement cet indicateur connecté sur le graphique? Pour le moment, je dois ajouter l'indicateur zigzag manuellement après avoir exécuté l'EA et définir ses paramètres comme dans l'EA ! Merci.

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

Bonjour, merci pour la réponse précédente !

J'utilise iCustom(NULL,0, "Examples\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) Je connecte un zigzag régulier. Tout semble être OK avec les calculs. Pourriez-vous me conseiller comment permettre à l'EA de dessiner automatiquement cet indicateur connecté sur le graphique? Pour le moment, je dois ajouter l'indicateur zigzag manuellement après avoir exécuté l'EA et définir ses paramètres comme dans l'EA ! Merci.

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

J'ai commencé à étudier la POO.

J'ai eu un problème en écrivant un descendant d'une classe de base, le compilateur écrit - "'ХХХХХХХХ' - nombre de paramètres erroné".

J'ai cherché la raison pendant longtemps, en relisant des articles et des ouvrages de référence,

mais je l'ai trouvé - la classe de base a un constructeur, il est unique et paramétrique.

J'ai aussi trouvé une solution - surcharge de la fonction constructeur avec le constructeur par défaut,

mais je dois alors faire glisser tous les paramètres du constructeur paramétrique de la classe de base vers le constructeur descendant pour une logique correcte.

Y a-t-il d'autres moyens ?

Y a-t-il un moyen, lors de la déclaration d'une classe descendante, de distribuer à qui quoi ? Par exemple : ces paramètres au constructeur de la classe de base et ces paramètres pour que le descendant ne s'ennuie pas...