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

 
Forexman77 :

친애하는, 당신의 도움이 필요합니다.

지표로 EA를 최적화하고 있습니다. 지표 코드는 아래와 같습니다.

최적화가 느리고 지표가 새 막대에서 다시 계산되도록 EA에 코드를 만들었는데 이는 적합하지 않습니다.

재계산을 더 빠르게 하기 위해 표시 코드에서 수행할 수 있는 작업을 확인하십시오.


이 지표가 책임이 있다고 결정한 이유는 무엇입니까?
 
Vladon :

문자 수, + 글꼴 크기 등을 계산합니까?

글꼴 크기는 원하는 지식을 제공하지 않습니다. 여러 개체를 다른 개체 위에 그려야 합니다. 첫 번째 개체에만 기준점이 있습니다. 두 번째 및 후속 개체의 기준점을 얻는 방법은 무엇입니까?
 
Vladon :


사용자가 Expert Advisor를 언로드할 때 Expert Advisor를 강제 종료합니다.

데이터를 시작할 때 직접 쓰는 것이 좋습니다.

시작과 함께 작동하지 않습니다. 같은 그림.
-------------------------------------------------- --
스트링고 25.03.2014 13:28

초기화 시간은 10초로 제한됩니다.

테스터에서는 정상 완료 시 stop 플래그가 설정되지 않으므로 deinit가 조용히 종료됩니다.

-------------------------------------------------- --

어떤 기능의 작동에 10초 제한이 부과될 수 있습니까?
 
안녕하세요! MQL4를 공부하는 동안 작은 질문이 생겼습니다. 문제는 이 사이트의 교과서에 게시되어 있습니다. 조건은 다음과 같습니다. 작업 25. 다음 조건을 구현하는 프로그램을 작성하십시오. 비율이 지정된 수준 이상으로 상승한 경우 수준 이상(최대 100점)을 단어로 표시하는 메시지를 발행합니다. 다른 경우에는 비율이 지정된 수준을 초과하지 않음을 보고합니다.
제안된 솔루션은 다음과 같습니다.
 //--------------------------------------------------------------------
extern double Level = 1.3200 ;                     // Заданный уровень 
string Text [ 101 ] ;                               // Объявление массива
//--------------------------------------------------------------------
int init ()                                        // Спец. ф-ия init()
   {                                              // Присвоение значений
   Text [ 1 ] = " один " ;             Text [ 15 ] = " пятнадцать " ;
   Text [ 2 ] = " два " ;             Text [ 16 ] = " шестнадцать " ;
   Text [ 3 ] = " три " ;             Text [ 17 ] = " семнадцать " ;
   Text [ 4 ] = " четыре " ;           Text [ 18 ] = " восемнадцать " ;
   Text [ 5 ] = " пять " ;             Text [ 19 ] = " девятнадцать " ;
   Text [ 6 ] = " шесть " ;           Text [ 20 ] = " двадцать " ;
   Text [ 7 ] = " семь " ;             Text [ 30 ] = " тридцать " ;
   Text [ 8 ] = " восемь " ;           Text [ 40 ] = " сорок " ;
   Text [ 9 ] = " девять " ;           Text [ 50 ] = " пятьдесят " ;
   Text [ 10 ] = " десять " ;         Text [ 60 ] = " шестьдесят " ;
   Text [ 11 ] = " одиннадцать " ;     Text [ 70 ] = " семьдесят " ;
   Text [ 12 ] = " двенадцать " ;     Text [ 80 ] = " восемьдесят " ;
   Text [ 13 ] = " тринадцать " ;     Text [ 90 ] = " девяносто " ;
   Text [ 14 ] = " четырнадцать " ;   Text [ 100 ] = " сто " ;
   // Вычисление значений
   for ( int i = 20 ; i <= 90 ; i = i + 10 )                  // Цикл по десяткам
     {
       for ( int j = 1 ; j <= 9 ; j ++ )                    // Цикл по единицам
         Text [ i + j ] = Text [ i ] + Text [ j ] ;           // Вычисление значения   
     }
   return ;                                     // Выход из init()
   }
//--------------------------------------------------------------------
int start ()                                      // Спец. ф-ия start()
   {
   int Delta = NormalizeDouble (( Bid - Level ) / Point , 0 ) ; // Превышение 
//--------------------------------------------------------------------
   if ( Delta >= 0 )                                  // Цена не выше уровня
     {
       Alert ( " Цена ниже уровня " ) ;                 // Сообщение
       return ;                                   // Выход из start()
     }
//--------------------------------------------------------------------
   if ( Delta < 100 )                                // Цена более 100
     {
       Alert ( " Более ста пунктов " ) ;               // Сообщение
       return ;                                   // Выход из start()
     }
//--------------------------------------------------------------------
   Alert ( " Плюс " , Text [ Delta ] , " pt. " ) ;             // Вывод на экран
   return ;                                       // Выход из start()
   }
//---------------------------------------------------------------------
По-моему в условных операторах неправильно проставлены знаки сравнения. Они должны быть с точностью до наоборот. Скажите прав ли я? И если нет, то почему так?  
 
Vladon :

이 지표가 책임이 있다고 결정한 이유는 무엇입니까?

예를 들어, AMA를 최적화했는데, 지표가 복잡하지만 최적화가 훨씬 빠릅니다 .

나는 지표가 책임이 있다고 말하지 않을 것입니다. 저는 아직 경험이 많지 않습니다.

그러나 속도를 높이는 방법은 무엇입니까? 여기에서 모든 작업을 수행했습니까? 아니면 변경할 수 있습니까?

원칙적으로 지표는 마지막 100개의 막대를 기준으로 계산하면 충분하지만 500 대신 100이라는 숫자를 넣으면 값이 사라집니다.

 extern int Limit= 70 ;

if (counted_bars< 0 ) return (- 1 );
   if (counted_bars> 0 ) counted_bars--;
 
   limit1= Bars -counted_bars- 1 ;
   if (limit1>Limit && Limit> 0 ) limit1=Limit;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if (limit1> 0 ) 
     {
      limit1= 500 -Period_MA_1- 1 ;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }
최적화가 그런 속도로 수행되면 결국 수염이 바닥까지 자라서 얻은 muliens가 유용하지 않을 것입니다) 글쎄, 그렇지 않으면 시장이 완전히 달라질 것입니다.
 
alxm :
안녕하세요. 말해봐, OBJ_TEXT 그래픽 개체의 그래프에서 너비/높이를 프로그래밍 방식으로 결정하거나 계산할 수 있습니까?

텍스트가 아닐 수도 있지만 레이블을 부탁드립니다.

docs.mql4.com/en/constants/objectconstants/enum_object_property

속성 OBJPROP_XSIZE 및 OBJPROP_YSIZE

 
Vladon :


루프 문에 대한 도움 덕분에 모든 것이 잘 되었습니다.
 
Forexman77 :



그러나 속도를 높이는 방법은 무엇입니까? 여기에서 모든 작업을 수행했습니까? 아니면 변경할 수 있습니까?



예를 들어 막대가 추가된 것과 같이 재계산할 때 허튼 소리를 즉시 볼 수 있습니다.

limit1= Bars -counted_bars- 1 ;

limit1은 2와 같을 것입니다... 그리고 나서

 if (limit1> 0 ) 
     {
      limit1= 500 -Period_MA_1- 1 ;

일반적으로 계산이 완전히 잘못되었습니다 ...

 
Vladon :



감사합니다 좋은 하루 되세요 :) >
 
splxgf :


음, 예를 들어 막대가 추가된 것과 같이 재계산할 때 허튼 소리를 즉시 볼 수 있습니다.

limit1은 2와 같을 것입니다... 그리고 나서

일반적으로 계산이 완전히 잘못되었습니다 ...

어떻게 정확할까요? 이것을 위해 나는 묻습니다. 나는 지표를 잘 계산하는 방법을 모릅니다.

나는 추측한다:
limit1= Bars -counted_bars;

이렇게 되어야 합니까?

하지만 여기서 나는 모른다

 if (limit1> 0 ) 
     {
      limit1= 500 -Period_MA_1- 1 ;
일반적으로 지표는 마지막 100개 막대를 기준으로 계산하는 것으로 충분합니다.