Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 594

 
DiPach:
P./S. : Juste au cas où, je mentionnerai qu'il y a une réponse partielle à votre question dans "Note" de l'aide de NormalizeDouble également.

J'avais moi-même l'habitude d'oublier d'entrer dans DoubleToS... ...et s'est ensuite demandé quels étaient les nombreux chiffres après le point. :)


C'est écrit dans l'Aide :) Qui aurait cru que j'y serais allé parce que c'est une fonction connue et qu'il n'y a aucun sens à la lire dans l'Aide. Merci pour la réponse.
 

Bonjour, Pourriez-vous me dire comment faire fonctionner l'indicateur du testeur avec les données d'une autre paire de devises ?

L'image montre un MACD normal, mais avec le symbole "GBPUSD" écrit dessus. Sur le graphique "EURUSD", il est dessiné exactement de la même manière que sur le graphique "GBPUSD".

Mais il ne veut pas fonctionner dans le testeur de stratégie. Lorsque j'appuie sur la touche pause et que je place l'indicateur sur le graphique EURUSD, au début tout est dessiné correctement, mais dès que je commence le test

Il dessine juste une ligne droite comme dans l'image. Ou peut-être pouvez-vous m'indiquer un autre indicateur qui fonctionne. Ce n'est pas le MACD qui est important mais le principe du dessin.

Dossiers :
 
Qui peut utiliser les futures sur le pétrole (#BRNM4) dans le testeur ? Je reçois l'erreur 4107.
 

Pouvez-vous me dire comment écrire l'heure actuelle dans une variable globale Global VariableSet, par exemple ? Il ne donne pas du tout la date mais un ensemble de chiffres...

 
ClanVi:

Pouvez-vous me dire comment écrire l'heure actuelle dans une variable globale GlobalVariableSet, par exemple ? Il ne donne pas du tout la date mais un ensemble de chiffres...


Le temps est stocké comme une valeur entière
 

Bonjour. Joyeux Jour de la Victoire, tout le monde !

Avec la nouvelle version, les objets dans le coin inférieur droit se sont déplacés vers la droite. Il est nécessaire de les déplacer légèrement vers la gauche pour que tout le texte qu'ils contiennent soit lisible.

Comme cela a été et comme cela doit être fait :

Maintenant ils sont partis en rampant :

Code :

#include <stdlib.mqh>
#include <stderror.mqh>
#include <WinUser32.mqh>
//--------------------------------------------------------------- 3 --
#include <Variables_AU.mqh>          // Описание переменных 
#include <Terminal.mqh>              // Учёт ордеров
#include <Events.mqh>                // Функция слежения за событиями, обновлен.
#include <Inform.mqh>                // Информационная функция
#include <Trade.mqh>                 // Торговая функция
#include <Open_Ord.mqh>              // Открытие одного ордера заданного типа
#include <Open_Ord_balance_line.mqh> //Доливка по линии баланса -  установка одного отложенного ордера  
#include <Close_All.mqh>             // Закрытие  всех ордеров заданного типа
#include <Tral_Stop_All.mqh>         // Модификация лимитного ордера
#include <Lot_MM.mqh>                // Вычисление количества лотов
#include <Criterion.mqh>             // Торговые критерии
#include <Errors.mqh>                // Функция обработки ошибок.
//--------------------------------------------------------------- 4 --
int init()                             // Спец. функция init
  {
  
   IsExpertStopped = false;
   if (!IsTradeAllowed())  {Comment("Необходимо разрешить советнику торговать");IsExpertStopped = true; return (0);}      
  // if (!IsTesting()){if (IsExpertEnabled())    Comment("Советник запустится следующим тиком");else  Comment("Отжата кнопка \"Разрешить запуск советников\"");}   
      
   // Определяем переменные окружения
   Level_old=MarketInfo(Symbol(),MODE_STOPLEVEL );//Миним. дистаниция 
   Level_Freeze = MarketInfo(Symbol(),MODE_FREEZELEVEL ); 
   Spread = MarketInfo(Symbol(),MODE_SPREAD);
   Tick = MarketInfo(Symbol(), MODE_TICKSIZE);    //Mинимальный тик   
   // Пересчеты пунктов для пятизначного ДЦ   
   if ((Digits == 3) || (Digits == 5)){SlipPips = SlipPips*10; indent_Hight = indent_Hight * 10; indent_Low = indent_Low * 10;}    
  
   Terminal();                         // Функция учёта ордеров 
//----------------------------------------------Мониторинг---------------------  
   if(Monitor==true)
    {
    int a,y;
    for(a=0,y=5;a<=4;a++)
      {
      string N=DoubleToStr(a,0);
  
      ObjectCreate(N,OBJ_LABEL,0,0,0,0,0,0,0);
      ObjectSet(N,OBJPROP_CORNER,3);
      ObjectSet(N,OBJPROP_XDISTANCE,5);
      ObjectSet(N,OBJPROP_YDISTANCE,y);
      y+=20;
      }  
    }
      
   return(0);                             // Выход из init() 
  }
//-----------------------------------------------------------------------------
int start()                            // Спец. функция start
  {  
     
//------------- Вызов ф-ий учёта ордеров, принятия торговых решений и информации ----------   
  Terminal();                         // Функция учёта ордеров 
  Events();                           // Информация о событиях
  Trade (Criterion());                // Торговая функция
  Inform(0);                          // Для перекрашивания объектов
   
//-------------  МОНИТОРИНГ  --------------------------------------------------------------
  if(Monitor==true)
    {
     string str="Balance: "+DoubleToStr(AccountBalance(),2)+" $";
     ObjectSetText("0",str,10,"Arial Black",DarkOrange);
    
     str="Profit: "+DoubleToStr(AccountProfit(),2)+" $";
     ObjectSetText("1",str,10,"Arial Black",Salmon);
    
     str="Free Margine: "+DoubleToStr(AccountFreeMargin(),2)+" $";
     ObjectSetText("2",str,10,"Arial Black",Gold);
    
     str="OrdersTotal: "+DoubleToStr(OrdersTotal(),0);
     ObjectSetText("3",str,10,"Arial Black",MediumAquamarine);
    
     if (Lot_MM()==false)              // Средств не хватает на миним.
             return(0);                   // Выход из пользов. функции 
     str="Lots_Next: "+DoubleToStr(Lots_New,2);
     ObjectSetText("4",str,10,"Arial Black",Olive);
    }
   
   return(0);                             // Выход из start()
  }
//-------------------------------------------------------------------------------------------
int deinit()                           // Спец. функция deinit()
  {
   Inform(-1);                         // Для удаления объектов
   //----------------------------------------------------------------------------------------
  if(Monitor==true)
    {
    for(int a=0;a<=4;a++)
      {
      string N=DoubleToStr(a,0);
      ObjectDelete(N);
      } 
    }
//-------------------------------------------------------------------------------------------
   return(0);                             // Выход из deinit()
  }
//-------------------------------------------------------------------------------------------
 

J'y suis parvenu moi-même en modifiant l'angle de référence et en réglant les distances de coordonnées :

//----------------------------------------------Мониторинг---------------------  
   if(Monitor==true)
    {
    int a,y;
    for(a=0,y=50;a<=4;a++)
      {
      string N=DoubleToStr(a,0);
  
      ObjectCreate(N,OBJ_LABEL,0,0,0,0,0,0,0);
      ObjectSet(N,OBJPROP_CORNER,0);
      ObjectSet(N,OBJPROP_XDISTANCE,50);
      ObjectSet(N,OBJPROP_YDISTANCE,y);
      y+=20;
      }  
    }
      
   return(0);                             // Выход из init() 
  }


 

Et comment modifier la taille et l'arrière-plan (la couleur est probablement peu probable) des commentaires d'objets ?


Eh bien, le numéro de ticket de départ sur la photo est le leur.

Fonction :

//+------------------------------------------------------------------+
   void SetTLine(color cl, long chartID, int wnd, string nm,
                 datetime t1, double p1, datetime t2, double p2,
                 bool ry=False, int st=0, int wd=1,string tx="",int sz=0) {
      if(DrawGraphics==0) return;
      if (ObjectFind(nm)<0) ObjectCreate(chartID, nm, OBJ_TREND, wnd, 0, 0, 0, 0);
      ObjectSetInteger(chartID,nm,OBJPROP_TIME1,t1);
      ObjectSetDouble(chartID,nm,OBJPROP_PRICE1,p1);
      ObjectSetInteger(chartID,nm,OBJPROP_TIME2,t2);
      ObjectSetDouble(chartID,nm,OBJPROP_PRICE2,p2);
      ObjectSetInteger(chartID,nm,OBJPROP_COLOR,cl);
      ObjectSetInteger(chartID,nm,OBJPROP_RAY,ry);
      ObjectSetInteger(chartID,nm,OBJPROP_STYLE,st);
      ObjectSetInteger(chartID,nm,OBJPROP_WIDTH,wd);
      ObjectSetString(chartID,nm,OBJPROP_TEXT,tx);
      ObjectSetString(chartID,nm,OBJPROP_FONT,"Tahoma");
      ObjectSetInteger(chartID,nm,OBJPROP_FONTSIZE,sz);
   }
//+------------------------------------------------------------------+

Les trois derniers, les paramètres pensaient qu'ils affectaient en quelque sorte. Pas moyen...

 
pako:


Il s'agit d'un objet texte. Mais je dois le modifier dans OBJ_TREND. J'aimerais pouvoir faire cela dans un seul objet, au lieu d'ajouter un autre objet texte à la ligne de tendance.
 

Le débogueur a cessé de fonctionner - pourquoi ?

Depuis le 5 mai en milieu de journée, le débogueur ne donne plus de valeurs de variables au point d'arrêt. Dans tous les programmes pour toutes les variables. En même temps, les programmes eux-mêmes fonctionnent comme avant. À l'époque (et jusqu'à présent), l'éditeur était"ver. 5.00 build 934" et MetaTrader "ver. 4.00 build 646" .

Voici un script simple, et voici ce que montre le débogueur. Pouvez-vous me dire ce qui ne va pas ?