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

 
rabanik :
안녕하세요. 조언자를 위해 다음 코드를 작성하는 데 도움을 주세요. 배열을 통해 수행하고 싶습니다(더 나은 옵션이 있으면 도와주세요). 일반적으로 EA는 메시지를 보내지만 EA가 배열(임시)을 통해 메시지를 보내길 원합니다. 저것들. 편지를 보낼 때 고문은 주어진 메시지가 더 일찍 보내졌는지 확인하고(배열에 그러한 메시지가 있는지 확인) 그렇지 않으면 보냈고, 편지가 발견되면 보내기가 생략됩니다. 나는 그것이 명확하기를 바랍니다) 대단히 감사합니다!

당신은 임무에 대해 확신합니까?

간단히 말해서 다음과 같은 옵션이 있습니다.

- 마지막 메시지를 반복하지 마십시오

- 사용되지 않는 것을 무시합니다(일부 시간 지연이 설정됨). 즉, 메시지를 반복해야 합니다.

추신: 첫 번째 옵션은 두 번째 옵션의 특수한 경우이지만 훨씬 쉽게 구현됩니다. 문제에 대한 귀하의 진술은 무한 지연이 있는 두 번째 변형의 특수한 경우이기도 합니다.

관심이 있으시면 여기에 문제의 해결책이 있습니다.

우리는 두 개의 배열을 정의합니다. 하나는 메시지를 저장하는 텍스트이고 다른 하나는 메시지 검색을 위한 색인입니다.

인덱스 배열 은 int 유형입니다. 첫 번째 측정에서는 문자 메시지의 체크섬을 씁니다. 두 번째 - 첫 번째 배열의 메시지 줄 번호. 인덱스 배열은 첫 번째 차원을 기준으로 정렬됩니다.

새로운 메시지를 받았습니다. 우리는 체크섬을 고려합니다. ArrayBsearch() 함수를 사용하여 이러한 메시지를 찾고 있습니다. 찾을 수 없는 경우 이 메시지는 원본입니다. 우리는 그것을 메시지 배열에 추가하고 인덱스 배열에 대한 링크가 있는 체크섬을 정렬하는 것을 기억합니다.

체크섬 옵션은 무엇입니까? 나는 이것을 고려할 것입니다 : 우리는 문자 수와 텍스트의 체크섬을 고려합니다. 텍스트의 체크섬입니다(예: 문자 코드의 합). 최신 변경 사항으로 65,536*256을 초과할 수 없습니다. 즉, 메시지의 체크섬은 다음과 같을 수 있습니다.

문자 수에 1000만을 곱하고 텍스트의 체크섬을 추가합니다.

 

찬성! 모서리에 선에 문제가 있습니다.

좌표에 의해 구축된 TRENDBYANGLE

 ObjectCreate ( 0 , "anglestok" , OBJ_TRENDBYANGLE , 0 , 0 , 0 );
ObjectSet( "anglestok" ,OBJPROP_TIME1,X1); ObjectSet( "anglestok" ,OBJPROP_PRICE1,Y1);
ObjectSet( "anglestok" ,OBJPROP_TIME2,X2); ObjectSet( "anglestok" ,OBJPROP_PRICE2,Y2);

- 각도를 알아야 합니다.

anglestok= ObjectGetDouble ( 0 , "anglestok" , OBJPROP_ANGLE );

그리고 그것은 = 0이고, 도움말에는 프로그램에 의해 생성된 선의 각도가 영(ZERO)인 것으로 작성되어 있습니다. 이는 괜찮습니다.

동일한 좌표에서 동일한 코드를 다시 실행하고 손으로 선을 만지지 마십시오. 올바른 각도가 0이 아니라 나타납니다. 왜, 처음으로 무엇을 할 것인가?

또는 일부 좌표를 제공했습니다 - 각도를 묻습니다 - 0이라고 말합니다. 즉시 다른 사람에게 제공합니다 - 과거 좌표의 각도를 말합니다 . 무의미한 말

 
어떤 경우에 함수 서명에 대한 설명 뒤에 const를 넣습니까? 그것에 대한 정보를 찾을 수 없습니다.
 void qwe( int abc) const {...}
 
여기에서 지식이 풍부한 일반 사람들을 찾을 수 없는 것 같습니다. 그냥 헛되이 가입했습니다 = /
 
K_i_r_i_t_o :
주석을 처음으로 옮겼습니다. 그렇지 않으면 아무도 대답하지 않았지만 매우 필요합니다 =/
이것을 구현할 수 있습니까? 일부 키를 누르면 표시기 코드의 한 부분이 켜지고(마우스를 클릭하여 개체 생성을 담당함) 어떤 이벤트가 발생하면(코드의 두 번째 부분에서 이벤트가 예를 들어 동일한 객체를 생성하는 경우) 코드의 첫 번째 부분이 비활성화되고(이 작업이 수행되지 않으면 클릭할 때마다 객체가 생성됨) 키를 누를 때에도 시작됩니다. 원에서 등등)
할 수 있다. OnChartEvent 블록을 추가합니다. 그 안에 필요한 압박, 측정을 따르고 아이디어에 따라 그에 대한 반응을 설명하십시오.
 
SunnYtheDreamer :
할 수 있다. OnChartEvent 블록을 추가합니다. 그 안에 필요한 압박, 측정을 따르고 아이디어에 따라 그에 대한 반응을 설명하십시오.
키를 누를 때까지 일정 기간 동안 코드의 일부를 비활성화하는 것을 정확히 구현하는 것은 불가능합니다. =/ 더 간단한 옵션이 있지만 한 가지 문제가 있습니다 . 키를 눌렀을 때 해당 값을 첫 번째 if 문의 시작
 #define VK_D 0x44
void OnChartEvent ( const int id,         // идентификатор события   
                   const long & lparam,   // параметр события типа long 
                   const double & dparam, // параметр события типа double 
                   const string & sparam) // параметр события типа string 
{ 
 Comment ( __FUNCTION__ , ": id=" ,id, " lparam=" ,lparam, " dparam=" ,dparam, " sparam=" ,sparam);

int       y     =( int )dparam;
datetime dt    = 0 ;
double    price = 0 ;  
int       window= 0 ;
int i;
int x=( int )lparam;

if (id== CHARTEVENT_CLICK )
{
ChartXYToTimePrice ( 0 ,x,y,window,dt,price);
ObjectCreate ( "Trend Line" +i, OBJ_TREND , 0 ,dt,price,dt,price);
ObjectSetInteger ( 0 , "Trend Line" +i, OBJPROP_SELECTED , true );

if (id== CHARTEVENT_KEYDOWN ) 
{ switch ( int (lparam)) 
{ case VK_D:
i= rand ();
}}}}
 
K_i_r_i_t_o :
키를 누를 때까지 일정 기간 동안 코드의 일부를 비활성화하는 것을 정확히 구현하는 것은 불가능합니다. =/ 더 간단한 옵션이 있지만 한 가지 문제가 있습니다 . 키를 눌렀을 때 해당 값을 첫 번째 if 문의 시작
 if (id== CHARTEVENT_CLICK )
{
   ChartXYToTimePrice ( 0 ,x,y,window,dt,price);
   ObjectCreate ( "Trend Line" +i, OBJ_TREND , 0 ,dt,price,dt,price);
   ObjectSetInteger ( 0 , "Trend Line" +i, OBJPROP_SELECTED , true );

   if (id== CHARTEVENT_KEYDOWN ) 
   {
       switch ( int (lparam)) 
      {
         case VK_D: i= rand ();
      }
   }
}
이 코드는 마우스를 클릭해야만 실행되며, 3줄의 코드 후에 keypress 이벤트를 체크한다. 그리고 이 3줄의 코드는 몇 밀리초 안에 실행되며 현재 OnChartEvent 호출 중에 id가 변경될 수 있더라도 3줄의 코드 실행 중에 키가 눌릴 확률은 = 0%입니다. 물론, 특정 id 값에서 트리거되는 블록 내부의 id를 확인하고 다른 값을 기다리는 것은 무의미합니다. 먼저 키 입력을 확인하고 별도의 블록에 키 번호를 변수에 저장하거나 단순히 원하는 키를 누른 사실을 확인합니다. 그리고 이 변수는 마우스 클릭을 위해 블록에 있는 코드를 활성화하거나 비활성화합니다.
 char key = - 1 ; //эта переменная должна быть объявлена за пределами блока OnCharEvent
if (id== CHARTEVENT_KEYDOWN )
key = lparam;

if (id== CHARTEVENT_CLICK && key == 'D')
{
   ChartXYToTimePrice ( 0 ,x,y,window,dt,price);
   ObjectCreate ( "Trend Line" +i, OBJ_TREND , 0 ,dt,price,dt,price);
   ObjectSetInteger ( 0 , "Trend Line" +i, OBJPROP_SELECTED , true );
   i= rand ();
   key = - 1 ;
}
 
SunnYtheDreamer :
이 코드는 마우스를 클릭해야만 실행되며, 3줄의 코드 후에 keypress 이벤트를 체크한다. 그리고 이 3줄의 코드는 몇 밀리초 안에 실행되며 현재 OnChartEvent 호출 중에 id가 변경될 수 있더라도 3줄의 코드 실행 중에 키가 눌릴 확률은 = 0%입니다. 물론, 특정 id 값에서 트리거되는 블록 내부의 id를 확인하고 다른 값을 기다리는 것은 무의미합니다. 먼저 키 입력을 확인하고 별도의 블록에 키 번호를 변수에 저장하거나 원하는 키를 누른 사실만 확인합니다. 그리고 이 변수는 마우스 클릭을 위해 블록에 있는 코드를 활성화하거나 비활성화합니다.

정말 감사합니다!) 여기 내가 찾고 있던 줄이 있습니다. if (id==CHARTEVENT_CLICK && key == 'D'), 두 이벤트를 어떤 식으로든 연결할 수 없습니다. (id==CHARTEVENT_CLICK & id==CHARTEVENT_KEYDOWN) 다시 한 번 진심으로 감사드립니다)

 

안녕하세요, 저는 마지막 n개의 양초에 대한 평균 양초 크기를 계산하는 함수가 하나 있습니다. 때로는 "5e-05.0" 값을 제공합니다. 그것들은 나를 방해하고 필요하지 않습니다. 부끄럽게도 양적으로 얼마나 많이, 어떻게 차단해야 하는지 모르겠습니다. NormalizeDouble() 은 도움이 되지 않습니다. 이러한 숫자를 프로그래밍 방식으로 계산하여 차단하는 방법을 알려주세요.

 
pycha :

안녕하세요, 저는 마지막 n개의 양초에 대한 평균 양초 크기를 계산하는 함수가 하나 있습니다. 때로는 "5e-05.0" 값을 제공합니다. 그것들은 나를 방해하고 필요하지 않습니다. 부끄럽게도 양적으로 얼마나 많이, 어떻게 차단해야 하는지 모르겠습니다. NormalizeDouble()은 도움이 되지 않습니다. 이러한 숫자를 프로그래밍 방식으로 계산하여 차단하는 방법을 알려주세요.


5e-05(5*10 ~ -5 거듭제곱) = 0.00005.
차단하기:
 if (val >= 0.00001 )
이러한 작은 양초 5핍은 평온한 시간에만 5자리 계정으로 낮은 시간대에 만날 수 있습니다. 스캘핑과 아무 관련이 없지만 n개의 양초에 대해 평균이 때때로 너무 작은 경우 함수의 구현을 의심해야 합니다.
사유: