Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 594

 
DiPach:
P./S.: Por si acaso, mencionaré que también hay una respuesta parcial a tu pregunta en la "Nota" de la ayuda de NormalizeDouble.

Yo mismo solía olvidar entrar en DoubleToS... ...y luego se preguntaba por los muchos números que había después del punto. :)


Está escrito en la Ayuda :) Quién iba a pensar que iba a ir allí porque es una función conocida y no tiene sentido leerla en la Ayuda. Gracias por la respuesta.
 

Hola, ¿podríais decirme cómo hacer que el indicador del probador funcione con datos de otro par de divisas?

La imagen muestra un MACD normal, pero con el símbolo "GBPUSD" escrito en él. En el gráfico "EURUSD", se dibuja exactamente igual que en el gráfico "GBPUSD".

Pero no quiere funcionar en el Probador de Estrategias. Cuando pulso la pausa y coloco el indicador en el gráfico EURUSD, al principio todo se dibuja correctamente, pero en cuanto empiezo a probar

Sólo dibuja una línea recta como en la imagen. O tal vez puedas decirme otro indicador que funcione. Lo importante no es el MACD sino el principio de dibujo.

Archivos adjuntos:
 
¿Quién puede utilizar los futuros del petróleo (#BRNM4) en el probador? Me sale el error 4107.
 

¿Puedes decirme cómo escribir la hora actual en una variable global GlobalVariableSet, por ejemplo? No da la fecha en absoluto sino un conjunto de dígitos...

 
ClanVi:

¿Puedes decirme cómo escribir la hora actual en una variable global GlobalVariableSet, por ejemplo? No da la fecha en absoluto sino un conjunto de dígitos...


El tiempo se almacena como un valor entero
 

Hola. ¡Feliz Día de la Victoria, a todos!

Con la nueva construcción, los objetos de la esquina inferior derecha se han arrastrado hacia la derecha. Es necesario moverlos ligeramente hacia la izquierda para que todo el texto en ellos sea legible.

Como era y como debe hacerse:

Ahora se han ido arrastrando:

Código:

#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()
  }
//-------------------------------------------------------------------------------------------
 

Lo he conseguido yo mismo cambiando el ángulo de referencia y ajustando las distancias de las coordenadas:

//----------------------------------------------Мониторинг---------------------  
   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() 
  }


 

¿Y cómo se cambia el tamaño y el fondo (el color es probablemente poco probable) de los comentarios de los objetos?


Bueno, el número de billete Start # en la foto es de ellos.

Función:

//+------------------------------------------------------------------+
   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);
   }
//+------------------------------------------------------------------+

Los últimos tres, los parámetros pensaron que afectan de alguna manera. De ninguna manera...

 
pako:


Se trata de un objeto de texto. Pero necesito cambiarlo en OBJ_TREND. Me gustaría poder hacer esto en un solo objeto, en lugar de añadir otro objeto de texto a la línea de tendencia.
 

El depurador ha dejado de funcionar, ¿por qué?

Desde el mediodía del 5 de mayo, el depurador ha dejado de dar valores de variables en el punto de interrupción. En todos los programas para todas las variables. Al mismo tiempo, los propios programas funcionan como antes. En ese momento (y hasta ahora) el editor era"ver. 5.00 build 934" y MetaTrader "ver. 4.00 build 646" .

Aquí hay un script simple, y esto es lo que muestra el depurador. ¿Puede decirme qué pasa?