Mt4 grafiğindeki Düğmeler ve Metin Alanları artık mümkün

 

Burada önizleme olarak mt4 için yeni bir ücretsiz eklenti tanıtmak istiyorum. Şu anda mt4gui adlı bir ürünü test ediyorum. Bu ürün, butonları, metin alanlarını, liste alanlarını doğrudan grafiğe yerleştirmeyi mümkün kılar; işte zaten çalışmakta olan bir önizleme ekran görüntüsü

http://fx1.net/wiki/uploads/img_7.png

Düğmeler, komisyoncu yan kene beklemeden tıklamadan hemen sonra tepki verir. Bu ürünü önümüzdeki haftalarda daha fazla özellikle geliştiriyoruz. Bunu neden yayınlıyorum, topluluktan ihtiyaç duyulan fikirleri almak. Elbette her şey gerçekten gerçekleştirilemez ama burada ilginç fikirleri filtreleyeceğim.

İşte çok basit bir kod örneği, kullanımı gösterir:

 //
// Copyright (c) www.fx1.net  2009-2011
//

#import "toolbox.dll"    
   int tbPutButton( int , int , int , int , int , string );   
   bool tbIsClicked( int );
#import

#include <libtrade.mqh>
#include <libvisual.mqh>

int btn1 = 0 ;
int buybtn,sellbtn,closebtn,lotbtnp,lotbtnm;
double   LotSize = 0.10 ;

int init()
  {
   lotbtnp = tbPutButton(WindowHandle( Symbol (), Period ()), 100 , 55 , 50 , 35 , "Lot +" );
   lotbtnm = tbPutButton(WindowHandle( Symbol (), Period ()), 150 , 55 , 50 , 35 , "Lot -" );
   
   buybtn = tbPutButton(WindowHandle( Symbol (), Period ()), 210 , 55 , 100 , 35 , "Market Buy" );
   sellbtn = tbPutButton(WindowHandle( Symbol (), Period ()), 210 , 90 , 100 , 35 , "Market Sell" );
   closebtn = tbPutButton(WindowHandle( Symbol (), Period ()), 210 , 145 , 100 , 35 , "Close All" );      
   pFontSize( 14 );
   return ( 0 );
  }
int deinit()
  {
   return ( 0 );
  }
int start()
  {
  pReset();
  p( "Lotsize: " +DoubleToStr(LotSize, 2 ), Yellow );
  
   if (tbIsClicked(lotbtnp)) LotSize=LotSize+ 0.10 ;      
   if (tbIsClicked(lotbtnm) && LotSize> 0.10 ) LotSize=LotSize- 0.10 ;      
  
  
   if (tbIsClicked(buybtn))
      {
       PlaySound ( "ok.wav" );
       OrderSend ( Symbol (),OP_BUY,LotSize,Ask, 3 , 0 , 0 , "Buy" , 1 );
      }

   if (tbIsClicked(sellbtn))
      {
       PlaySound ( "ok.wav" );
       OrderSend ( Symbol (),OP_SELL,LotSize,Bid, 3 , 0 , 0 , "Sell" , 1 );
      }

   if (tbIsClicked(closebtn))
      {
       PlaySound ( "ok.wav" );
      CloseAllByMagic( 3 , 1 );
      } 
   Print (tbIsClicked(buybtn));
   Print (tbIsClicked(sellbtn));
   Print (tbIsClicked(closebtn));
   return ( 0 );
  }
 

MT4GUI'nin yeni sürümünü şimdi yayınladık. Tüm betatest kullanıcıları benimle iletişime geçebilir

örnekler için: http://www.fx1.net/wiki/pmwiki.php/MT4GUI/MT4GUI


#import "toolbox.dll"   
   int tbPutObject( int , string , int , int , int , int , string );
   int tbRemoveAll( int );
   int tbSetText( int , string , int , string );
   int tbSetBgColor( int , int );
   int tbSetTextColor( int , int );
   
   bool tbIsClicked( int );
   int tbRemove( int ); 
   int tbEnable( int , int );
#import

 


Harika fikir, ancak ürün henüz çalışmıyor. "libtrade.mqh" ve "libvisual.mqh" olmadan olmaz. Bu dosyaları mt4gui.dll'yi gerçekten test etmek için nereden alabilirim?

Bu dosyalar olmadan derleyici "pFontSize", "pReset", "p" ve "CloseAllByMagic" işlevlerini tanımlayamaz.

 

İşte yeni ekran görüntüsü güncellemesi


 

profesyonel

2 gündür güncellemeler olduğu için indirme bölümünde dosyaları bulabilirsiniz. Renkler şu anda çalışıyor ve birkaç hata düzeltildi.

Evet, içerme dosyalarına ihtiyacınız var, ancak bunlar mt4gui projesi ile ilgili değil. p (ekrana yazdır) gibi bazı işlevleri tanımlamak benim kendi rutinlerim. Örnek kod tamamen mt4gui'yi gösteriyor ve diğer yandan hala o proje üzerinde çalışıyoruz.

Yakında gelecek:

Fare konumu algılama
Nesnelerin renklerini otomatik olarak uyarlamak için grafik algılamanın arka planı
Liste kutusu

Saygılarımızla

 
 

Ürün çalışıyor ve tam olarak ihtiyacım olan şey bu. Ancak...

Bununla ilgili birkaç sorunum var.

1) metni ekrana yerleştiremez; (lot, SL, TP vb. hat)

2) ne yaparsam yapayım renkler çalışmıyor;

3) bu daha çok bir öneri - düğmeleri ayrı bir alt pencereye yerleştirmek mümkün mü? Çok daha rahat olacak, bir ticaret konsolu gibi görünecek ve alt pencere küçültülürse, bir düğmeye yanlışlıkla tıklanmaları önlemeye yardımcı olacaktır. PutObject işlevinden görebildiğim kadarıyla koordinatlar ana veya alt pencere ile ilgili değil.

Ancak tüm bunlara rağmen, bu harika bir ürün. MT4'te uygulanması uzun zamandır bekleniyordu. teşekkürler.

 

bir şey daha:

Uzman kaldırıldıktan sonra düğmeler açık kalır.

 

pro__

1) ekrana bir metin yerleştirmek için MQL dahili nesnelerini kullanabilirsiniz, burada bir örnek kod verilmiştir:

 // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
string pxy( string mytext, color clr, int posx, int posy, int size)
{
   string n= "pxy3txt" +posx+posy;
   ObjectCreate (n, OBJ_LABEL , 0 , Time[lib_startbarno], lib_nextlinelevel);
   ObjectSet(n, OBJPROP_CORNER , 0 );
   ObjectSet(n, OBJPROP_XDISTANCE , posx);
   ObjectSet(n, OBJPROP_YDISTANCE , posy);
   ObjectSet(n, OBJPROP_COLOR , clr);
   ObjectSet(n, OBJPROP_BACK , false);
   ObjectSetText(n, mytext, size);
   return (n);
}

Başka bir tam örnek:

 #import "mt4gui.dll"    
   int tbPutObject( int , string , int , int , int , int , string );
   int tbRemoveAll( int );
   int tbSetText( int , string , int , string );
   int tbSetBgColor( int , int );
   int tbSetTextColor( int , int );
   string tbGetText( int );
   bool tbIsClicked( int );
   int tbRemove( int ); 
   int tbEnable( int , int );
#import

#include <libtrade.mqh>
#include <libvisual.mqh>
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Login implementation demo
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
int btn1,btn2,edit1,edit2,l1,l2;
int ticks;
bool LoggedIn = false;
string obj1= "" ;

int init()
  {
   int hwnd=WindowHandle( Symbol (), Period ());
   tbRemoveAll(hwnd); ObjectsDeleteAll ();
   
   
   //void  pxy(string mytext,color clr,int posx,int posy,int size)
   pxy( "Please login" , Yellow , 250 , 50 , 19 );
   pxy( "Login :" , White , 250 , 100 , 17 );
   pxy( "Passwd:" , White , 250 , 140 , 17 );
   
   l1=tbPutObject(hwnd, "text" , 350 , 100 , 250 , 30 , "Username" );   
   l2=tbPutObject(hwnd, "text" , 350 , 140 , 250 , 30 , "Password" );   
   btn1=tbPutObject(hwnd, "button" , 250 , 200 , 150 , 40 , "Login" );
   btn2=tbPutObject(hwnd, "button" , 450 , 200 , 150 , 40 , "Exit" );
   
   
   // set colors
   tbSetBgColor(btn1, Green ); tbSetTextColor(btn1, White );
   tbSetBgColor(btn2, IndianRed ); tbSetTextColor(btn2, White );
   
   tbSetText(l2, "xxxxxxxxxx" , 24 , "Wingdings" );
        
   return ( 0 );
  }

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//| dont forget to remove objects on deinit()                        |
//+------------------------------------------------------------------+
int deinit()
  {
   tbRemove(btn1);tbRemove(btn2);
   tbRemove(l1);tbRemove(l2);   
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int hwnd=WindowHandle( Symbol (), Period ()); ticks++; pReset();
   if ( MathMod (ticks, 20 )== 19 && StringLen (obj1)> 0 ) ObjectDelete (obj1);
   
   
   
   // If still not logged in we use this block
   if (!LoggedIn)
   {
       // exit button
       if (tbIsClicked(btn2)) {     ObjectsDeleteAll (); tbRemoveAll(hwnd); Destroy( "Authentification Failed" ); return ( 1 );      }
  
       // login button
       if (tbIsClicked(btn1)) {
       if (tbGetText(l1)== "admin" && tbGetText(l2)== "pass" )
         { PlaySound ( "ok.wav" ); LoggedIn=true; tbRemoveAll(hwnd); ObjectsDeleteAll (); }
         else
         { PlaySound ( "alert2.wav" ); obj1 = pxy( "Authentification Failed" , Red , 250 , 20 , 12 );}        
      } 
       return ( 1 );
   }
   // From here we have the functions after login
   p( "Admin has been autentificated successfully" , Green ); 
   
   
   
   return ( 0 );
  }
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
string pxy( string mytext, color clr, int posx, int posy, int size)
{
   string n= "pxy3txt" +posx+posy;
   ObjectCreate (n, OBJ_LABEL , 0 , Time[lib_startbarno], lib_nextlinelevel);
   ObjectSet(n, OBJPROP_CORNER , 0 );
   ObjectSet(n, OBJPROP_XDISTANCE , posx);
   ObjectSet(n, OBJPROP_YDISTANCE , posy);
   ObjectSet(n, OBJPROP_COLOR , clr);
   ObjectSet(n, OBJPROP_BACK , false);
   ObjectSetText(n, mytext, size);
   return (n);
}

Ekran görüntülerimde gördüğünüz gibi demolar çalışıyor. mt4gui'nin bu versiyonunu az önce 0.3 versiyonu olarak yükledim, en son versiyonu alabilirsiniz. 0.1'in hiç renk desteği yok. Muhtemelen 0.1 kullanıyorsunuz.

Düğmeleri ekrandan kaldırmak için deinit() kullanmanız gerekir.

 //+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//| dont forget to remove objects on deinit()                        |
//+------------------------------------------------------------------+
int deinit()
  {
   tbRemove(btn1);tbRemove(btn2);
   tbRemove(l1);tbRemove(l2);   
   return ( 0 );
  }
 

Merhaba,

Bu şimdiye kadar gördüğüm en kullanışlı eklenti, geliştirdiğiniz için teşekkürler.

Bir onay kutusunun durumunu almanın veya bir metin kutusu/etiket/düğmenin metnini almanın bir yolu var mı?

Renkler sürüm 0.2 ile çalışmaz.

Neden: