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

 

어떤 유형의 상수: MA_TALKING_LONG, MA_TALKING_SHORT?

어떻게 선언합니까?

 
Vinin :

변수 및 배열의 가시성 고려


전역에서 물었습니다... 같은 오류입니다.

자주 묻는 질문 :

어떤 유형의 상수: MA_TALKING_LONG, MA_TALKING_SHORT?

어떻게 선언합니까?

 #define MA_TALKING_LONG                         0                              // Машки расположены к покупке
#define MA_TALKING_SHORT                         1                              // Машки расположены к продаже
#define MA_TALKING_FLAT                        - 1                              // Машки указывают на флет
 

이 GetStateMa() 함수의 제목(선언) 표시 - 문제가 있습니다.

GetStateMa(int signal){}에 대한 수정은 다음을 허용해야 합니다.

 
FAQ :

이 GetStateMa() 함수의 제목(선언) 표시 - 문제가 있습니다.

GetStateMa(int signal){}에 대한 수정은 다음을 허용해야 합니다.

일반적으로 본질은 이것이다. 여기 한 명의 전문가가 있습니다. 나를 위해 명확하게 일한 전문가가 수정했습니다. 4개의 서로 다른 신호에 대해 1개의 주문만 열려 있고 각 신호가 별도로 생성되고 별도로 계산되는 작업이 있었습니다. 그는 전문가에 의해 나를 수정했지만 논리를 혼동했습니다.

그래서 나는 그의 코드를 긁어모으기 시작했습니다 ... 그는 내가 피어링한 두 번째 날 잔인하게 글을 씁니다.

그 전에는 다음과 같았습니다.

시작 시:

   int signal[ 4 ];
   CalcSignals(signal);

   if (!Trade(signal))
       return ( 0 );

그러나 무엇을 명확하게 할 기능은 다음과 같습니다.

 //+-------------------------------------------------------------------------------------+
//| Получение значений МА на двух соседних барах                                        |
//+-------------------------------------------------------------------------------------+
double GetCurAndPrevMA( int maPeriod, double & prevMA)
{
   prevMA = iMA ( NULL , i_trading_TF, maPeriod, 0 , MODE_EMA , MODE_CLOSE, 1 );
   return ( iMA ( NULL , i_trading_TF, maPeriod, 0 , MODE_EMA , MODE_CLOSE, 0 ));
}
//+-------------------------------------------------------------------------------------+
//| Получение положения машек между собой                                               |
//+-------------------------------------------------------------------------------------+
void CalcSignals( int & signal[])
{
   double ema365_1;
   double ema365_0 = GetCurAndPrevMA( 365 , ema365_1);

   for ( int i = 0 ; i < 4 ; i++)
   {
       double ema1;
       double ema0 = GetCurAndPrevMA(g_maPeriod[i], ema1);
      signal[i] = SIGNAL_NO;

       if (ema1 < ema365_1 && ema0 > ema365_0)
         signal[i] = SIGNAL_BUY;
       if (ema1 > ema365_1 && ema0 < ema365_0)
         signal[i] = SIGNAL_SELL;
   }
}

일반적으로 그 기능이 원인이라고 보는 것은 당연합니다. void 는 정의상 아무 것도 반환하지 않는다고 가정하지만 여전히 배열 요소 signal[i] 의 값을 반환합니다.

숙련된 프로그래머가 자주 사용하는지 궁금합니다. 아니면 이미 너무 많은 것입니까?

지금 바로 그 Expert Advisor에 있는 트릭을 보고 필요한 것을 작성하려고 합니다. 왜냐하면 배열 없이는 할 수 없습니다.

 
Тhoz :

일반적으로 본질은 이것이다. 여기 한 명의 전문가가 있습니다. 나를 위해 명확하게 일한 전문가가 수정했습니다. 4개의 서로 다른 신호에 대해 1개의 주문만 열려 있고 각 신호가 별도로 생성되고 별도로 계산되는 작업이 있었습니다. 그는 전문가에 의해 나를 수정했지만 논리를 혼동했습니다.

그래서 나는 그의 코드를 긁어모으기 시작했습니다 ... 그는 내가 피어링한 두 번째 날 잔인하게 글을 씁니다.

그 전에는 다음과 같았습니다.

시작 시:

그러나 무엇을 명확하게 할 기능은 다음과 같습니다.

일반적으로 그 기능이 원인이라고 보는 것은 당연합니다. void 는 정의상 아무 것도 반환하지 않는다고 가정하지만 여전히 배열 요소 signal[i] 의 값을 반환합니다.

숙련된 프로그래머가 자주 사용하는지 궁금합니다. 아니면 이미 너무 많은 것입니까?

지금 바로 그 Expert Advisor에 있는 트릭을 보고 필요한 것을 작성하려고 합니다. 왜냐하면 배열 없이는 할 수 없습니다.

자주 사용되며 int & , double & 의 비밀
 
Mislaid :
자주 사용되며 int & , double & 의 비밀

나는 이미 이것을 이해했지만 내 생각에는 이것은 이미 변태입니다. 그렇다면 왜 void 함수를 만드나요? 논리적이지 않습니다. 무언가를 반환해야 합니다. int , double ... 유형의 함수를 통해 반환합니다.

 
디버깅하는 동안 오류가 발생했습니다.
 2013.01 . 06 21 : 06 : 32      2011.11 . 28 00 : 20   Base150 EURUSD,M5: not enough stack for parameter

어떻게 될 것인가?

 
hoz :

나는 이미 이것을 이해했지만 내 생각에는 이것은 이미 변태입니다. 그렇다면 왜 void 함수를 만드나요? 논리적이지 않습니다.

이것은 논리적입니다.

이 함수는 아무 것도 반환하지 않으며 전달된 배열의 요소에 대한 작업을 수행합니다.

 
hoz :

다음은 보류 중인 주문 수정 기능입니다. 수정할 때 새로운 가격과 새로운 손절매를 설정합니다. 기능이 부분적으로 작동하지만 어떤 이유로 테스터에 오류 1이 나타납니다.

내 기능이 올바르게 작성되었습니까?

if((b_mod) && (priceB > Ask)) OrderModify(b_ticket,priceB,priceS,0,0,Brown);
if((s_mod) && (priceS < Bid)) OrderModify(s_ticket,priceS,priceB,0,0,Brown);


여기서 스톱 레벨 MarketInfo( Symbol() ,MODE_STOPLEVEL) 즉,

priceB >= Ask+ MarketInfo(Symbol(),MODE_STOPLEVEL)*포인트

priceS <=Bid- MarketInfo(Symbol(),MODE_STOPLEVEL)*포인트

 
PapaYozh :

이것은 논리적입니다.

이 함수는 아무 것도 반환하지 않으며 전달된 배열의 요소에 대한 작업을 수행합니다.


글쎄, 요소가 double 또는 int 유형의 함수에 전달되면 변형 없이 동일한 작업을 수행할 수도 있습니다. 왜 삶이 복잡합니까?