시간 확인[0]
// SEE IF THIS WORK FOR YOU..... (I'VE NOT TESTED IT....) int start() { bool sunday_cond = (TimeDayofWeek(TimeCurrent())>=0) && (Hour()>=23); bool monday_cond = (TimeDayofWeek(TimeCurrent())<=1) && (Hour()<=15); if(sunday_cond || monday_cond ) go_trading(); }
bool sunday_cond = ( TimeDayofWeek ( TimeCurrent ( ) ) > = 0 ) & & ( Hour ( ) > = 23 ) ; bool monday_cond = ( TimeDayofWeek ( TimeCurrent ( ) ) < = 1 ) & & ( Hour ( ) < = 15 ) ; if ( sunday_cond | | monday_cond )
이게 맞는지 잘 모르겠습니다. "sunday_cond"는 매일 오후 11시에서 자정 사이에 참입니다. 따라서 코드는 sunday_cond 또는 monday_cond 를 수행하므로 매일 오후 11시 이후에 거래될 가능성이 있습니다. 또한 "monday_cond"는 일요일 오후 3시까지 만납니다. 가능성은 낮지만 일부 시간대에서는 거래 시간 내에 포함될 수도 있습니다. 더 중요한 것은 Hour() <= 15는 오후 3시가 아니라 오후 3시 59분까지 true입니다.
그러나 원칙은 EagleEye가 수행해야 하는 작업 측면에서 분명히 타당합니다. 즉, DayOfWeek() 또는 TimeDayOfWeek()를 사용하여 시간과 요일 을 확인합니다.
이게 맞는지 잘 모르겠습니다. "sunday_cond"는 매일 오후 11시에서 자정 사이에 참입니다. 따라서 코드는 sunday_cond 또는 monday_cond 를 수행하므로 매일 오후 11시 이후에 거래될 가능성이 있습니다. 또한 "monday_cond"는 일요일 오후 3시까지 만납니다. 가능성은 낮지만 일부 시간대에서는 거래 시간 내에 포함될 수도 있습니다. 더 중요한 것은 Hour() <= 15는 오후 3시가 아니라 오후 3시 59분까지 true입니다.
그러나 원칙은 EagleEye가 수행해야 하는 작업 측면에서 분명히 타당합니다. 즉, DayOfWeek() 또는 TimeDayOfWeek()를 사용하여 시간과 요일을 확인합니다.
당신이 맞습니다. 이것은 작동해야 합니다:
bool sunday_cond = ( TimeDayofWeek ( TimeCurrent ( ) ) = = 0 ) & & ( Hour ( ) > = 23 ) ;
bool monday_cond = ( TimeDayofWeek ( TimeCurrent ( ) ) = = 1 ) & & ( Hour ( ) < = 15 ) ;
if ( sunday_cond | | monday_cond )
go_trading();
고마워 얘들아
나는 이것을 시도하고 그것이 작동하는지 알려줄 것이다.
only one trade can be open between sunday 23:00 and monday 15:00
위의 코드는 15:00(Hour()<15)가 아니라 일요일 23:00부터 월요일 15:59(Hour()<=15)까지 거래되어야 합니다.
또한 허용된 기간 동안 하나의 거래만 열 수 있는 코드가 있어야 합니다.
나는 당신이 이 부분에 대해 당신이 의미하는 바를 이해하고 있는지 잘 모르겠습니다. WHRoeder : 15:00(Hour()<15)가 아니라 Monday 15:59(Hour()<=15)??
네, 저도 그 코드가 필요합니다. 누군가가 그것을 제공할 수 있기를 바랍니다.
네, 저도 그 코드가 필요합니다. 누군가가 그것을 제공할 수 있기를 바랍니다.
현재 거래 창에서 이미 거래를 열었다면 거래가 지금 닫혀 있더라도 새로운 거래를 하고 싶지 않기 때문에 이것은 약간 특이한 문제입니다. 이 포럼의 대부분의 토론은 현재 열려 있는 거래가 없는지 확인하는 것과 관련이 있습니다.
본질적으로 마감된 거래를 확인하는 세 가지 옵션이 있습니다.
- 새로운 거래를 열 때 현재 시간 을 변수에 저장하십시오. 새로운 거래를 고려할 때 마지막 거래의 저장된 시간이 현재 거래 창에 속하지 않는지 확인하십시오.
- 위와 같지만 MT4의 전역 변수에 마지막 거래 시간을 저장합니다.
- MT4 거래 목록을 스캔하여 현재 거래 창에서 열린 마감 거래를 찾습니다.
이러한 옵션은 대략 복잡도 순입니다(또한 성능의 역순, 즉 3이 가장 느리지만 둘 사이의 속도 차이가 실제 생활에서 문제를 일으킬 가능성은 거의 없음).
그러나 옵션은 또한 탄력성 순서입니다.
- 마지막 거래 시간이 변수(메모리)에 저장되어 있으면 MT4가 다시 시작되거나 다른 이유로 EA를 다시 로드해야 하는 경우 값이 손실됩니다. 즉, EA가 다시 로드되면 동일한 거래 기간 동안 잠재적으로 두 번 이상 거래됩니다.
- 시간이 MT4 전역 변수에 저장된 경우 해당 기록은 EA를 다시 로드해도 살아남을 수 있습니다. 그러나 거래를 서둘러 새 컴퓨터로 옮겨야 하는 경우 마지막 거래 시간의 기록이 손실됩니다(MT4의 gvariables.dat 파일 백업이 사용 가능한 경우 제외).
- MT4 거래 목록을 스캔하는 것은 재해 복구 측면에서 적절하게 복원되는 유일한 옵션입니다. 다른 컴퓨터의 MT4 복사본에서 브로커 계정에 로그인하고 EA를 시작하고 잘못된 추가 거래를 받지 않도록 보장받을 수 있습니다. 거래.
// 접근_1
bool sunday_cond = ( TimeDayofWeek ( TimeCurrent ( ) ) = = 0 ) & & ( Hour ( ) > = 23 ) ;
bool monday_cond = ( TimeDayofWeek ( TimeCurrent ( ) ) = = 1 ) & & ( Hour ( ) < = 15 ) ;
if ( sunday_cond | | monday_cond )
if(OrdersTotal()==0)
go_trading();
// 접근_2
bool sunday_cond = ( TimeDayofWeek ( TimeCurrent ( ) ) = = 0 ) & & ( Hour ( ) > = 23 ) ;
bool monday_cond = ( TimeDayofWeek ( TimeCurrent ( ) ) = = 1 ) & & ( Hour ( ) < = 15 ) ;
if ( sunday_cond | | monday_cond )
{
if(number_of_longs()==0) // Count the longs from both "trade context" and history for the period in qestion. There is code for counting open longs/shorts in the forum
go_trading_longs();
if(number_of_shorts()==0)
go_trading_shorts();
}
안녕,
나는 여기에서 초보자이므로 도움이 필요합니다.
일요일에 시장이 열릴 때 거래하는 EA가 있습니다. EA의 문제는 주중에도 거래가 필요하고 나는 그것을 원하지 않는다는 것입니다.
나는 그것이 다음과 같이 작동하기를 원한다:
extern int StartDay="일요일"
외부 정수 시작 시간 = "23:00"
extern int StopDay="월요일"
외부 정수 StopTime="15:00"
day="sunday"이고 시장이 열려 있는 경우(일요일 23:00~월요일 15:00 사이에 하나의 거래만 열릴 수 있음, TP 또는 SL로 인해 거래가 마감된 경우 새로운 거래 없음)
{
거래 시작(이미 가지고 있는 일부 코드)
}
MQL에서 이 작업을 수행하려면 어떻게 해야 합니까?