[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 339

 
artmedia70 :

나는 외부 변수에 대해 말하지 않았다. 제가 얘기한 내용입니다.

상황을 상상해 봅시다. 마지막 오픈 포지션의 데이터에 따라 결정을 내릴 필요가 있습니다.


테스터의 경우:

마지막 열린 위치에 필요한 데이터를 저장할 변수를 만듭니다.

새 위치가 열리면 즉시 필요한 데이터를 이러한 변수에 넣습니다.

다음 포지션을 오픈하라는 신호가 도착하면(예: 테스트 20분 후), 오픈할 포지션의 데이터에 대한 결정을 내리는 몇 가지 기준을 확인해야 합니다. 조건에 따라 이 기준은 이전의 열린 위치에 따라 다릅니다. 변수에서 읽고(마지막 열 때 저장) 새 위치에 대한 추가 데이터로 사용합니다.

포지션을 열 때 새로 열린 포지션에 대한 새로운 데이터를 변수에 저장합니다.


진짜:

같은 상황을 상상해 보겠습니다. 하지만 ... 마지막 위치를 열고 해당 데이터를 변수에 저장한 후 10분이 지났다고 상상해 봅시다. 상황)). 그리고 이 기간 동안 어드바이저가 어떤 이유로 재부팅되었습니다.

EA를 다시 시작한 후 변수에 저장된 마지막 열린 위치 데이터는 어떻게 됩니까? 그들은하지 않습니다.

그럼 어디로 데려가야 할까요? 맞습니다 - 검색하십시오. 이를 위해서는 필요한 데이터를 찾는 기능이 필요하다. 따라서 실생활에서는 필요할 때 모든 것을 즉시 찾고 변수에 저장하지 않는 것이 훨씬 더 쉽고 빠릅니다.


설명이 늦어 죄송합니다-방금 나왔습니다 ... :))

당신은 언제나처럼 옳습니다! 새로운 데이터가 필요할 때도 기능을 사용합니다. 그리고 나는 당신이 언급한 "변수"를 사용하지 않습니다. 왜냐하면 말이 안 되는 것은 순식간에 쓸모가 없어집니다. 그리고 저는 Victor에게 피할 수 있는 기능에 매달리지 말라고 조언했습니다. 그래야 코드가 더 무거워지지 않기 때문입니다! 관심을 가져주셔서 감사합니다!
 
안녕하세요. MetaTrader 4에서 이익 제한을 설정할 수 있습니까? 이미 포인트가 아닌 제한 통화로 되어 있습니다. 그렇다면 어떻게
 
   for (i= 0 ;i<limit;i++) /*вопрос: еще использовал и такую последовательность for(i=Bars-1; i>=0; i--), есть ли разница с какой 
   "стороны" заполнять массив и рассматривать значения?*/
   
   RSI= iRSI ( 0 , 0 , 8 , PRICE_CLOSE ,i); 
   
   // задаем пустое значение буфера 
   RSIBuffer3[i]= 0.0
   /* вроде так, мысль такая, что буфер должен быть пустым в цикле for(int i=0;i<limit;i++), до момента достижения 
   RSI заданных значений. Вопрос: так ли? и где он должен находится? */ 
   
   //ставим условие при котором пока RSI >= 70                     
   {
     while RSI>= 70     
     {
       i++; //вопрос: где то видел эту часть кода в конце цикла, есть ли разница?
             
       // заполняем буфер значениями RSI
        
       RSIBuffer3[i]= iRSI ( 0 , 0 , 8 , PRICE_CLOSE ,i);
             
     }
        
     // определяем позицию максимального значения в массиве      
        
     int RSI_max = ArrayMaximum (RSIBuffer3[i], int count= WHOLE_ARRAY , int start= 0 ); /* тут выдает ошибку на значениях count и start отсюда вопрос: нужно ли определять размер массива через ArraySize? и какое начальное значение должно быть, не i ли?*/
             
     //ищем бар со значением RSI равным максимальному значению RSI в массиве 
        
     if RSI=RSIBuffer3[RSI_max];
                
     // рисуем стрелку на этом значении
        
     ExtMapBuffer2[i]=High[i]+ 5 * Point ;
            
     else 
                
     ExtMapBuffer2[i]= 0.0 ;
           
   }
       //ставим условие при котором пока RSI <= 30                     
   { 
     while RSI<= 30
        {    
        i++;
         // заполняем буфер значениями RSI
        
        RSIBuffer3[i]= iRSI ( 0 , 0 , 8 , PRICE_CLOSE ,i);
        
        {        
                
         // определяем позицию минимального значения в массиве  
            
         int RSI_min = ArrayMinimum (RSIBuffer3[i], int count= WHOLE_ARRAY , int start= 0 );
        
                
         //ищем бар со значением RSI равным максимальному значению RSI в массиве 
        
         if RSI=RSIBuffer3[RSI_min];
                
         // рисуем стрелку на этом значении
             
        ExtMapBuffer1[i]=Low[i]- 5 * Point ;
             
         else 
             
        ExtMapBuffer1[i]= 0.0 ;            
          
        }
                   
   return ( 0 );
   }

논리를 알아낼 수 있도록 도와주세요. 어떻게든 간단한 논리를 프로그램으로 전환할 수 없습니다(몇 가지 문헌을 추천할 수 있습니까?)

작업: 70보다 높은 값(30 미만)에 대한 최대(최소) RSI를 계산하고 막대 위에 아래쪽(위쪽) 화살표를 그립니다.

이 값에서.

구현(첫 번째 부분, 두 번째 유사):

1. 각 막대에 대한 RSI 값 계산

2. RSI가 70보다 큰 동안 RSI 버퍼를 해당 값으로 채웁니다.

3. 배열에서 최대값의 위치를 결정

4. RSI 값이 배열의 최대 RSI 값과 같은 막대 찾기

5. 이 막대 위에 화살표를 그립니다.

글쎄, 이와 같은 것은 코드를 작성할 때만 많은 질문, 오류 및 완전한 혼란이 있습니다 (((

자, 다음은 코드의 구현입니다.

 
일부 위치에서 텍스트와 코드를 혼동했습니다. 죄송합니다.
 

Misters는 이러한 알고리즘을 코딩 하는 주기를 통해 프롬프트를 표시합니다.

if (iLow (Symbol (),0, 1 ) > iLow (Symbol (),0, 10 )) // 첫 번째 캔들의 LOW > 10번째 캔들의 LOW인 경우

OrderSend (Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123); //오픈 오더.

그리고 나는 필요하다

낮음 1과 동시에 낮음 2와 동시에 낮음 3....... ... 동시에 낮음 9 양초 > 낮음 10 양초(즉 , 1에서 9까지의 낮은 양초)

                                                                                                                                             //오픈 오더.

고맙습니다.

 
solnce600 :

Misters는 이러한 알고리즘을 코딩 하는 주기를 통해 프롬프트를 표시합니다.

if (iLow (Symbol (),0, 1 ) > iLow (Symbol (),0, 10 )) // 첫 번째 캔들의 LOW > 10번째 캔들의 LOW인 경우

OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123); //오픈 오더.

그리고 나는 필요하다

낮음 1과 동시에 낮음 2와 동시에 낮음 3....... ... 동시에 낮음 9 양초 > 낮음 10 양초(즉 , 1에서 9까지의 낮은 양초)

                                                                                                                                             //오픈 오더.

고맙습니다.


조건의 성공에 대한 플래그를 만들고 true로 설정하고 주기에서 필요한 수의 양초를 거치고 조건이 충족되지 않으면 플래그를 false로 설정하고 주기를 종료합니다.
 
FAQ :

조건의 성공에 대한 플래그를 만들고 true로 설정하고 주기에서 필요한 수의 양초를 거치고 조건이 충족되지 않으면 플래그를 false로 설정하고 주기를 종료합니다.

정말 감사합니다 ㅠㅠ 죄송합니다 .... 쓰신 내용을 아직 이해가 조금 느립니다.

코드를 작성해 주시면 정말 감사하겠습니다..... 그러면 다 이해하겠습니다.

 

bool have = true;

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

   if(Low[i]<=Low[i+1]){have=false; break;} 

if(have){

// действия если условие соблюдено 

}else{

 // действия если условие не соблюдено

}

 
FAQ :

bool have = true;

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

   if(Low[i]<=Low[i+1]){have=false; break;} 

if(have){

// действия если условие соблюдено 

}else{

 // действия если условие не соблюдено

}

정말 감사합니다.... 감사합니다. 그리고 당신과 같은 사람들이 ... 프로그래밍의 복잡성을 마스터하는 데 약간의 진전이 있었습니다 ....
 

사람들은 n 이후 에 보류 중인 주문을 닫을 수 있는 방법을 알려줍니다. 작동하지 않는 경우 포인트 수는 무엇입니까?

사유: