ObjectFind() 함수는 기본 창의 번호를 반환합니다. 그리고 이 숫자는 0과 같습니다. 반면에 0 == false인 경우 함수가 0을 반환하면 false를 반환하는 것과 같습니다. 물론 함수가 갑자기 -1을 반환하면, 즉 오류가 발생하면 이것을 적용하지 않을 것입니다. 그러면 메인 창에 없는 객체의 위치를 고려할 수 있습니다. 예, 모든 것에 더해 어떤 수정이 이루어질지 결코 알 수 없습니다 ...
일반적으로 논쟁하지 말고 그렇게하는 법을 배우지 마십시오 ...
ObjectFind() 함수는 기본 창의 번호를 반환하지 않습니다. 그리고 개체가 발견된 창의 번호(0,1,2...) 또는 개체가 없으면 -1입니다.
"-1"이 거짓인지 참인지 궁금합니다.
bool 유형 은숫자 표현이 각각 1 또는 0인논리값true(true) 또는false (false)를 저장하도록 설계되었습니다.
ObjectFind() 함수는 기본 창의 번호를 반환합니다. 그리고 이 숫자는 0과 같습니다. 반면에 0 == false인 경우 함수가 0을 반환하면 false를 반환하는 것과 같습니다. 물론 함수가 갑자기 -1을 반환하면, 즉 오류가 발생하면 이것을 적용하지 않을 것입니다. 그러면 메인 창에 없는 객체의 위치를 고려할 수 있습니다. 예, 모든 것에 더해 어떤 수정이 이루어질지 결코 알 수 없습니다 ...
일반적으로 논쟁하지 말고 그렇게하는 법을 배우지 마십시오 ...
나는 이것이 할 가치가 없다는 것을 알고 있지만 미학을 위해해야했습니다 (각 조건에서 == 0은 추해 보입니다). 그리고 메인 창에서만 개체가 필요합니다.
문제: 차트 에서 버튼을 눌렀을 때 노란색과 회색 선("매도 중지" 및 "허용되지 않음")이 지속적으로 생성되고 깜박입니다. 또한 ObjectCreate()는 계속해서 거짓이 아닌 참을 반환합니다. 즉, 마치 다른 창에 있는 것처럼 생성하므로 깜박임을 설명할 수 있습니다. 그러나 창은 기본 창일 뿐이며 녹색 선("구매 중지" ) 빨간색과 같이 이상 현상이 관찰되지 않습니다("손절매").
voidOnChartEvent ( constint id, constlong &lparam, constdouble &dparam, conststring &sparam)
{
datetimestatic dt = 0 ;
doublestatic price = 0 ;
intstatic window = 0 ;
stringstatic line_name;
if (id== CHARTEVENT_OBJECT_CLICK ){
...
//Нажатие на SO в зависимоти от расположения панели создаёт линиюif (sparam== "Button Stop Order" ){
if (panel_position == 1 || panel_position == 2 ){
line_name = "Buy Stop" ;
CreateLine(line_name, clrGreen );
}
if (panel_position == 3 || panel_position == 4 ){
line_name = "Sell Stop" ;
CreateLine(line_name, clrYellow );
}
}
//Нажатие на линию удаляет её и создаёт краснуюif (sparam== "Buy Stop" || sparam== "Sell Stop" ){
ObjectDelete (line_name);
line_name = "Stop Loss" ;
CreateLine(line_name, clrRed );
}
//Нажатие на красной линии удаляет её и отжимает кнопкуif (sparam== "Stop Loss" ){
ObjectDelete (line_name);
button_name = "Button Stop Order" ;
ms= GetMicrosecondCount ();
}
}
//Если кнопка SO нажата, то линия будет следовать за курсоромif ( ObjectGetInteger ( 0 , "Button Stop Order" , OBJPROP_STATE )){
int x = ( int )lparam;
int y = ( int )dparam;
//Переведём координаты X, Y в дату и времяif ( ChartXYToTimePrice ( 0 ,x,y,window,dt,price)){
//Линия меняет цвет с зелёного на желтыйif (price < Bid){
if ( ObjectFind ( "Buy Stop" ) == window || ObjectFind ( "not allowed" ) == window){
ObjectDelete (line_name);
line_name = "Sell Stop" ;
CreateLine(line_name, clrYellow );
}
}
//Линия меняет цвет с желтого на зелёныйif (price > Ask){
if ( ObjectFind ( "Sell Stop" ) == window || ObjectFind ( "not allowed" ) == window){
ObjectDelete (line_name);
line_name = "Buy Stop" ;
CreateLine(line_name, clrGreen );
}
}
//Линия меняет цвет на серый если в зоне спредаif (price > Bid && price < Ask){
if ( ObjectFind ( "Buy Stop" ) == window || ObjectFind ( "Sell Stop" ) == window){
ObjectDelete (line_name);
line_name = "not allowed" ;
CreateLine(line_name, clrGray );
}
}
//Прикрепляем линию к курсоруif (id == CHARTEVENT_MOUSE_MOVE )
if ( ObjectMove ( 0 ,line_name, 0 , 0 ,price))
ChartRedraw ( 0 );
}
} elseif ( ObjectFind (line_name) == window) Print ( ObjectDelete (line_name));
//Если нажать Esc то удалится линия и кнопка отожметсяif (id == CHARTEVENT_KEYDOWN && lparam == 27 ){
button_name = "Button Stop Order" ;
ms= GetMicrosecondCount ();
}
}
//----------------------------------------------------------------------void CreateLine( conststring name, constcolor clr)
{
Print ( ObjectCreate ( 0 , name, OBJ_HLINE , 0 , 0 , 0 ));
ObjectSetInteger ( 0 , name, OBJPROP_COLOR , clr);
ObjectSetInteger ( 0 , name, OBJPROP_STYLE , 3 );
}
Makar 없음, 다음과 같이 보입니다.
ObjectFind() 함수는 기본 창의 번호를 반환합니다. 그리고 이 숫자는 0과 같습니다. 반면에 0 == false인 경우 함수가 0을 반환하면 false를 반환하는 것과 같습니다. 물론 함수가 갑자기 -1을 반환하면, 즉 오류가 발생하면 이것을 적용하지 않을 것입니다. 그러면 메인 창에 없는 객체의 위치를 고려할 수 있습니다. 예, 모든 것에 더해 어떤 수정이 이루어질지 결코 알 수 없습니다 ...
일반적으로 논쟁하지 말고 그렇게하는 법을 배우지 마십시오 ...
ObjectFind() 함수는 기본 창의 번호를 반환하지 않습니다. 그리고 개체가 발견된 창의 번호(0,1,2...) 또는 개체가 없으면 -1입니다.
"-1"이 거짓인지 참인지 궁금합니다.
bool 유형 은 숫자 표현이 각각 1 또는 0인 논리값 true (true) 또는 false (false)를 저장하도록 설계되었습니다.ObjectFind() 함수는 기본 창의 번호를 반환하지 않습니다. 그리고 개체가 발견된 창의 번호(0,1,2...) 또는 개체가 없으면 -1입니다.
개체가 기본 창에 있는 특정 경우에 대해 이야기했습니다. 논쟁하지 말고 그렇게하는 법을 배우지 마십시오 ...
MakarFX # :
"-1"이 거짓인지 참인지 궁금합니다.
bool 유형 은 숫자 표현이 각각 1 또는 0인 논리값 true (true) 또는 false (false)를 저장하도록 설계되었습니다.false는 0일 뿐입니다. 나머지는 모두 true입니다.
false는 0일 뿐입니다. 나머지는 모두 true입니다.
Makar 없음, 다음과 같이 보입니다.
ObjectFind() 함수는 기본 창의 번호를 반환합니다. 그리고 이 숫자는 0과 같습니다. 반면에 0 == false인 경우 함수가 0을 반환하면 false를 반환하는 것과 같습니다. 물론 함수가 갑자기 -1을 반환하면, 즉 오류가 발생하면 이것을 적용하지 않을 것입니다. 그러면 메인 창에 없는 객체의 위치를 고려할 수 있습니다. 예, 모든 것에 더해 어떤 수정이 이루어질지 결코 알 수 없습니다 ...
일반적으로 논쟁하지 말고 그렇게하는 법을 배우지 마십시오 ...
나는 이것이 할 가치가 없다는 것을 알고 있지만 미학을 위해해야했습니다 (각 조건에서 == 0은 추해 보입니다). 그리고 메인 창에서만 개체가 필요합니다.
나는 이것이 할 가치가 없다는 것을 알고 있지만 미학을 위해해야했습니다 (각 조건에서 == 0은 추해 보입니다). 그리고 메인 창에서만 개체가 필요합니다.
그럼 해봐
객체가 없으면 "-1"이 표시됩니다. 진실
문제: 차트 에서 버튼을 눌렀을 때 노란색과 회색 선("매도 중지" 및 "허용되지 않음")이 지속적으로 생성되고 깜박입니다. 또한 ObjectCreate()는 계속해서 거짓이 아닌 참을 반환합니다. 즉, 마치 다른 창에 있는 것처럼 생성하므로 깜박임을 설명할 수 있습니다. 그러나 창은 기본 창일 뿐이며 녹색 선("구매 중지" ) 빨간색과 같이 이상 현상이 관찰되지 않습니다("손절매").
그럼 해봐
객체가 없으면 "-1"이 표시됩니다. 진실
나는 시도했지만 예외가 작동하려면 개체의 이름(반전)을 변경해야 합니다. 그러나 선은 그렇게 만들어지지 않습니다.
시도했지만 개체의 이름만 변경하면 됩니다. 그러나 이 방법으로는 선이 전혀 생성되지 않습니다.
나도 너도 만들고 가격만 '0'