MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 978

 
pvba :

매우 감사합니다!

제발.

 

모두 좋은 저녁입니다. 글쎄, 아무도 나를 도울 수 있습니까?

이전 게시물에서 문제 에 대해 설명했습니다.

 
Iurii Tokman :

+

감사해요
 
valeriikopp :
감사해요

제발.

 
나는 지표를 직접 작성하는 방법을 모르고 비전과 함께 60세 미만의 시간은 더 이상 배울 수 없지만 전체 예금에 대한 부하를 결정하거나 허용되는 금액을 나타내는 지표가 필요합니다. MT4 예제에서와 같이 많이 열려 있습니다. 거기에 작은 코드가 있습니다. 누군가 MT5에서 다시 작성하는 데 도움을 줄 것입니다. 그렇지 않으면 수행할 수 없습니다. MT4의 코드는 다음과 같습니다.
#속성 표시기_차트_창
외부 색상 색상 = 빨간색;
외부 정수 크기 = 14;
extern 문자열 글꼴 = "베르다나";
정수() {
리턴(0);
}

정수 초기화() {
ObjectDelete("실험실");
리턴(0);
}

정수 시작() {
int l_ind_counted_0 = IndicatorCounted();
이중 l_free_magrin_4 = 0;
이중 l_marginrequired_12 = 0;
이중 ld_20 = 0;
l_free_magrin_4 = AccountFreeMargin();
l_marginrequired_12 = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
ld_20 = l_free_magrin_4 / l_marginrequired_12;
ObjectCreate("실험실", OBJ_LABEL , 0, 0, 0);
ObjectSet("실험실", OBJPROP_XDISTANCE, 3); // 왼쪽 또는 오른쪽으로 이동
ObjectSet("실험실", OBJPROP_YDISTANCE, 27); // 아래 또는 위로 이동
ObjectSetText("실험실", DoubleToStr(ld_20, 2), 크기, 글꼴, 색상);
리턴(0);

}


 
안녕하세요, 조언이 필요합니다.
 for ( int no1= 0 ; no1< ObjectsTotal ( OBJ_TEXT ); no1++)
  {
   if ( ObjectName ( 0 )== "Profit1" + iBarShift ( NULL , 1440 , 0 ))
     {
       double name;
      name = ObjectDescription( 0 );;
       Comment (name);
     }
  }
내 마지막 텍스트가 표시되지 않는 이유는 무엇입니까? 여기서 무슨 문제가 있습니까? 수정 방법을 알려주세요!
 
Rustam Bikbulatov :

no1<= ObjectsTotal ( OBJ_TEXT );
 
Konstantin Lebedev :
 //+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                                               Yuriy Tokman (YTG) |
//|                       https://www.mql5.com/ru/users/satop/seller |
//+------------------------------------------------------------------+
#property copyright "Yuriy Tokman (YTG)"
#property link        "https://www.mql5.com/ru/users/satop/seller"
#property version    "1.00"
#property indicator_chart_window

#property   indicator_plots 0

input color Color = Red;
input int Size = 14 ;
input string Font = "Verdana" ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping

//---
   return ( INIT_SUCCEEDED );
  }
//----
void OnDeinit ( const int reason)
  {
//---
   ObjectDelete ( 0 , "lab" );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   double l_free_magrin_4 = 0 ;
   double l_marginrequired_12 = 0 ;
   double ld_20 = 0 ;
   l_free_magrin_4 = AccountInfoDouble ( ACCOUNT_MARGIN_FREE );
   l_marginrequired_12 = SymbolInfoDouble ( Symbol (), SYMBOL_MARGIN_INITIAL ); //Начальная (инициирующая) маржа обозначает размер необходимых залоговых средств в маржинальной валюте для открытия позиции объемом в один лот. Используется при проверке средств клиента при входе в рынок.
   if (l_marginrequired_12!= 0 )
      ld_20 = l_free_magrin_4 / l_marginrequired_12;

   LabelCreate( 0 , "lab" , 0 ,

               3 , //отодвинуть влево или направо
               27 , //отодвинуть вниз или вверх

               CORNER_LEFT_UPPER ,
               DoubleToString (ld_20, 2 )
               ,Font,Size,Color);

//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Создает текстовую метку                                          |
//+------------------------------------------------------------------+
bool LabelCreate( const long               chart_ID= 0 ,               // ID графика
                 const string             name= "Label" ,             // имя метки
                 const int                sub_window= 0 ,             // номер подокна
                 const int                x= 0 ,                       // координата по оси X
                 const int                y= 0 ,                       // координата по оси Y
                 const ENUM_BASE_CORNER   corner= CORNER_LEFT_UPPER , // угол графика для привязки
                 const string             text= "Label" ,             // текст
                 const string             font= "Arial" ,             // шрифт
                 const int                font_size= 10 ,             // размер шрифта
                 const color              clr= clrRed ,               // цвет
                 const double             angle= 0.0 ,                 // наклон текста
                 const ENUM_ANCHOR_POINT anchor= ANCHOR_LEFT_UPPER , // способ привязки
                 const bool               back= false ,               // на заднем плане
                 const bool               selection= false ,           // выделить для перемещений
                 const bool               hidden= true ,               // скрыт в списке объектов
                 const long               z_order= 0 )                 // приоритет на нажатие мышью
  {
//--- сбросим значение ошибки
   if ( ObjectFind (chart_ID,name)!= 0 )
       ObjectDelete (chart_ID,name);
//--- создадим текстовую метку
   if (! ObjectCreate (chart_ID,name, OBJ_LABEL ,sub_window, 0 , 0 ))
     {
       Print ( __FUNCTION__ ,
             ": не удалось создать текстовую метку! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- установим координаты метки
   ObjectSetInteger (chart_ID,name, OBJPROP_XDISTANCE ,x);
   ObjectSetInteger (chart_ID,name, OBJPROP_YDISTANCE ,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger (chart_ID,name, OBJPROP_CORNER ,corner);
//--- установим текст
   ObjectSetString (chart_ID,name, OBJPROP_TEXT ,text);
//--- установим шрифт текста
   ObjectSetString (chart_ID,name, OBJPROP_FONT ,font);
//--- установим размер шрифта
   ObjectSetInteger (chart_ID,name, OBJPROP_FONTSIZE ,font_size);
//--- установим угол наклона текста
   ObjectSetDouble (chart_ID,name, OBJPROP_ANGLE ,angle);
//--- установим способ привязки
   ObjectSetInteger (chart_ID,name, OBJPROP_ANCHOR ,anchor);
//--- установим цвет
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
//--- включим (true) или отключим (false) режим перемещения метки мышью
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
//--- успешное выполнение
   return ( true );
  }
//----
//+------------------------------------------------------------------+

경우 작동하지 않을 수 있습니다

 SymbolInfoDouble ( Symbol (), SYMBOL_MARGIN_INITIAL ) = 0
 
Iurii Tokman :

경우 작동하지 않을 수 있습니다

파일에 마지막 줄에 0 없이 코드를 입력해서 시키는대로 다 해서 에러가 나긴 하는데 위에서 설명한 코드에 따르면 차트에 인디케이터를 그릴때 최대 데이터는 없지만 모든 것을 0으로 표시합니다. - 0.00, 분명히 MT5에는 다른 것이 누락되었습니다. 감사합니다. 다른 사람이 도와줄 수 있습니다.


 
안녕하세요, 조언이 필요합니다.
 for ( int no1= 0 ; no1<= ObjectsTotal ( OBJ_TEXT ); no1++)
  {
   if ( ObjectName ( 0 )== "Profit1" + iBarShift ( NULL , 1440 , 0 ))
     {
       double name;
      name = ObjectDescription( 0 );;
       Comment (name);
     }
  }
내 마지막 텍스트가 표시되지 않는 이유는 무엇입니까? 여기서 무슨 문제가 있습니까? 수정 방법을 알려주세요!
사유: