Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 11

 
AndEv :
Tünaydın. (x1,y1) ve (x2,y2) koordinatlarına sahip iki nokta vardır. Bu iki noktadan logaritmanın tabanı doğal olandan farklı olan bir logaritmik fonksiyon nasıl oluşturulur? Ters işlevi () kullanmak istiyor gibi görünüyor, ancak bir şekilde çapraz olarak genişletmeniz gerekiyor, nasıl olduğunu anlayamıyorum. Kim karşılaştıysa, lütfen acele edin. Şimdiden teşekkürler.

Kolay, logaritmanızın tabanına bölün. Yani, x üzeri iki logaritmasına ihtiyacınız varsa, x'in logaritmasını ikinin logaritmasına bölersiniz ve x üzeri iki logaritmasını elde edersiniz .
 
gyfto :

Kolay, logaritmanızın tabanına bölün. Yani, x üzeri iki logaritmasına ihtiyacınız varsa, x'in logaritmasını ikinin logaritmasına bölersiniz ve x üzeri iki logaritmasını elde edersiniz .
Tam olarak anlama. MT4'teki normal logaritmik fonksiyonun sadece bir sayının doğal logaritmasını hesapladığını kastettim. MT4'te başka bir logaritmik fonksiyon yoktur. Ters işlevi kullanabilirsiniz, yani. MathPow, ancak bunun için köşegen boyunca yansıtılması gerekir. Bunu yapmanın daha kolay bir yolunu düşünemiyorum.
 
Fox_RM :

Piyasa fiyatından değil ne demek istediğinizi açıklayabilir misiniz? SELLLIMIT ve BUYLIMIT ile bu doğru.

Düzenlemeye gidin ve bekleyen siparişlerin neler olduğunu okuyun .. ve tüm sorular kaybolacaktır.
 
hoz :

Düzenlemeye gidin ve bekleyen siparişlerin neler olduğunu okuyun .. ve tüm sorular kaybolacaktır.


Satış limiti - üst limitten satış yapın, Alış limiti - alt limitten satın alın. Herşey

Ertelenenlerle doğru, onlarla ilgili değil.

 
Kodunuzda tüm piyasa emirleriniz var
 
AndEv :
Tam olarak anlama. MT4'teki normal logaritmik fonksiyonun sadece bir sayının doğal logaritmasını hesapladığını kastettim. MT4'te başka bir logaritmik fonksiyon yoktur. Ters işlevi kullanabilirsiniz, yani. MathPow, ancak bunun için köşegen boyunca yansıtılması gerekir. Bunu yapmanın daha kolay bir yolunu düşünemiyorum.


Hakkında?

Bir güç fonksiyonunun tersi aynı tabanda logaritmiktir. Logaritmik işlevi istenen a tabanında elde etmek için MathLog (x) 'u MathLog( a ) ile bölmeniz gerekir.

 
gyfto :


Hakkında?

Bir güç fonksiyonunun tersi aynı tabanda logaritmiktir. İstenen a tabanında logaritmik işlevi elde etmek için MathLog(x) öğesini MathLog( a ) ile bölmeniz gerekir.

Evet şimdi anladım teşekkürler
 
hoz :
Nada şöyle:


Yanlış yaptığım bir şey...

Şöyleydi:

 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--;                          
     }


Böyle mi yaptı:

 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--;                          
     }

Derlemeden sonra hata yok, ancak gösterge yalnızca bir uzun çubuk gösteriyor.

 
Krokus :

Derlemeden sonra hata yok, ancak gösterge yalnızca bir uzun çubuk gösteriyor.


Eh, henüz hindinizin mantığına dalmak için zamanım yok, ama size döngüyü nasıl doğru ayarlayacağınızı yazdım.

Bu arada, kodu basitleştirmek ve daha okunaklı hale getirmekten zarar gelmez. Ve sonra onu analiz etmek daha kolay olacak. Bu nedenle, sıklıkla hatalar meydana gelir. Kod ne kadar okunabilir ve değişkenlerin adları ne kadar iyi düşünülürse o kadar iyidir.

 
hoz :


Eh, henüz hindinizin mantığına dalmak için zamanım yok, ama size döngüyü nasıl doğru ayarlayacağınızı yazdım.

Bu arada, kodu basitleştirmek ve daha okunaklı hale getirmekten zarar gelmez. Ve sonra onu analiz etmek daha kolay olacak. Bu nedenle, sıklıkla hatalar meydana gelir. Kod ne kadar okunabilir ve değişkenlerin adları ne kadar iyi düşünülürse o kadar iyidir.


Anlayacağım... Teşekkürler.
Neden: