MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 671

 
Artyom Trishkin :

Karmaşık bir şey yok.

ATP, akşam bilgisayar başında olacağım, kendim alacağım ... karmaşık bir şey değil, ama her şey için çok fazla zaman yok)))

 
Merhaba! Lütfen grafik üzerinde bir buton oluşturma ve en az bir işlem gerçekleştirme koduna bir örnek veriniz. En azından yoruma bir işaret koyun. Teşekkür ederim.
 
inter78 :
Merhaba! Lütfen grafik üzerinde bir buton oluşturma ve en az bir işlem gerçekleştirme koduna bir örnek veriniz. En azından yoruma herhangi bir işaret koyun. Teşekkür ederim.

İşte bunun gibi bazı kodlar:

 #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 :

İşte bunun gibi bazı kodlar:

Yorumlar çıkmıyor.
 
inter78 :
Yorumlar çıkmıyor.

Programı başlattıktan sonra butona tıklayın ve sol üst köşede ilgili yazı belirir. Tekrar basın, yazı değişir. Otomatik alım satım düğmesine tıklamayı veya danışman ayarlarında alım satıma izin vermeyi unutmayın. Sağ üst köşede bir gülen yüz olmalıdır. Test cihazında her şey çalışıyor.

 
Valerius :

Programı başlattıktan sonra butona tıklayın ve sol üst köşede ilgili yazı belirir. Tekrar basın, yazı değişir. Otomatik alım satım düğmesine tıklamayı veya danışman ayarlarında alım satıma izin vermeyi unutmayın. Sağ üst köşede bir gülen yüz olmalıdır. Test cihazında her şey çalışıyor.

Gösterge nasıl çalışacak?
 
inter78 :
Gösterge nasıl çalışacak?

Bu, danışman için yapılır, gösterge için değil.

 
Çok yazık. Bir göstergeye ihtiyacım var.
 
inter78 :
Çok yazık. Bir göstergeye ihtiyacım var.

Yani, büyük farklılıklar yoktur.

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

Bu, düğme oluşturma kodudur.

Düğme, başlatma işlevinde oluşturulur

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

Ve bu

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

Düğme kontrol kodu.

 
Alexey Viktorov :

Yani, büyük farklılıklar yoktur.

Bu, düğme oluşturma kodudur.

Düğme, başlatma işlevinde oluşturulur

Ve bu

Düğme kontrol kodu.

Aslında bunu yaptım ama uzun tepki süresini sevmiyorum.

 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 );

  }