uzman danışman - çeşitli sorular - sayfa 10

 
//+------------------------------------------------------------------+
//|                                                     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.

 
Marco vd Heijden :
//+------------------------------------------------------------------+
//| 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.

Dosyalar:
onoff.zip  1 kb
 
Marco vd Heijden :

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.

//---Global Variables
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 )

// function order sell
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.

 
Tasarlandığı gibi çalışıyorsa, yanlış bir şey yapmıyorsanız basittir, aksi takdirde çalışmaz.