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

 
AndEv :
안녕하세요. 좌표가 (x1,y1) 및 (x2,y2)인 두 점이 있습니다. 이 두 점에서 자연수와 다른 밑수를 사용하여 로그 함수를 구성하는 방법은 무엇입니까? 역함수()를 쓰라고 하는 것 같은데 어떻게든 대각선으로 확장해야 하는데 어떻게 해야할지 모르겠네요. 누가 직면했다면, 빨리 부탁드립니다. 미리 감사드립니다.

쉽게, 로그의 밑으로 나눕니다. 즉, x의 로그가 2의 거듭제곱이 필요한 경우 x의 로그를 2의 로그로 나누면 x의 로그를 2 의 거듭제곱으로 구합니다.
 
gyfto :

쉽게, 로그의 밑으로 나눕니다. 즉, x의 로그가 2의 거듭제곱이 필요한 경우 x의 로그를 2의 로그로 나누면 x의 로그를 2 의 거듭제곱으로 구합니다.
이해가 잘 안됩니다. MT4의 일반 로그 함수는 숫자의 자연 로그 만 계산한다는 것을 의미했습니다. MT4에는 다른 로그 함수가 없습니다. 역함수를 사용할 수 있습니다. MathPow, 그러나 이를 위해서는 대각선을 따라 미러링되어야 합니다. 나는 이것을 하는 더 쉬운 방법을 생각할 수 없다.
 
Fox_RM :

시장 가격이 아닌 것이 무엇을 의미하는지 명확히 할 수 있습니까? SELLLIMIT 및 BUYLIMIT를 사용하면 맞습니다.

편집으로 이동하여 보류 중인 주문 이 무엇인지 읽으십시오. .. 그러면 모든 질문이 사라집니다.
 
hoz :

편집으로 이동하여 보류 중인 주문이 ..인지 읽으십시오. 그러면 모든 질문이 사라집니다.


매도 한도 - 상한선부터 매도, 매수한도 - 하한선부터 매수. 모두

연기된 것은 그들에 관한 것이 아닙니다.

 
코드에 모든 시장 주문이 있습니다.
 
AndEv :
이해가 잘 안됩니다. MT4의 일반 로그 함수는 숫자의 자연 로그만 계산한다는 것을 의미했습니다. MT4에는 다른 로그 함수가 없습니다. 역함수를 사용할 수 있습니다. MathPow, 그러나 이를 위해서는 대각선을 따라 미러링되어야 합니다. 나는 이것을 하는 더 쉬운 방법을 생각할 수 없다.


그것에 대해?

거듭제곱 함수의 역함수는 같은 밑에서 로그입니다. 원하는 밑수 a 에서 대수 함수를 얻으려면 MathLog (x)를 MathLog( a )로 나누어야 합니다.

 
gyfto :


그것에 대해?

거듭제곱 함수의 역함수는 같은 밑에서 로그입니다. 원하는 밑수 a 에서 로그 함수를 얻으려면 MathLog(x) 를 MathLog( a )로 나누어야 합니다.

네 이제 알겠습니다 감사합니다
 
hoz :
나다:


내가 뭔가를 잘못하고 있어...

다음과 같았습니다.

 int start()                         
  {
   int i, Counted_bars;  
//--------------------------------------------------------------------
   CurrentPoint1 = 0 ;
   CurrentPoint2 = 0 ; 
   kVol1=MarketInfo(Symbol_1, MODE_TICKVALUE)/MarketInfo(Symbol_1, MODE_TICKSIZE);
   kVol2=MarketInfo(Symbol_2, MODE_TICKVALUE)/MarketInfo(Symbol_2, MODE_TICKSIZE);
   Counted_bars=IndicatorCounted(); 
   i= Bars -Counted_bars- 1 ;           
   while (i>= 0 )                     
     {
      Symbol1_Buf[i] = MACD (Symbol_1, iBarShift(Symbol_1, 0 , Time[i], FALSE));
       if (Revers) Symbol2_Buf[i] = - 1 *MACD (Symbol_2, iBarShift(Symbol_2, 0 , Time[i], FALSE));
       else Symbol2_Buf[i] = MACD (Symbol_2, iBarShift(Symbol_2, 0 , Time[i], FALSE));
      
       if ((Symbol1_Buf[i+ 1 ]>Symbol2_Buf[i+ 1 ] && Symbol1_Buf[i+ 2 ]<=Symbol2_Buf[i+ 2 ]) ||
         (Symbol1_Buf[i+ 1 ]<Symbol2_Buf[i+ 1 ] && Symbol1_Buf[i+ 2 ]>=Symbol2_Buf[i+ 2 ]))
         {
          CurrentPoint1 = 0 ;
          CurrentPoint2 = 0 ;
          ZeroClose1 = iClose(Symbol_1, Period (),iBarShift(Symbol_1, 0 ,Time[i+ 1 ]));
          ZeroClose2 = iClose(Symbol_2, Period (),iBarShift(Symbol_2, 0 ,Time[i+ 1 ]));         
         }
      
      CurrentPoint1 = iClose(Symbol_1, Period (),iBarShift(Symbol_1, 0 ,Time[i])) - ZeroClose1;
       if (Revers) CurrentPoint2 = - 1 *(iClose(Symbol_2, Period (),iBarShift(Symbol_2, 0 ,Time[i])) - ZeroClose2);
       else CurrentPoint2 = iClose(Symbol_2, Period (),iBarShift(Symbol_2, 0 ,Time[i])) - ZeroClose2;

      Spread_Buf[i]  = (CurrentPoint1 / MarketInfo(Symbol_1, MODE_POINT) - CurrentPoint2 / MarketInfo(Symbol_2, MODE_POINT));
                              
      Buf_Up[i] = Spread_Buf[i];     
      Buf_Dw[i] = Spread_Buf[i];  
       if (Spread_Buf[i] < Spread_Buf[i+ 1 ]) Buf_Up[i] = EMPTY_VALUE ;
       if (Spread_Buf[i] > Spread_Buf[i+ 1 ]) Buf_Dw[i] = EMPTY_VALUE ; 
      i--;                          
     }


다음과 같이 했습니다.

 int start()                         
  {
     int i, countedBars = IndicatorCounted();
        
     for (i = Bars - countedBars;i > 0 ;i--)    
//--------------------------------------------------------------------
   CurrentPoint1 = 0 ; 
   CurrentPoint2 = 0 ; 
   kVol1=MarketInfo(Symbol_1, MODE_TICKVALUE)/MarketInfo(Symbol_1, MODE_TICKSIZE);
   kVol2=MarketInfo(Symbol_2, MODE_TICKVALUE)/MarketInfo(Symbol_2, MODE_TICKSIZE);
             
   while (i>= 0 )                 
     {
      Symbol1_Buf[i] = MACD (Symbol_1, iBarShift(Symbol_1, 0 , Time[i], FALSE));
       if (Revers) Symbol2_Buf[i] = - 1 *MACD (Symbol_2, iBarShift(Symbol_2, 0 , Time[i], FALSE));
       else Symbol2_Buf[i] = MACD (Symbol_2, iBarShift(Symbol_2, 0 , Time[i], FALSE));
      
       if ((Symbol1_Buf[i+ 1 ]>Symbol2_Buf[i+ 1 ] && Symbol1_Buf[i+ 2 ]<=Symbol2_Buf[i+ 2 ]) ||
         (Symbol1_Buf[i+ 1 ]<Symbol2_Buf[i+ 1 ] && Symbol1_Buf[i+ 2 ]>=Symbol2_Buf[i+ 2 ]))
         {
          CurrentPoint1 = 0 ;
          CurrentPoint2 = 0 ;
          ZeroClose1 = iClose(Symbol_1, Period (),iBarShift(Symbol_1, 0 ,Time[i+ 1 ]));
          ZeroClose2 = iClose(Symbol_2, Period (),iBarShift(Symbol_2, 0 ,Time[i+ 1 ]));         
         }
      
      CurrentPoint1 = iClose(Symbol_1, Period (),iBarShift(Symbol_1, 0 ,Time[i])) - ZeroClose1;
       if (Revers) CurrentPoint2 = - 1 *(iClose(Symbol_2, Period (),iBarShift(Symbol_2, 0 ,Time[i])) - ZeroClose2);
       else CurrentPoint2 = iClose(Symbol_2, Period (),iBarShift(Symbol_2, 0 ,Time[i])) - ZeroClose2;

      Spread_Buf[i]  = (CurrentPoint1 / MarketInfo(Symbol_1, MODE_POINT) - CurrentPoint2 / MarketInfo(Symbol_2, MODE_POINT));
                              
      Buf_Up[i] = Spread_Buf[i];     
      Buf_Dw[i] = Spread_Buf[i];  
       if (Spread_Buf[i] < Spread_Buf[i+ 1 ]) Buf_Up[i] = EMPTY_VALUE ;
       if (Spread_Buf[i] > Spread_Buf[i+ 1 ]) Buf_Dw[i] = EMPTY_VALUE ; 
      i--;                          
     }

컴파일 후 오류는 없지만 표시기에 긴 막대가 하나만 표시됩니다.

 
Krokus :

컴파일 후 오류는 없지만 표시기에 긴 막대가 하나만 표시됩니다.


글쎄, 나는 아직 칠면조의 논리를 탐구할 시간이 없지만 주기를 올바르게 설정하는 방법을 썼습니다.

그건 그렇고, 코드를 단순화하고 더 읽기 쉽게 만드는 것은 나쁘지 않을 것입니다. 그러면 분석하기가 더 쉬울 것입니다. 이 때문에 오류가 자주 발생합니다. 코드 가독성이 높을수록 변수 이름이 더 신중할수록 좋습니다.

 
hoz :


글쎄, 나는 아직 칠면조의 논리를 탐구할 시간이 없지만 주기를 올바르게 설정하는 방법을 썼습니다.

그건 그렇고, 코드를 단순화하고 더 읽기 쉽게 만드는 것은 나쁘지 않을 것입니다. 그러면 분석하기가 더 쉬울 것입니다. 이 때문에 오류가 자주 발생합니다. 코드가 더 읽기 쉽고 변수 이름이 더 신중할수록 좋습니다.


이해하겠습니다... 감사합니다.
사유: