//+------------------------------------------------------------------+ //| 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 | //+------------------------------------------------------------------+ intOnInit() { //--- 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
} //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ voidOnTick() { //--- 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(constlong chart_ID=0, // chart's ID conststring name="BmpLabel", // label name constint sub_window=0, // subwindow index constint x=0, // X coordinate constint y=0, // Y coordinate conststring file_on="", // image in On mode conststring file_off="", // image in Off mode constint width=0, // visibility scope X coordinate constint height=0, // visibility scope Y coordinate constint x_offset=10, // visibility scope shift by X axis constint y_offset=10, // visibility scope shift by Y axis constbool state=false, // pressed/released constENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring constENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // anchor type constcolor clr=clrRed, // border color when highlighted constENUM_LINE_STYLE style=STYLE_SOLID, // line style when highlighted constint point_width=1, // move point size constbool back=false, // in the background constbool selection=false, // highlight to move constbool hidden=true, // hidden in the object list constlong 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 } //+------------------------------------------------------------------+
bool use_stoploss; // stoploss flag //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ intOnInit () { //--- 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
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( constlong chart_ID= 0 , // chart's ID conststring name= "BmpLabel" , // label name constint sub_window= 0 , // subwindow index constint x= 0 , // X coordinate constint y= 0 , // Y coordinate conststring file_on= "" , // image in On mode conststring file_off= "" , // image in Off mode constint width= 0 , // visibility scope X coordinate constint height= 0 , // visibility scope Y coordinate constint x_offset= 10 , // visibility scope shift by X axis constint y_offset= 10 , // visibility scope shift by Y axis constbool state= false , // pressed/released constENUM_BASE_CORNER corner= CORNER_LEFT_UPPER , // chart corner for anchoring constENUM_ANCHOR_POINT anchor= ANCHOR_LEFT_UPPER , // anchor type constcolor clr= clrRed , // border color when highlighted constENUM_LINE_STYLE style= STYLE_SOLID , // line style when highlighted constint point_width= 1 , // move point size constbool back= false , // in the background constbool selection= false , // highlight to move constbool hidden= true , // hidden in the object list constlong 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 } //+------------------------------------------------------------------+
OnTick() 함수에 넣었지만 결국 타이머 함수에서 실행하고 싶을 수도 있습니다. 왜냐하면 이제 상태를 변경하기 위해 틱을 받아야 하고 새 틱이 도착하기 전에 주문하면 여전히 이전 틱이 있기 때문입니다. 바람직하지 않을 수 있지만 다시 타이머가 테스터에서 작동하지 않으므로 테스트 목적으로 더 좋지만 결국 타이머 기능에서 상태를 전환하는 것이 훨씬 더 빠르고 시장이 닫히고 들어오는 틱이 없을 때도 작동합니다. 왜 그것이 작동하지 않는지 스스로에게 묻고 싶지 않기 때문에 들어오는 틱이 없기 때문이라는 것을 기억하십시오.
OnTick() 함수에 넣었지만 결국 타이머 함수에서 실행하고 싶을 수도 있습니다. 왜냐하면 이제 상태를 변경하기 위해 틱을 받아야 하고 새 틱이 도착하기 전에 주문하면 여전히 이전 틱이 있기 때문입니다. 바람직하지 않을 수 있지만 다시 타이머가 테스터에서 작동하지 않으므로 테스트 목적으로 더 좋지만 결국 타이머 기능에서 상태를 전환하는 것이 훨씬 더 빠르고 시장이 닫히고 들어오는 틱이 없을 때도 작동합니다. 왜 그것이 작동하지 않는지 스스로에게 묻고 싶지 않기 때문에 들어오는 틱이 없기 때문이라는 것을 기억하십시오.
이봐, 나는 아직 시도하지 않았다. 나는 당신의 2 개의 코멘트가 내 EA 코드의 그 부분을 끝낼 것이라고 생각합니다. 큰 감사, 당신은 나를 올바르게 이해하고 있습니다.
OnTick() 대신 OnChartEvent()를 사용할 수 있습니까? 나는 이미 시도했지만 아직 아무런 문제가 보이지 않지만 OnTick() 함수를 사용했습니다. 단지 확인하고 싶습니다.
@ Marco 는 이미지 위치에 문제가 있는지 묻고 싶습니다. Off ( / False / 1 ) Stop Loss가 활성화되고 On ( / True / 0 ) Stop Loss가 비활성화되기 때문입니다. (저는 아무 것도 변경하고 싶지 않습니다. 이 비트맵은 저에게 매우 위험합니다. 농담이 아닙니다. 여전히 시간이 오래 걸리는 것 같습니다.) 또한 시도 하기 전에 물어볼 필요가 있습니다 . Bitmap Label Object의전역 변수 에 대해 사용할 특정 사항이 있습니까? (내 질문 이유는 Bitmap Label Object가 다른 것과 상당히 다른 것이 필요하다는 것을 알았습니다... 등등)
//| 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
}
//+------------------------------------------------------------------+
또는 자체적으로 함수 에 넣을 수 있습니다.
OnTick() 함수에 넣었지만 결국 타이머 함수에서 실행하고 싶을 수도 있습니다. 왜냐하면 이제 상태를 변경하기 위해 틱을 받아야 하고 새 틱이 도착하기 전에 주문하면 여전히 이전 틱이 있기 때문입니다. 바람직하지 않을 수 있지만 다시 타이머가 테스터에서 작동하지 않으므로 테스트 목적으로 더 좋지만 결국 타이머 기능에서 상태를 전환하는 것이 훨씬 더 빠르고 시장이 닫히고 들어오는 틱이 없을 때도 작동합니다. 왜 그것이 작동하지 않는지 스스로에게 묻고 싶지 않기 때문에 들어오는 틱이 없기 때문이라는 것을 기억하십시오.
//| 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 ;
}
}
}
또는 자체적으로 함수 에 넣을 수 있습니다.
OnTick() 함수에 넣었지만 결국 타이머 함수에서 실행하고 싶을 수도 있습니다. 왜냐하면 이제 상태를 변경하기 위해 틱을 받아야 하고 새 틱이 도착하기 전에 주문하면 여전히 이전 틱이 있기 때문입니다. 바람직하지 않을 수 있지만 다시 타이머가 테스터에서 작동하지 않으므로 테스트 목적으로 더 좋지만 결국 타이머 기능에서 상태를 전환하는 것이 훨씬 더 빠르고 시장이 닫히고 들어오는 틱이 없을 때도 작동합니다. 왜 그것이 작동하지 않는지 스스로에게 묻고 싶지 않기 때문에 들어오는 틱이 없기 때문이라는 것을 기억하십시오.
이봐, 나는 아직 시도하지 않았다. 나는 당신의 2 개의 코멘트가 내 EA 코드의 그 부분을 끝낼 것이라고 생각합니다.
큰 감사, 당신은 나를 올바르게 이해하고 있습니다.
한 번 더 감사합니다. 당신의 큰 도움으로 내 문제를 해결합니다.
OnTick() 대신 OnChartEvent() 를 사용할 수 있습니까?
나는 이미 시도했지만 아직 아무런 문제가 보이지 않지만 OnTick() 함수를 사용했습니다. 단지 확인하고 싶습니다.
@ Marco 는 이미지 위치에 문제가 있는지 묻고 싶습니다. Off ( / False / 1 ) Stop Loss가 활성화되고 On ( / True / 0 ) Stop Loss가 비활성화되기 때문입니다. (저는 아무 것도 변경하고 싶지 않습니다. 이 비트맵은 저에게 매우 위험합니다. 농담이 아닙니다. 여전히 시간이 오래 걸리는 것 같습니다.)
또한 시도 하기 전에 물어볼 필요가 있습니다 . Bitmap Label Object의 전역 변수 에 대해 사용할 특정 사항이 있습니까? (내 질문 이유는 Bitmap Label Object가 다른 것과 상당히 다른 것이 필요하다는 것을 알았습니다... 등등)
미리 감사드립니다.
아니요, 문서를 따르기만 하면 됩니다.
그리고 예, OnChartEvent()에서 사용할 수 있지만 클릭할 때 한 번만 실행되기 때문에 예를 들어 trailingstop 코드를 포함할 수 없음을 기억하십시오.
비트맵 문제의 경우 폴더로 이동하여 이름을 onOLD로 변경한 다음 off의 이름을 on으로 변경한 다음 onOLD의 이름을 off로 변경하면 두 파일의 이름을 변경하여 문제를 해결할 수 있습니다.
또는 아래 버튼을 사용할 수 있습니다.
더 작은 것이 필요하면 크기를 조정할 수도 있습니다.
이름이 바뀌면 저에게 효과적이지만 코드에서 올바르게 작동하기 때문에 다시 한 번 확인할 것입니다.
전역 변수: 아래 코드와 같이 시도했지만 전역 변수 창에 표시해도 결과가 없습니다.
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 );
}
당신은 나를 위해 많은 것을 만들어 냈습니다. 큰 감사합니다.
//| 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 );
}
//+------------------------------------------------------------------+
작동하는 것 같습니다.
Marco vd Heijden :
작동하는 것 같습니다.
그러나 마지막 변경 사항은 저장하지 않습니다.
예: 차트에 추가한 다음 '켜기'로 전환한 다음 다른 시간 프레임으로 전환하면 '끄기'가 반환되며 정상이 아닙니다.
그리고 완벽하게 작동하는 다른 기능 'Lot, Stop Loss, Take Profit'에 글로벌 변수를 사용하고 있지만 이 Bitmap Label 은 작동하지 않습니다.
이 비트맵 레이블 문제를 해결하는 방법에 대해 조언을 주거나 저를 도와주세요.
고마워요.
아래 코드는 당신이 나를 도운 후에 완벽하게 작동합니다. 감사합니다.
그리고 나는 당신이 말한대로 이름을 바꿨습니다. 잘 작동하지만 궁금한 점이 있습니다 . 내가 뭔가 잘못하고 있습니까?
(그냥 걱정 된다)
void ordersell()
{
CheckStopLossState();
if ( use_stoploss == 0 )
{ sl = Bid + points_to_change( stoploss * 10 ); }
if ( use_stoploss == 1 )
{ sl = 0 ; }
OrderSend ( ... sl, ... );
return ;
}
미리 감사드립니다.