[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 645

 
artmedia70 :

거기에는 실제로 논리가 없습니다. 서로 이어지는 순서의 가장 간단한 라인 출력 ...




인식의 편의를 위해 다음 기능을 사용하겠습니다.

 //--------------------------------------------------------------- 1 --
// Функция вывода на экран графических сообщений.
//--------------------------------------------------------------- 2 --
   int Informations()
  {
   int    Win_ind;                     // Номер окна индикатора
   int    x,y;
   
   trH4     =Trend_PSAR( NULL , 240 );   // Четырёхчасовой тренд
   trH1     =Trend_PSAR( NULL , 60 );   // Часовой тренд
   trM30    =Trend_PSAR( NULL , 30 );   // Получасовой тренд
   trM15    =Trend_PSAR( NULL , 15 );   // 15-ти минутный тренд

//--------------------------------------------------------------- 3 --
   Win_ind= WindowFind( "Info" );         // Ищем номер окна индикатора
   if (Win_ind< 0 ) return ;               // Если такого окна нет, уходим
//--------------------------------------------------------------- 4 --
   x = 10 ; y = 17 ;
   MyObject( "Equ" ,         x,    y,   "Свободные средства" ,                   9 , "Tahoma" , Gold );
   MyObject( "EquVal" ,      x* 23 , y,   DoubleToStr(Equ_NEW, 2 ),                 9 , "Tahoma" , Yellow );

//.................................
   WindowRedraw();                       // Перерисовываем все объекты
   return ;
  }


void MyObject( string Name, int X, int Y, string Text, int Size, string Srift, color CL){
   if ( ObjectFind (Name)==- 1 )
       ObjectCreate (Name, OBJ_LABEL , 1 , 0 , 0 , 0 , 0 );
   ObjectSet(Name, OBJPROP_XDISTANCE ,X);
   ObjectSet(Name, OBJPROP_YDISTANCE ,Y);
   ObjectSetText(Name, Text, Size, Srift, CL);
}
 
ToLik_SRGV :

저도 같은 질문을 했는데 마땅한 내용을 찾지 못했습니다. 최적화에 관해서는, 당신은 이미 훌륭한 브레이크 iCustom :)에 대해 알고 있습니다. 지표에는 계산된 막대 수에 제한이 있습니다(IndicatorCounted()를 통해 또는 잔인하게 막대 수에 제한이 있습니다.). 코드에서 if, while 및 같은 다양한 구성의 수와 복잡성과 혼동하십시오. 등. 특별한 의미는 없으며 시간이 지남에 따라 코드 자체가 "더 아름답게" 될 것입니다. 음, 시각화 모드에서 각 "점프"가 모델링되면 거의 모든 경우에 느려집니다(물론 시스템 자체의 복잡성에 따라 다름). 복잡한 계산을 dll에 넣으면 내가 직접 확인하지는 않았지만 더 빠를 것이라고 어딘가에서 읽었습니다. dll에는 뉘앙스가 충분합니다.

TimeCurrent() 와 같은 명령이 작업 속도를 많이 늦췄다는 것을 기억합니다(코드에 여러 명령이 있는 경우)

- 한 번 사용하는 것이 훨씬 낫습니다. - 변수로 가져온 다음 변수에 액세스하는 것입니다.

 
Vinin :


인식의 편의를 위해 다음 기능을 사용하겠습니다.

예, 물론 Victor, 훨씬 더 읽기 쉽습니다. 그러나 나는 이미 가능하면 "이마에"라고 쓰려고 노력하고 있습니다. 모든 것이 많이 느려지고 가능한 경우 밀리 초를 얻으려고합니다 ...
 
chief2000 :

TimeCurrent()와 같은 명령이 작업 속도를 많이 늦췄다는 것을 기억합니다(코드에 여러 명령이 있는 경우)

- 한 번 사용하는 것이 훨씬 낫습니다. - 변수로 가져온 다음 변수에 액세스하는 것입니다.

놀라운! 코드를 볼 가치가 있지만 다시 실행하면 ...
 
chief2000 :

TimeCurrent()와 같은 명령이 작업 속도를 많이 늦췄다는 것을 기억합니다(코드에 여러 명령이 있는 경우)

- 한 번 사용하는 것이 훨씬 낫습니다. - 변수로 가져온 다음 변수에 액세스하는 것입니다.

나중에 액세스할 수 있도록 이러한 변수를 올바르게 설정하는 방법은 무엇입니까?

먼저 전역 변수 에서 선언합니다.

날짜 시간 CurTime;

그리고 이미 start()

나는 그것에 값을 할당합니다:

CurTime=TimeCurrent();

오류 발생: 'CurTime' - 변수가 예상됨

제대로 하는 방법?

그리고 또 다른 질문: 일부 변수에 값을 start()가 아니라 init()에 할당하면 올바르게 작동합니까?

글쎄, 내 말은 변수가 start() 시작 부분에서 이 함수의 값을 할당받은 경우 일부 함수와 동일한 TimeCurrent()가 모든 틱에서 여전히 호출된다는 것을 의미합니다.

 
엉망! Cur Time에서는 오류가 발생하지만 Curr Time에서는 오류가 발생하지 않습니다. 요점이 무엇인가요?
 
artmedia70 :
엉망! Cur Time에서는 오류가 발생하지만 Curr Time에서는 오류가 발생하지 않습니다. 요점이 무엇인가요?
사실 CurTime은 각각 TimeCurrent 함수의 지겨운 이름이고 변수 이름이 함수 이름과 일치하면 컴파일러는 항상 맹세합니다..
 
keekkenen :
사실 CurTime은 각각 TimeCurrent 함수의 지겨운 이름이고 변수 이름이 함수 이름과 일치하면 컴파일러는 항상 맹세합니다..
어떻게! 감사합니다. 미래에 대해 알게 된 붐.
 

친구! 내 개인적인 논리 블록이 약간 절뚝거렸다. 이 상황에서 어떻게 해야할지 모르겠습니다.

우리는 두 가지 방향으로 일합니다. 매수와 매도에는 별도의 제어 블록이 있습니다. 포지션은 반대 방향으로 열릴 수 있으며, 이는 모두 시장이 각 TF에서 움직이는 방향에 따라 다릅니다.

이전 기간에 매도(TF M5 및 M15에 따라)와 매수가 모두 열려 있고 갑자기 시장이 M5 및 M15에서 열린 매도와 반대 방향으로 급격히 변하는 상황을 가정해 보겠습니다. 상황이 세계에서 일어났습니다...) . 이 경우 모든 미결 매도는 드로다운을 크게 증가시키기 시작하며, 미결 매수도 있기 때문에 일부 포지션을 청산하고 매수 및 매도를 통해 무익한 매도를 청산하여 청산 매수로 인한 손실을 최소화할 수 있습니다.

그래서 주어진 상황에서 나는 논리로 어떤 식으로든 정의될 수 없다. 그것은 무엇이어야합니까?

만일을 대비하여 예시 상황:


 

좋은 사람들, 어제의 주제로 돌아가서:

   double c1b[];
   for (i= 1 ;i<=PeriodB;i++)
   {
   c1b[i]= iCCI ( NULL , 0 ,PeriodB, PRICE_TYPICAL ,i);
   }
   double c1b_1=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA , 1 );
   double c1b_2=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA , 2 );
   double c1b_3=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA , 3 );
   
   double c1s[];
   for (i= 1 ;i<=PeriodS;i++)
   {
   c1s[i]= iCCI ( NULL , 0 ,PeriodS, PRICE_TYPICAL ,i);
   }
   double c1s_1=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA , 1 );
   double c1s_2=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA , 2 );
   double c1s_3=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA , 3 );

if ( NormalizeDouble (c1s_1, 4 )> NormalizeDouble (c1s_2, 4 )&& NormalizeDouble (c1s_2, 4 )< NormalizeDouble (c1s_3, 4 ))
//if (c1s_1>c1s_2&&c1s_2<c1s_3)
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if ( NormalizeDouble (c1b_1, 4 )< NormalizeDouble (c1b_2, 4 )&& NormalizeDouble (c1b_2, 4 )> NormalizeDouble (c1b_3, 4 ))
//if (c1b_1<c1b_2&&c1b_2>c1b_3)
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

로그의 메시지가 의미하는 바를 알려주세요.

2010.06.24 17:28:26 TestGenerator: 일치하지 않는 데이터 오류(2010.01.06 08:00에서 볼륨 제한 5357 초과)