KimIV의 유용한 기능 - 페이지 75

 

안녕 사랑하는 이고르! 내 시스템은 추세 억제를 사용합니다. 그리고 횡단 시간과 가격 모두 중요합니다.
일련의 막대에 항상 "연속적인" 시간이 있는 것은 아닙니다. 주말, 홀 등
CrossPointOfLines (test_CrossPointOfLines.mq4에서)를 사용하여 자연스러운 형태로 시간을 계산하면 다음과 같은 결과가 나타납니다.

제로 바의 왼쪽

(차트에서 추세선의 위치는 시스템과 아무 관련이 없습니다. 무작위 선택입니다. 추세선의 기준점은

동시에 하나는 0 막대의 왼쪽에 있고 다른 하나는 오른쪽에 있습니다.)


그리고 오른쪽

계산은 시간 단위가 아니라 상황에 따라 막대 단위와 시간 단위로 이루어져야 합니다. 왼쪽의 시간 단위는 막대입니다. 그리고 오른쪽 가장자리의 경우 제로 막대 이후에 이미 시간별 측정으로 이어집니다.

기성품 솔루션에 대한 검색은 아직 아무 것도 얻지 못했습니다. CrossPointOfLines 기능은 지금까지 사이트에 있는 유일한 기능입니다. 그녀는 완벽한 이야기가 필요합니다 :(

 

이고르 좋은 시간!

조언이나 해결을 도와주세요. 나는 이전 막대 PREPrevious가 신호를 준 "흡수"했을 때 조언자를 만들려고합니다.

1 - 흡수가 일어난 경우
2 - 흡수가 아래로 일어난 경우.

초등까지는 모든 것이 불가능한 것 같고, 시가 와 종가 를 비교하고 짜잔...그래서 NO. 무작위로 신호를 내보는데 앞의 2개 막대 위에 마우스를 올려놓으면 마지막 막대가 끝에서 두 번째 막대를 흡수한다는 것을 분명히 알 수 있습니다.

주제를 고를 힘도 없고 선택의 여지가 거의 없는 것 같긴 한데, 그래도 아무렇게나 안 되고 그게 다에요 정말 도움이 되기를 바라며 미리 감사드립니다


텍스트는 다음과 같습니다.

정수 시작()
{
//----
if (Short()==1)
경고("1");
}
if (SLong()==1)
경고("2");
}
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
int SShort()
{int MS=0;
if (열기[1]>닫기[2] && 닫기[1]<열기[2] && 열기[1]>닫기[1] && 열기[2]<닫기[2])
MS=1;
반환(MS);
}
//+----------------------------------------------- --------------------+
int SLong()
{
intML=0;
if(열기[1]<닫기[2] && 닫기[1]>열기[2] && 열기[1]<닫기[1] && 열기[2]>닫기[2])
ML=1;
반환(ML);
}
//+----------------------------------------------- --------------------+
 

시간별 필터 세트: FromTo

(그리고 뿐만 아니라...)

무엇을, 어떻게 하느냐고 묻자 스스로 생각한 결과다.


1. 일상 활동의 금지 또는 허가.


옵션 번호 1.

 // Закрыть все позиции в конце дня в указанное время
if ( Hour ( ) = = 23 & & Minute ( ) > = 45 ) 
{ ЗакрытьДень ( ) ; }


// Запретить эксперту торговать С и ПО
if ( ( Hour ( ) = = 22 & & Minute ( ) > = 00 ) & & ( Hour ( ) = = 23 & & Minute ( ) > = 59 ) ) return ;

이러한 옵션의 "유효성"은 분 수의 시 59초까지 확장됩니다.

저것들. 이벤트 23:59의 표시된 종료 시간은 실제로 23:59:59입니다.

그리고 시간이 끝날 때까지 비교 연산자 ">="가 분 단위로 사용되기 때문에 문제가 되지 않으며 "=="를 지정할 수 있습니다.

그러나 시간을 59초로 지우면 어쨌든 지속됩니다...


옵션 번호 2.

설정 조건에서 더 정확합니다 ...

 // Выборка ОТ и ДО
if ( OtTime ( 2 , 15 , 21 ) < OrderCloseTime ( ) & & OrderCloseTime ( ) < DoTime ( 4 , 58 , 33 ) )
{ Действия ; }

// Функции преобразования 
datetime OtTime ( int h = 0 , int m = 0 , int s = 0 ) { datetime ot ;
ot = ( h * 3600 ) + ( m * 60 ) + s + StrToTime ( TimeToStr ( TimeCurrent ( ) , TIME_DATE ) ) ;
return ( ot ) ; }
//--------------
datetime DoTime ( int h = 0 , int m = 0 , int s = 0 ) { datetime dt ;
//if(h>23||h<0) Alert("Должно быть от 0 до 23"); h=0; 
//if(m>59||m<0) Alert("Должно быть от 0 до 59"); m=0;
dt = ( h * 3600 ) + ( m * 60 ) + s + StrToTime ( TimeToStr ( TimeCurrent ( ) , TIME_DATE ) ) ;
return ( dt ) ; }

시간은 함수에 전달된 매개변수를 지정하여 설정됩니다(예: 21:15:23을 (21,15,23)).

추한 것은 분명하지만 꽤 작동하는 코드입니다 ...

ZY: 입력 매개변수의 유효성에 대한 zakomentarenaya 검사는 우연이 아닙니다.

잘못 입력하면 지붕이 날아갑니다. 아직 다른 방법을 찾지 못하고 댓글을 남겼습니다.

따라서이 문제를 해결하는 방법에 대해 매우 감사 하겠습니다 ...


옵션 번호 3.

결과적으로 가장 간단하고 정확한 ...

 // Внешние параметры, могут быть экстернами
string ВН = "02:15" ; // начало события
string ВК = "04:58" ; // конец события

int start ( )
{
int m ;
datetime vn = StrToTime ( ВН ) ;
datetime vk = StrToTime ( ВК ) ;
// либо напрямую указывать время по типу:
//  datetime vn=StrToTime("02:15");
//  datetime vk=StrToTime("04:58");

for ( int m = 0 ; m < OrdersHistoryTotal ( ) ; m + + ) 
{
OrderSelect ( m , SELECT_BY_POS , MODE_HISTORY ) ;
if ( ( OrderCloseTime ( ) > vn ) & & ( OrderCloseTime ( ) < vk ) )
{ Действия ; }
}

return ( )
}

단순함의 전체 요점은 분명히 StrToTime() 함수에 의해 전달된 매개변수 변환의 특성에 있습니다.

예를 들어 시간 "HH:MM:SS"만 입력하면 출력은 각 현재 날짜의 시간이 됩니다...


그런데...

 // можно написать и так:
if ( ( OrderCloseTime ( ) > StrToTime ( ВН ) ) & & ( OrderCloseTime ( ) < StrToTime ( ВК ) ) )
// или даже так:
if ( ( OrderCloseTime ( ) > StrToTime ( "02:15" ) ) & & ( OrderCloseTime ( ) < StrToTime ( "04:58" ) ) )

선택 항목을 시간과 일을 결합하여 유형별로 필터링할 수 있습니다.

- 매일 18:00에 발생한 일 또는 지정된 기간 동안 매일 발생한 일 시작 및 종료 시: 분: 초

그러나 날짜 범위는 ~ 에서 ~ 까지로 구성될 수도 있습니다.


2. DateFirstDayMonday() 함수

( DateOfMonday () 기준)

 datetime DateFirstDayMonday ( ) 
{ 
datetime dfdm ;
dfdm = StrToTime ( TimeToStr ( TimeCurrent ( ) , TIME_DATE ) ) - ( ( Day ( ) - 1 ) * 86400 ) ;
return ( dfdm ) ;
}

현재 월의 00:00:00 시간으로 첫째 날의 날짜를 반환합니다.

해당 월의 BEGINNING 또는 시작하기 전에 이벤트를 필터링하는 데 필요했습니다.

 // выборка закрытых ордеров с начала месяца:
if ( DateFirstDayMonday ( ) < OrderCloseTime ( ) )
{ Действия ; }

// выборка ДО начала месяца (с начала истории счёта):
if ( DateFirstDayMonday ( ) - 1 > OrderCloseTime ( ) )
{ Действия ; }

두 번째 예에서 DateFirstDayMonday()-1은 "전월 말일 23:59:59" 시간을 출력합니다.


...

chaineG 이기 때문에 미리 발로 차지 말아주시길 부탁드립니다.

:)))

 
Igor, 이 표시기에 경고 를 추가할 수 있도록 도와주세요.
파일:
 
kombat >> :

chaineG 때문에 미리 발로 차지 말기를 당부드립니다. :)))

Chaineg는 티네가 아니지만 이미 잡아 당겼으므로 끝까지 가져 오십시오. 따라서 허용된 작업 시간, 종료 시간을 다음과 같은 별도의 부울 함수로 가져오도록 요청합니다.

bool TradeTime(거래 시작 시간, 거래 종료 시간)

그러면 if (TradeTime(..,..)) 및 작업을 사용하는 것이 매우 편리할 것입니다!

 
granit77 >> :

Chayneg는 chayneg가 아니지만 이미 잡아 당겼으므로 끝까지 가져 오십시오. 따라서 허용된 작업 시간, 종료 시간을 다음과 같은 별도의 부울 함수로 가져오도록 요청합니다.

bool TradeTime(거래 시작 시간, 거래 종료 시간)

그러면 (TradeTime(..,..)) 작업을 하는 것이 매우 편리할 것입니다!



글쎄, 이미... ;)

한 은행의 경우 한 번에 두 가지 타이밍으로 변형을 만듭니다.

- 22:00 롤오버 전 모든 주문 및 포지션 마감

- 22:00 롤오버 시작부터 23:59 종료까지 거래 일시 중지

(추가 확인이 없는 원시 버전)

 //HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH>
//HHHHH Стартуем... HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH>
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH>
int start ( ) {
//--- Общая проверка --------------------------------------------------------+
if ( ! IsCondition ( ) ) { Print ( "Низззяяя..." ) ; return ; }
//--- Задание неторгового времени (паузы) -----------------------------------+
ObjectDelete ( "НЕТОРГВРЕМЯ" ) ;
if ( ( TimeCurrent ( ) > StrToTime ( "22:00" ) ) & & ( TimeCurrent ( ) < StrToTime ( "23:59:59" ) ) ) 
{ NoTradeTime ( ) ; return ; }
//--- Принудительное закрытие всех ордеров и позиций в конце дня ------------+
if ( Hour ( ) = = 21 & & Minute ( ) > = 45 ) { ЗакрытьДень ( ) ; return ; }
//*метод имеет недостаток: он будет закрывать до конца указаного часа...
//*например время 21:45, закрывать будет до 21:59:59 а с 22:00 прекратит.
//*впринципе это нам не повредит...
//--- Конец условий ---------------------------------------------------------+
// бла-бла-бла...
return ( 0 ) ;
}
 
kombat >> :

..(추가 검사가 없는 원시 버전)

Vinin은 정시에 작업하기 위해 별도의 기능을 가지고 있었고 매우 상세하고 잘 작동했습니다. 그의 웹사이트에서 고문을 보거나 그에게 연락하십시오.

 
granit77 >> :

Vinin은 정시에 작업하기 위해 별도의 기능을 가지고 있었고 매우 상세하고 잘 작동했습니다. 그의 웹사이트에서 고문을 보거나 그에게 연락하십시오.

감사합니다만 아직까지는 필요하지 않습니다...

이 고문에 대해 약간의 시간을 할애하고

그래서 거기에 쓰는 원칙이 있고 쓰는 방법도 명확합니다 ...

*

이 주제를 어지럽히지 않기 위해 은행 포럼에 본문을 게시합니다.

예정된 시간 안에... ;)

 
granit77 >> :

bool TradeTime(거래 시작 시간, 거래 종료 시간)

그러면 if (TradeTime(..,..)) 및 작업을 사용하는 것이 매우 편리할 것입니다!

이고르 김은 그런 기능을 주문해야 합니다.

 
goldtrader писал(а) >>

이고르 김은 그런 기능을 주문해야 합니다.

요청에 동참합니다! pts. 유용하고 요청된 기능. 현재 거래 현실에 비추어....

거기에 두 개의 TIME 간격을 제공하는 것도 가능합니다.