포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 556

 

belck
:

приветствую!

помогите разобраться. пытаюсь сделать в советнике закрытие сделок в пятницу за пол часа до закрытия сессии.

пробовал по учебнику, то ничего у меня не получилось

может у кого уже готовый код есть.

код закрытия у меня есть. мне нужен сам сигнализирующий закрытие сессии за 30 минут.

어쩌면 그렇게.

 extern datetime DateTime = D'2014.03.21 11:30' ;   // Дата и время закрытия



if ( TimeCurrent ()>=DateTime)
  {
  }
데이트가 필요 없는 상황입니다. 매주 금요일, 세션이 끝나기 30분 및 30분 전에 신호를 보내야 하며, 그 신호를 주문 마감 코드에 작성합니다. 시간대 가 다르고 여름에서 겨울로의 전환이 있기 때문에 세션이 닫힐 때 코드 자체를 고려해야 합니다.
 
이것은 나를 위해 작동하며 실패는 없었습니다.
 //---закрыть все позиции в пятницу в 19-40 по серверному времени 
   if ( DayOfWeek ()== 5 && Hour ()== 19 && Minute ()> 40 ){
       //Дать сигнал на закрытие всех позиций    
       
   } 
 
belck :

인사말!

이해하도록 도와주세요. 세션이 종료되기 30분 전 금요일에 고문과 거래를 성사시키려고 합니다.

튜토리얼을 시도했지만 작동하지 않았습니다

누군가가 이미 코드를 가지고 있을 수도 있습니다.

종료 코드가 있습니다. 30분 안에 세션 종료 신호를 보내야 합니다.


이렇게 하면 모든 브로커에게 더 보편적일 수 있습니다. 당분간 브로커의 시세와 UTC의 차이가 없는 것이 안타깝습니다.

 void OnStart ()
  {
//---
   int hrd=- 3 ; // разница времени в часах котировок брокера с Гринвичем
   datetime tc= TimeCurrent ();
   if (f_ts(tc,hrd)> 0 ) Print ( "CloseAll()" );
  }
//+------------------------------------------------------------------+


int f_ts( datetime ti, int hrd)
{
   if ( TimeDayOfWeek (ti)!= 5 ) return (- 1 ); // если не пятница  выходим
   datetime t0d,te;
   int dtd= 1440 * 60 , res=- 1 ;
   t0d=ti/dtd*dtd;         // начало торгового дня
   te=t0d+dtd- 30 * 60 +hrd* 3600 ;     // 30 мин до конца сессии
   if (ti>te)  res= 1 ;
   else         res= 0 ;
   return (res);
 
granit77 :
이것은 나를 위해 작동하며 실패는 없었습니다.

이것저것 해보고 테스터로 테스트해봤는데 기능이 안되네요.
 

글쎄, 이것은 테스터에 있으며 작동하지 않아야합니다.

 if ( DayOfWeek ()== 5 && Hour ()== 19 && Minute ()> 40 )

함수는 현재 시간 을 기준으로 발행되지만 위에서 작성한 것은 TimeCurrent() 및 TimeDayOfWeek()가 올바르게 작동하기 때문에 작동합니다. 브로커의 여름과 겨울 시간으로의 전환 기능만 추가하면 됩니다. hrd 매개변수. 전환은 일반적으로 미국 DST 시간(11월 첫 번째 일요일, 3월 두 번째 일요일)이지만 일부 브로커는 이전하지 않으므로 귀하의

 
belck :

인사말!

이해하도록 도와주세요. 세션이 종료되기 30분 전 금요일에 고문과 거래를 성사시키려고 합니다.

튜토리얼을 시도했지만 작동하지 않았습니다

누군가가 이미 코드를 가지고 있을 수도 있습니다.

종료 코드가 있습니다. 30분 안에 세션 종료 신호를 보내야 합니다.

r772ra :

어쩌면 그렇게.

별말씀을요.

세션이 종료되는 시간을 결정해야 합니다. datenime SessionClose = ... 종료가 세션이 아닌 거래이면 SessionClose = StrToTime ( "23:30" );

요일 결정 TimeDayOfWeek()

금요일이면 TimeCurrent 시간을 확인하십시오. () >= 세션 닫기

 
AlexeyVik :

별말씀을요.

세션이 종료되는 시간을 결정해야 합니다. datenime SessionClose = ... 종료가 세션이 아닌 거래이면 SessionClose = StrToTime ( "23:30" );

요일 결정 TimeDayOfWeek()

금요일이면 TimeCurrent 시간을 확인하십시오. () >= 세션 닫기


코드를 더 자세히 설명할 수 있습니까?
 
AlexeyVik :

별말씀을요.

세션이 종료되는 시간을 결정해야 합니다. datenime SessionClose = ... 종료가 세션이 아닌 거래이면 SessionClose = StrToTime ( "23:30" );


세션 종료 시간 datenime SessionClose = ... and trades ...는 아무리 정의해도 테스터에서 작동하지 않습니다. :) 3월 초부터 오늘까지 확인하세요.
 
belck :

코드를 더 자세히 설명할 수 있습니까?

저 할 수 있어요. 그러나 그것은 내 원칙에 어긋난다.


GSB :
세션 종료 시간 datenime SessionClose = ... and trades ...는 아무리 정의해도 테스터에서 작동하지 않습니다. :) 3월 초부터 오늘까지 확인하세요.

그리고 테스터는 무엇입니까? 최신 업데이트까지 테스터에서 작동했지만. 이제 논쟁하지 않고 확인하지도 않았으며 곧 테스터를 켜도록 강요하지도 않을 것입니다.
 
AlexeyVik :

저 할 수 있어요. 그러나 그것은 내 원칙에 어긋난다.


그리고 테스터는 무엇입니까? 최신 업데이트까지 테스터에서 작동했지만. 이제 논쟁하지 않고 확인하지도 않았으며 곧 테스터를 켜도록 강요하지도 않을 것입니다.

원칙에 대한 이의는 없지만 한 사람이 테스터에 대해 어드바이저를 운영하기를 원하므로 귀하의 옵션이 그에게 적합하지 않습니다.

belck 내 버전을 사용하면 실생활과 테스터 모두에서 작동하지만 겨울-여름 시간으로의 전환을 자동으로 설명하는 기능을 아직 만들지 않았습니다.

 string data_1= "2014.03.09" ; string data_2="2013.11.03";
if ( TimeCurrent () < StrToTime (data_1) && TimeCurrent () > StrToTime (data_2) ) hrd=- 2 ; else hrd=- 3 ;
2013년 3월부터 2014년 11월까지 올바르게 작동하고 테스트됩니다. 중개인에 따라 교대를 설정하십시오.
사유: