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

 
Artyom Trishkin :

복잡하지 않습니다.

ATP, 나는 저녁에 컴퓨터에있을 것입니다, 나는 그것을 스스로 가져갈 것입니다 ... 그것은 복잡하지 않지만 모든 것을 할 시간이 너무 없습니다)))

 
안녕하세요! 차트에 버튼 을 생성하고 적어도 하나의 작업을 수행하는 코드의 예를 제공하십시오. 적어도 의견에 표시를 넣으십시오. 고맙습니다.
 
inter78 :
안녕하세요! 차트에 버튼 을 생성하고 적어도 하나의 작업을 수행하는 코드의 예를 제공하십시오. 적어도 의견에 표시를 넣으십시오. 고맙습니다.

다음은 다음과 같은 코드입니다.

 #property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
kn();
return ( INIT_SUCCEEDED );
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
ObjectDelete ( "close" );
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
{
if ( ObjectGetInteger ( 0 , "close" , OBJPROP_STATE )== true )
 {
   ObjectSetString ( 0 , "close" , OBJPROP_TEXT , "Открыть ВСЕ" ); 
   Comment ( "Открыть всё!" );
 }
else
 {
   ObjectSetString ( 0 , "close" , OBJPROP_TEXT , "Закрыть ВСЕ" ); 
   Comment ( "Закрыть всё!" );
 }
return ;
}

//==============================================================
void kn()
{
 if ( ObjectFind ( "close" )==- 1 )
  {
   ObjectCreate ( 0 , "close" , OBJ_BUTTON , 0 , 0 , 0 );
   ObjectSetInteger ( 0 , "close" , OBJPROP_XDISTANCE , 30 ); 
   ObjectSetInteger ( 0 , "close" , OBJPROP_YDISTANCE , 30 ); 
   //--- установим размер кнопки 
   ObjectSetInteger ( 0 , "close" , OBJPROP_XSIZE , 100 ); 
   ObjectSetInteger ( 0 , "close" , OBJPROP_YSIZE , 30 ); 
   //--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger ( 0 , "close" , OBJPROP_CORNER , CORNER_LEFT_UPPER ); 
   //--- установим текст 
   ObjectSetString ( 0 , "close" , OBJPROP_TEXT , "Закрыть ВСЕ" ); 
   //--- установим цвет фона 
   ObjectSetInteger ( 0 , "close" , OBJPROP_BGCOLOR , clrRed ); 
   //--- установим цвет текста 
   ObjectSetInteger ( 0 , "close" , OBJPROP_COLOR , clrWhite );
  }
}
 
Valerius :

다음은 다음과 같은 코드입니다.

댓글이 나오지 않습니다.
 
inter78 :
댓글이 나오지 않습니다.

프로그램을 시작한 후 버튼을 클릭하면 해당 비문이 왼쪽 상단 모서리에 나타납니다. 다시 누르면 글자가 바뀝니다. 자동 거래 버튼을 클릭하거나 어드바이저 설정 에서 거래를 허용하는 것을 잊지 마십시오. 웃는 얼굴은 오른쪽 상단에 있어야 합니다. 테스터에서 모든 것이 작동합니다.

 
Valerius :

프로그램을 시작한 후 버튼을 클릭하면 해당 비문이 왼쪽 상단 모서리에 나타납니다. 다시 누르면 글자가 바뀝니다. 자동 거래 버튼을 클릭하거나 어드바이저 설정 에서 거래를 허용하는 것을 잊지 마십시오. 웃는 얼굴은 오른쪽 상단에 있어야 합니다. 테스터에서 모든 것이 작동합니다.

표시기는 어떻게 작동합니까?
 
inter78 :
표시기는 어떻게 작동합니까?

이것은 지표가 아닌 고문을 위해 수행됩니다.

 
불쌍해. 지표가 필요합니다.
 
inter78 :
불쌍해. 지표가 필요합니다.

따라서 큰 차이점은 없습니다.

 //==============================================================
void kn()
{
 if ( ObjectFind ( "close" )==- 1 )
  {
   ObjectCreate ( 0 , "close" , OBJ_BUTTON , 0 , 0 , 0 );
   ObjectSetInteger ( 0 , "close" , OBJPROP_XDISTANCE , 30 ); 
   ObjectSetInteger ( 0 , "close" , OBJPROP_YDISTANCE , 30 ); 
   //--- установим размер кнопки 
   ObjectSetInteger ( 0 , "close" , OBJPROP_XSIZE , 100 ); 
   ObjectSetInteger ( 0 , "close" , OBJPROP_YSIZE , 30 ); 
   //--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger ( 0 , "close" , OBJPROP_CORNER , CORNER_LEFT_UPPER ); 
   //--- установим текст 
   ObjectSetString ( 0 , "close" , OBJPROP_TEXT , "Закрыть ВСЕ" ); 
   //--- установим цвет фона 
   ObjectSetInteger ( 0 , "close" , OBJPROP_BGCOLOR , clrRed ); 
   //--- установим цвет текста 
   ObjectSetInteger ( 0 , "close" , OBJPROP_COLOR , clrWhite );
  }
}

버튼 생성 코드입니다.

버튼은 초기화 함수에서 생성됩니다.

 int OnInit ()
{
kn();
return ( INIT_SUCCEEDED );
}

 if ( ObjectGetInteger ( 0 , "close" , OBJPROP_STATE )== true )
 {
   ObjectSetString ( 0 , "close" , OBJPROP_TEXT , "Открыть ВСЕ" ); 
   Comment ( "Открыть всё!" );
 }
else
 {
   ObjectSetString ( 0 , "close" , OBJPROP_TEXT , "Закрыть ВСЕ" ); 
   Comment ( "Закрыть всё!" );
 }

버튼 제어 코드.

 
Alexey Viktorov :

따라서 큰 차이점은 없습니다.

버튼 생성 코드입니다.

버튼은 초기화 함수에서 생성됩니다.

버튼 제어 코드.

사실 그렇게 하긴 했지만 긴 응답시간은 싫다.

 int start()
 {
   string     Direktor= "ID" ;     // Имя каталога 
   string     Fail_ID= Symbol ();       // Имя файла 
   int file_ID;
  file_ID= FileOpen (Direktor+ "//" +Fail_ID, FILE_READ | FILE_WRITE | FILE_TXT ); 
   FileWrite (file_ID, ChartID ()); 
   FileClose (file_ID); 

   int total_GLOB= GlobalVariablesTotal ();
   string name;
   string text;
   int kol= 0 ;
   int x= 1000 ;
   string strGl;
   string strGl_2;
   string strGl_3;
   double strGl_4;
   double strGl_5;
   for ( int g= 0 ;g<total_GLOB;g++)
    {
     name= GlobalVariableName (g);
     string g_2= IntegerToString (g+ 1 , 2 , '0' );
     text=g_2+ " .  " +name+ "   " + DoubleToString ( GlobalVariableGet (name), 4 );
     kol++;
     strGl= IntegerToString ( MathAbs ( GlobalVariableGet (name)* 10000 ), 15 , '0' );
     strGl_2= StringSubstr (strGl, 11 , 2 );
     strGl_3= StringSubstr (strGl, 13 , 2 );
     strGl_4= StringToDouble (strGl_2);
     strGl_5= StringToDouble (strGl_3);
     ObjectCreate (name, OBJ_BUTTON , 0 , 0 , 0 );
         if ( ObjectGet (name, OBJPROP_STATE )== true )
         {
           string Fail_ID_2=name;
           int file_ID_2 = FileOpen (Direktor+ "//" +Fail_ID_2, FILE_READ | FILE_WRITE | FILE_TXT );
           string id = FileReadString (file_ID_2);
           long id2= StringToInteger (id);
           ChartSetInteger (id2, CHART_BRING_TO_TOP , true );
           FileClose (file_ID_2); 
         }
     if (strGl_4==strGl_5)
     {
       ObjectSet (name, 6 , clrDarkSlateGray );
       ObjectSet (name, OBJPROP_BGCOLOR , clrAquamarine );
      }
     if (strGl_4!=strGl_5)
     {
       ObjectSet (name, 6 , clrDarkSlateGray );
       ObjectSet (name, OBJPROP_BGCOLOR , clrSnow );
      }
     ObjectSet (name, 102 ,x);
     ObjectSet (name, OBJPROP_SELECTED , false );
     ObjectSetText (name,text, 10 , "Arial" , clrLightCyan );
     ObjectSet (name, 103 , 40 +(kol* 20 ));
     if ( GlobalVariableGet (name)< 0 ) ObjectSet (name, 6 ,Red);
     if ( GlobalVariableGet (name)> 0 ) ObjectSet (name, 6 , clrMediumBlue );
     if ( GlobalVariableGet (name)== 0 ) ObjectDelete (name);
     ObjectSetInteger ( 0 ,name, OBJPROP_XSIZE , 180 ); 

//--- переведем кнопку в заданное состояние 
     ObjectSetInteger ( 0 ,name, OBJPROP_STATE , false ); 

     if ( Symbol ()==name)
      {
       ObjectSet (name, 6 , clrMaroon );
       ObjectSet (name, 103 , 25 );
       ObjectSet (name, OBJPROP_FONTSIZE , 13 );
       ObjectSetInteger ( 0 ,name, OBJPROP_YSIZE , 25 ); 
       ObjectSetInteger ( 0 ,name, OBJPROP_XSIZE , 200 ); 
      }
    }

   return ( 0 );
 }
void OnDeinit ( const int reason)
  {
   GlobalVariablesDeleteAll ();
ObjectsDeleteAll ( 0 , 0 , OBJ_BUTTON );

  }