Mt4 지원 종료. - 페이지 26

 

내 솔루션을 좋아한 사람 은 개인 . 수정해서 보내드리겠습니다.

모두에게 행운을 빕니다.

 
Реter Konow :

기호별 주기, 견적 도착 시 새 막대 열기 확인 등을 내 솔루션에 쉽게 추가할 수 있습니다. 그리고 OOP는 어떻습니까?

잘못된 예를 선택했습니다. 여가 시간에 다른 것을 생각하십시오.

그리고 당신은 할. 문자가 변경될 수 있다는 사실을 고려하면 결국 문자를 읽을 때 true로 설정됩니다.

 
Artyom Trishkin :

그리고 당신은 할. 문자가 변경될 수 있다는 사실을 고려하면 결국 문자를 읽을 때 true로 설정됩니다.


글쎄, 내가 하면? 그러면 뭐라고 합니까? 비밀리에 : 나에게 그러한 작업은 완전한 유치원입니다. 내가 정말 못 할 것 같아? 그냥 순진무구해요...

 
Реter Konow :

글쎄, 내가 하면? 그러면 뭐라고 합니까? 비밀리에 : 나에게 그러한 작업은 완전한 유치원입니다. 내가 정말 못 할 것 같아? 그냥 순진무구해요...

글쎄, 마침내 끝내라.

 
Vitaly Muzichenko :

Artyom은 질문 자체를 약간 공개하지 않았지만 질문은 다음과 같습니다. 올바르게 작동하도록 절차적 스타일로 작성하십시오.

물론 문제가 아닙니다. 고객이 미치광이이고 동시에 모든 기호를 거래할 경우 문자열 연산의 비교를 저장하기 위한 헤지입니다.

따라서 작업과 메모리를 저장할 다른 곳이 없는 것 같습니다.

void OnTimer(){

   Alert(Fn_new_bar("EURUSD", PERIOD_D1)); }

//+------------------------------------------------------------------+

uint Sp_Adler32(string line){

   ulong s1 = 1;

   ulong s2 = 0;

   uint buflength=StringLen(line);

   uchar char_array[];

   ArrayResize(char_array, buflength,0);

   StringToCharArray(line, char_array, 0, -1, CP_ACP);

   for (uint n=0; n<buflength; n++){

      s1 = (s1 + char_array[n]) % 65521;

      s2 = (s2 + s1)     % 65521;}

   return ((s2 << 16) + s1);}

//+------------------------------------------------------------------+

bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf){

   static datetime st_time[]; 

   static uint     st_id[];

   

   //---- set

   datetime new_time = iTime(symb, tf, 0);     if(new_time==0) return(false); 

   uint     new_id   = Sp_Adler32(StringConcatenate(symb,EnumToString(tf))); 

   datetime old_time = 0; 

   uint     old_id   = 0;

   

   //---- find

   int size = ArraySize(st_time); 

   for(int i=0; i<size; i++){

      if(st_id[i]!=new_id) continue; 

      old_id   = st_id  [i]; 

      old_time = st_time[i];

      break;}

   

   //----add new element

   if(old_time==0){

      ArrayResize(st_time, size+1); st_time[size]=new_time;

      ArrayResize(st_id,   size+1); st_id  [size]=new_id; }

   

   //----

   return(old_time>0 && old_time<new_time);}


 
Реter Konow :

약간의 지연에 대해 사과드립니다.

다음은 함수의 첫 번째 버전입니다. 그것은 더 개선되고 발전될 수 있습니다. 누구든지 오류를 발견하면 의견을 말하십시오.


이것은 OOP에 관한 것이 아니라 코드가 선형이라는 사실에 관한 것입니다.

 
Galina Bobro :

물론 문제가 아닙니다. 고객이 미치광이이고 동시에 모든 기호를 거래할 경우 문자열 연산의 비교를 저장하기 위한 헤지입니다.

따라서 작업과 메모리를 저장할 다른 곳이 없는 것 같습니다.


거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

Mt4 지원 종료.

Artyom Trishkin , 2017.09.10 23:21

내 목표는 그의 절차적 스타일 코드가 다음과 같은 루프에서 실행되도록 하는 것이었습니다.

   ENUM_TIMEFRAMES array_timeframes[]=
      {
       PERIOD_M1 , PERIOD_M2 , PERIOD_M3 , PERIOD_M4 , PERIOD_M5 , PERIOD_M6 , PERIOD_M10 , PERIOD_M12 , PERIOD_M15 , PERIOD_M30 ,
       PERIOD_H1 , PERIOD_H2 , PERIOD_H3 , PERIOD_H4 , PERIOD_H6 , PERIOD_H8 , PERIOD_H12 , PERIOD_D1 , PERIOD_W1 , PERIOD_MN1
      };
   int total= SymbolsTotal ( true ), total_tf= ArraySize (array_timeframes);
   for ( int i= 0 ; i<total; i++){
       string symbol_name= SymbolName (i, true );
       for ( int j= 0 ; j<total_tf; j++){
         if (IsNewBar(symbol_name,array_timeframes[j])){
             Print ( "Новый бар на " ,symbol_name, " " , EnumToString (array_timeframes[j]));
            }
         }
      }

 
Artyom Trishkin :


습관적으로 이름을 잘못 지정했습니다. - bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf) - 원하는 기능입니다.

 
Artyom Trishkin :

글쎄, 마침내 끝내라.


확인. 귀하의 솔루션은 진드기에서만 작동합니다. 내 것은 타이머에 있습니다. 막대 모양과 동기화하는 내 방법에 단점이 있다고 생각합니까? 확인. 그러면 그렇게 해. 나는 새로운 바의 플래그를 설정하기 전에 견적의 도착에 대한 수표를 추가할 것입니다. 함수에 다른 매개변수인 기호를 추가하겠습니다. 사용자는 새 막대의 이벤트를 수신하고 함수로 보내는 데 필요한 기호를 선택합니다. 함수는 주어진 기호 의 마지막 인용 시간을 확인합니다 . 다음으로, 바의 정식 출현 시간과 인용 시간을 비교하여 이벤트 플래그를 설정합니다.

방금 이 주제를 이해하기 시작했지만 어려움이 보이지 않습니다.

 
Galina Bobro :

이것은 OOP에 관한 것이 아니라 코드가 선형이라는 사실에 관한 것입니다.

선형, 비선형 ... 프로그래밍에서 오페라를 다시 말씀하시는 건가요?