Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
//| Stoploss.mq4 |
//| Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create object
BitmapLabelCreate(
0, // chart's ID
"BmpLabel", // label name
0, // subwindow index
20, // X coordinate
20, // Y coordinate
"\\Images\\on.bmp", // image in On mode
"\\Images\\off.bmp", // image in Off mode
0, // visibility scope X coordinate
0, // visibility scope Y coordinate
0, // visibility scope shift by X axis
0, // visibility scope shift by Y axis
0, // pressed/released
CORNER_LEFT_UPPER, // chart corner for anchoring
ANCHOR_LEFT_UPPER, // anchor type
clrRed, // border color when highlighted
STYLE_SOLID, // line style when highlighted
1, // move point size
false, // in the background
false, // highlight to move
true, // hidden in the object list
0); // priority for mouse click
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(ObjectGetInteger(0,"BmpLabel",OBJPROP_STATE)==true)
{
Print("Stoploss active");
// Do Something...
}
if(ObjectGetInteger(0,"BmpLabel",OBJPROP_STATE)==false)
{
Print("Stoploss inactive");
// Do Something...
}
}
//+------------------------------------------------------------------+
//| Create Bitmap Label object |
//+------------------------------------------------------------------+
bool BitmapLabelCreate(const long chart_ID=0, // chart's ID
const string name="BmpLabel", // label name
const int sub_window=0, // subwindow index
const int x=0, // X coordinate
const int y=0, // Y coordinate
const string file_on="", // image in On mode
const string file_off="", // image in Off mode
const int width=0, // visibility scope X coordinate
const int height=0, // visibility scope Y coordinate
const int x_offset=10, // visibility scope shift by X axis
const int y_offset=10, // visibility scope shift by Y axis
const bool state=false, // pressed/released
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring
const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // anchor type
const color clr=clrRed, // border color when highlighted
const ENUM_LINE_STYLE style=STYLE_SOLID, // line style when highlighted
const int point_width=1, // move point size
const bool back=false, // in the background
const bool selection=false, // highlight to move
const bool hidden=true, // hidden in the object list
const long z_order=0) // priority for mouse click
{
//--- reset the error value
ResetLastError();
//--- create a bitmap label
if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
": failed to create \"Bitmap Label\" object! Error code = ",GetLastError());
return(false);
}
//--- set the images for On and Off modes
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
{
Print(__FUNCTION__,
": failed to load the image for On mode! Error code = ",GetLastError());
return(false);
}
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
{
Print(__FUNCTION__,
": failed to load the image for Off mode! Error code = ",GetLastError());
return(false);
}
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); //--- set label coordinates
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); //--- set visibility scope for the image; if width or height values
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset); //--- set the part of an image that is to be displayed in the visibility scope
ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); //--- define the label's status (pressed or released)
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- set the chart's corner, relative to which point coordinates are defined
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); //--- set anchor type
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- set the border color when object highlighting mode is enabled
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); //--- set the border line style when object highlighting mode is enabled
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width); //--- set a size of the anchor point for moving an object
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- display in the foreground (false) or background (true)
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);//--- enable (true) or disable (false) the mode of moving the label by mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- hide (true) or display (false) graphical object name in the object list
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- set the priority for receiving the event of a mouse click in the chart
return(true); //--- successful execution
}
//+------------------------------------------------------------------+
//| Stoploss.mq4 |
//| Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
bool use_stoploss; // stoploss flag
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//--- create object
BitmapLabelCreate(
0 , // chart's ID
"BmpLabel" , // label name
0 , // subwindow index
20 , // X coordinate
20 , // Y coordinate
"\\Images\\on.bmp" , // image in On mode
"\\Images\\off.bmp" , // image in Off mode
0 , // visibility scope X coordinate
0 , // visibility scope Y coordinate
0 , // visibility scope shift by X axis
0 , // visibility scope shift by Y axis
0 , // pressed/released
CORNER_LEFT_UPPER , // chart corner for anchoring
ANCHOR_LEFT_UPPER , // anchor type
clrRed , // border color when highlighted
STYLE_SOLID , // line style when highlighted
1 , // move point size
false , // in the background
false , // highlight to move
true , // hidden in the object list
0 ); // priority for mouse click
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
//--- check stoploss
CheckStoplossState();
if (use_stoploss== 0 )
{
// Do something...
}
if (use_stoploss== 1 )
{
// Do Something else...
}
}
//+------------------------------------------------------------------+
//| Check Stoploss state |
//+------------------------------------------------------------------+
void CheckStoplossState()
{
if ( ObjectGetInteger ( 0 , "BmpLabel" , OBJPROP_STATE )== true )
{
if (use_stoploss== 0 )
{
Alert ( "Stoploss active" );
use_stoploss= 1 ;
}
}
if ( ObjectGetInteger ( 0 , "BmpLabel" , OBJPROP_STATE )== false )
{
if (use_stoploss== 1 )
{
Alert ( "Stoploss inactive" );
use_stoploss= 0 ;
}
}
}
//+------------------------------------------------------------------+
//| Create Bitmap Label object |
//+------------------------------------------------------------------+
bool BitmapLabelCreate( const long chart_ID= 0 , // chart's ID
const string name= "BmpLabel" , // label name
const int sub_window= 0 , // subwindow index
const int x= 0 , // X coordinate
const int y= 0 , // Y coordinate
const string file_on= "" , // image in On mode
const string file_off= "" , // image in Off mode
const int width= 0 , // visibility scope X coordinate
const int height= 0 , // visibility scope Y coordinate
const int x_offset= 10 , // visibility scope shift by X axis
const int y_offset= 10 , // visibility scope shift by Y axis
const bool state= false , // pressed/released
const ENUM_BASE_CORNER corner= CORNER_LEFT_UPPER , // chart corner for anchoring
const ENUM_ANCHOR_POINT anchor= ANCHOR_LEFT_UPPER , // anchor type
const color clr= clrRed , // border color when highlighted
const ENUM_LINE_STYLE style= STYLE_SOLID , // line style when highlighted
const int point_width= 1 , // move point size
const bool back= false , // in the background
const bool selection= false , // highlight to move
const bool hidden= true , // hidden in the object list
const long z_order= 0 ) // priority for mouse click
{
//--- reset the error value
ResetLastError ();
//--- create a bitmap label
if (! ObjectCreate (chart_ID,name, OBJ_BITMAP_LABEL ,sub_window, 0 , 0 ))
{
Print ( __FUNCTION__ ,
": failed to create \"Bitmap Label\" object! Error code = " , GetLastError ());
return ( false );
}
//--- set the images for On and Off modes
if (! ObjectSetString (chart_ID,name, OBJPROP_BMPFILE , 0 ,file_on))
{
Print ( __FUNCTION__ ,
": failed to load the image for On mode! Error code = " , GetLastError ());
return ( false );
}
if (! ObjectSetString (chart_ID,name, OBJPROP_BMPFILE , 1 ,file_off))
{
Print ( __FUNCTION__ ,
": failed to load the image for Off mode! Error code = " , GetLastError ());
return ( false );
}
ObjectSetInteger (chart_ID,name, OBJPROP_XDISTANCE ,x); //--- set label coordinates
ObjectSetInteger (chart_ID,name, OBJPROP_YDISTANCE ,y);
ObjectSetInteger (chart_ID,name, OBJPROP_XSIZE ,width); //--- set visibility scope for the image; if width or height values
ObjectSetInteger (chart_ID,name, OBJPROP_YSIZE ,height);
ObjectSetInteger (chart_ID,name, OBJPROP_XOFFSET ,x_offset); //--- set the part of an image that is to be displayed in the visibility scope
ObjectSetInteger (chart_ID,name, OBJPROP_YOFFSET ,y_offset);
ObjectSetInteger (chart_ID,name, OBJPROP_STATE ,state); //--- define the label's status (pressed or released)
ObjectSetInteger (chart_ID,name, OBJPROP_CORNER ,corner); //--- set the chart's corner, relative to which point coordinates are defined
ObjectSetInteger (chart_ID,name, OBJPROP_ANCHOR ,anchor); //--- set anchor type
ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr); //--- set the border color when object highlighting mode is enabled
ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style); //--- set the border line style when object highlighting mode is enabled
ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,point_width); //--- set a size of the anchor point for moving an object
ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back); //--- display in the foreground (false) or background (true)
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection); //--- enable (true) or disable (false) the mode of moving the label by mouse
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden); //--- hide (true) or display (false) graphical object name in the object list
ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order); //--- set the priority for receiving the event of a mouse click in the chart
return ( true ); //--- successful execution
}
//+------------------------------------------------------------------+
Veya kendi başına bir fonksiyona koyabilirsiniz.
Onu OnTick() işlevine koydum ama sonunda onu zamanlayıcı işlevinde çalıştırmak isteyebilirsiniz çünkü şimdi durumu değiştirmek için bir onay işareti alması gerekiyor ve siparişi yeni bir onay işareti gelmeden önce verirseniz, yine de eskisi olacak. istenmeyen bir durum olabilir, ancak daha sonra zamanlayıcı test cihazında çalışmaz, bu nedenle test amaçları için daha iyidir, ancak sonunda zamanlayıcı işlevinde durum değiştirmek çok daha hızlı olacaktır ve ayrıca piyasa kapandığında ve gelen kene olmadığında da çalışacaktır. Bunu unutmayın, çünkü bunun neden işe yaramadığını kendinize sormak istemezsiniz, bunun nedeni yalnızca gelen kenelerin olmamasıdır.
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
//--- check stoploss
CheckStoplossState();
if (use_stoploss== 0 )
{
// Do something...
}
if (use_stoploss== 1 )
{
// Do Something else...
}
}
//+------------------------------------------------------------------+
//| Check Stoploss state |
//+------------------------------------------------------------------+
void CheckStoplossState()
{
if ( ObjectGetInteger ( 0 , "BmpLabel" , OBJPROP_STATE )== true )
{
if (use_stoploss== 0 )
{
Alert ( "Stoploss active" );
use_stoploss= 1 ;
}
}
if ( ObjectGetInteger ( 0 , "BmpLabel" , OBJPROP_STATE )== false )
{
if (use_stoploss== 1 )
{
Alert ( "Stoploss inactive" );
use_stoploss= 0 ;
}
}
}
Veya kendi başına bir işleve koyabilirsiniz.
Onu OnTick() işlevine koydum ama sonunda onu zamanlayıcı işlevinde çalıştırmak isteyebilirsiniz çünkü şimdi durumunu değiştirmek için bir onay işareti alması gerekiyor ve siparişi yeni bir onay işareti gelmeden önce verirseniz, yine de eskisine sahip olacaktır. istenmeyen bir durum olabilir, ancak daha sonra zamanlayıcı test cihazında çalışmaz, bu nedenle test amaçları için daha iyidir, ancak sonunda zamanlayıcı işlevinde durum değiştirmek çok daha hızlı olacaktır ve ayrıca piyasa kapandığında ve gelen kene olmadığında da çalışacaktır. Bunu unutmayın, çünkü bunun neden işe yaramadığını kendinize sormak istemezsiniz, bunun nedeni yalnızca gelen kenelerin olmamasıdır.
Dostum, henüz denemedim, 2 yorumunuzun EA kodumun bu bölümünü bitireceğini hissediyorum.
Çok teşekkürler, beni doğru anladınız.
Bir kez daha çok teşekkürler dostum, sorunumu büyük yardımı ile çözüyorum.
OnTick() yerine OnChartEvent () kullanabilir miyim, bu mümkün mü?
Denedim, henüz bir sorun görmüyorum, ancak OnTick() işlevini kullandınız, emin olmak istiyorum.
@ Marco sadece sormak istiyorum, görüntü yerleriyle ilgili herhangi bir yanlışlık var mı, çünkü Off ( / False / 1 ) Stop Loss aktifken ve On ( / True / 0 ) Stop Loss aktif değil. (Sadece hiçbir şeyi değiştirmek istemiyorum, bu bitmap benim için çok tehlikeli, şaka yapmıyorum - hala uzun zamanımı aldığını görüyorum)
Ayrıca denemeye başlamadan önce şunu sormam gerekiyor, Global Variables for Bitmap Label Object ile ilgili kullanılacak özel şeyler var mı? (sorma sebebim sadece Bitmap Label Object'in diğerlerinden oldukça farklı bir şeye ihtiyacı olduğunu görüyorum ... vb.)
Şimdiden teşekkürler.
Hayır, sadece belgeleri takip edebilirsiniz.
Ve evet, onu OnChartEvent() içinde kullanmak mümkündür, ancak örneğin takip eden durdurma kodunu ekleyemeyeceğinizi unutmayın, çünkü tıkladığınızda yalnızca bir kez çalışacaktır.
Bitmap sorunu için klasöre gidin ve onOLD olarak yeniden adlandırın, ardından kapalı olarak yeniden adlandırın ve ardından onOLD öğesini kapalı olarak yeniden adlandırın bu, her iki dosyayı da yeniden adlandırarak sorununuzu çözecektir.
Veya aşağıdaki bu düğmeleri kullanabilirsiniz.
Daha küçük bir şeye ihtiyacınız varsa, onları yeniden boyutlandırabilirim.
Yeniden adlandırılmış benim için çalıştı, ancak kodunuzda doğru çalıştığı için bir kez daha kontrol edeceğimi hissediyorum.
Global Değişkenler: Bunun için aşağıdaki kodu denedim ama Global Değişken Penceresinde görmeme rağmen sonuç yok.
use_stoploss_gv = _Symbol + "test BmpLabel GV" ;
if ( GlobalVariableCheck ( use_stoploss_gv ) == true )
{
use_stoploss = GlobalVariableGet ( use_stoploss_gv );
}
else
{
GlobalVariableSet ( use_stoploss_gv, use_stoploss );
}
Benim için çok şey yaptın, çok teşekkürler dostum.
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---Global Variables
string use_stoploss_gv= _Symbol + "test BmpLabel GV" ;
if ( GlobalVariableCheck (use_stoploss_gv)== true )
{
use_stoploss= GlobalVariableGet (use_stoploss_gv);
Print (use_stoploss_gv, " Exists" );
}
else
{
GlobalVariableSet (use_stoploss_gv,use_stoploss);
Print (use_stoploss_gv, " Created" );
}
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
Çalışıyor gibi görünüyor.
Marco vd Heijden :
Çalışıyor gibi görünüyor.
Ancak son değişiklikleri kaydetmez.
örneğin: Grafiğe ekliyorum, sonra 'Açık' konumuna getiriyorum ve sonra başka bir zaman dilimine geçiyorum, 'Kapalı' dönüyor, normal değil.
Ve mükemmel çalışan başka bir 'Lot, Stop Loss, Take Profit' işlevi için Global Değişkenleri kullanıyorum, ancak bu Bitmap Etiketi çalışmıyor.
Lütfen bana yardım edin veya bu Bitmap Etiketi sorununu nasıl çözebileceğim konusunda tavsiye verin.
Çok teşekkürler dostum.
Bana yardım ettikten sonra aşağıdaki kod mükemmel çalışıyor, teşekkürler dostum.
Ve dediğiniz gibi yeniden adlandırdım, işe yarıyor ama merak ediyorum, yanlış bir şey mi yapıyorum?
(sadece endişeleniyorum )
void ordersell()
{
CheckStopLossState();
if ( use_stoploss == 0 )
{ sl = Bid + points_to_change( stoploss * 10 ); }
if ( use_stoploss == 1 )
{ sl = 0 ; }
OrderSend ( ... sl, ... );
return ;
}
Şimdiden teşekkürler.