KimIV'ten faydalı özellikler - sayfa 66

 
borisych писал(а) >>

...

3. Burada regresyon, lineer regresyon denklemi ve grafiği anlamına gelir.

ur.lin regresyonunun eğimini sordu. Başka bir şekilde hesaplanabileceğini gösterdim. 3. Noktaya ne dediğinize ihtiyacınız varsa, o zaman 'KimIV'ten Faydalı fonksiyonlar'a bakın 2 tip fonksiyon vardır, hesaplama en küçük karelere dayanmaktadır, eğer daha büyük derecede bir polinom gerekiyorsa, o zaman bu algoritmayı kullanın 'Theory of rastgele akışlar ve FOREX'

 

StrTran() işlevi.

Bu işlev bir alt dizi değiştirme gerçekleştirir. Bulunan tüm olaylar değiştirilir. Örneğin, tek seferde tüm virgülleri noktalarla değiştirebilir veya tam tersini yapabilirsiniz. StrSplit() işlevi, elde edilen dizeyi döndürür ve aşağıdaki gerekli parametreleri alır:

  • str - strFrom alt dizesinin değiştirileceği dize.
  • strFrom - Değiştirilecek alt dize. strFrom alt dizesi str dizesinde bulunursa, strTo alt dizesiyle değiştirilecektir.
  • strTo - Değiştirilen alt dize.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  описание : Замена подстроки                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    str     - текстовая строка, в которой производится замена               |
//|    strFrom - заменяемая подстрока                                          |
//|    strTo   - заменяющая подстрока                                          |
//+----------------------------------------------------------------------------+
string StrTran ( string str , string strFrom , string strTo ) {
   int     n ;
   string strOut = "" , strTemp ;

   for ( n = 0 ; n < StringLen ( str ) ; n + + ) {
    strTemp = StringSubstr ( str , n , StringLen ( strFrom ) ) ;
     if ( strTemp = = strFrom ) {
      strOut = StringConcatenate ( strOut , strTo ) ;
      n = n + StringLen ( strFrom ) - 1 ;
     } else strOut = StringConcatenate ( strOut , StringSubstr ( str , n , 1 ) ) ;
   }
   return ( strOut ) ;
}
 

StrTran() işlevini kullanma örnekleri.

  1. Ondalık noktayı virgülle değiştirmek:
     string s = DoubleToStr ( Close [ 1 ] , Digits ) ;
    Print ( s ) ;
    s = StrTran ( s , "." , "," ) ;
    Print ( s ) ;
  2. Boşlukları kaldırma
     string s = "1 2 3 4 5 6 7 8" ;
    Print ( s , " " , StrToInteger ( s ) ) ;
    s = StrTran ( s , " " , "" ) ;
    Print ( s , " " , StrToInteger ( s ) ) ;
  3. kelime değiştirme
     string s = "листья жёлтые весной" ;
    Print ( s ) ;
    s = StrTran ( s , "весной" , "осенью" ) ;
    Print ( s ) ;

Örnek yürütme sonuçları:

not. Ekli, StrTran() işlevini test etmek için bir komut dosyasıdır.

Dosyalar:
 

Güncellenen özellik listesi:

Dosyalar:
f_kimiv.rar  12 kb
 
zhuki писал(а) >>
..
Mümkünse, görev çubuğu kısayolunda bir şey gösteren bir İşlev önermek istiyorum.
Terminali açmadan danışmanların çalışmalarını izlemek için kullanıyorum (birçok yabancı meraklı göz).

Bir zamanlar bu amaçlar için ayrı bir program yazdım - http://www.miraxem.com/rqids.htm


Forex Trader Hesaplayıcısı, açık pozisyonlardaki cari karı/zararı ve bir pozisyon kısmen kapatıldığında veya tersine çevrildiğinde elde edilen kar/zararı otomatik olarak hesaplar.

12 döviz çifti için gerçek zamanlı teklifler ve grafikler

Tüm pencerelerin üstünde bir şerit olarak görüntülenir ve seçilen döviz çiftleri için geçerli teklifi, kar / zarar puanlarını ve önemli olayların başlangıcından önce sinyal veren bir zamanlayıcı ile bir haber takvimini gösterir.

 
KimIV писал(а) >>
ahh ... peki, eğer prensipte ise, referansla geçen bir diziyi kullanabilirsiniz. Daha sonra döndürülen parametrelerin sayısı dizinin boyutuyla sınırlandırılacaktır.

Ahh... Böyle mi?

"Argümanlar ( formal parametreler ) değere göre iletilir, yani her xl , . . ., xn ifadesi değerlendirilir ve değer fonksiyona iletilir..."
Yardım örneği

 int start ( )
   {
   double some_array [ 4 ] = { 0.3 , 1.4 , 2.5 , 3.6 } ;
   double a = linfunc ( some_array , 10.5 , 8 ) ;
   //...
   }
double linfunc ( double x [ ] , double a , double b )
   {
   return ( a * x [ 0 ] + b ) ;
   }
Ve x [ 0 ]=999; hatırladığım kadarıyla derlemede yemin ediyor.
'x' - dizi öğesi atanamaz

 
KimIV писал(а) >>
[...]
Bunlar OP_BUY ve OP_SELL alım satım işlemleridir ve anladığım kadarıyla emirler OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT ve OP_SELLSTOP alım satım işlemleridir. Pozisyonlar açarım ve sipariş veririm. ne açtın NumberOfOrders() işlevi, siparişlerle çalışmak üzere tasarlanmıştır.

Aslında, bir fark olmamalı. Pozisyonlarla da çalışmalı.
İşlev, ot
= OrderType () ;

ve OrderType ()
"Şu anda seçili olan siparişin işlem türünü döndürür. Aşağıdaki değerlerden biri olabilir:
OP_BUY - satın alma pozisyonu,
OP_SELL - satış pozisyonu,
...

 
diakin писал(а) >>
Ahh... Böyle mi?

Kelimenin tam anlamıyla şunu kastettim:

 void start ( )
{
   double some_array [ ] ;
   string st = "" ;
  linfunc ( some_array ) ;
   for ( int i = 0 ; i < ArraySize ( some_array ) ; i + + )
   {
    st = StringConcatenate ( st , "some_array[" , i , "]=" , some_array [ i ] , " \n " ) ;
   }
   Comment ( st ) ;
}
void linfunc ( double & x [ ] )
{
   ArrayResize ( x , 7 ) ;
   for ( int i = 0 ; i < ArraySize ( x ) ; i + + )
   {
    x [ i ] = 0.7 * ( i + 0.1 ) ;
   }
} 

diakin yazdı: >>
'x' - dizi öğesi atanamaz

yerine:

 double linfunc ( double x [ ] , double a , double b )

ihtiyaç

 double linfunc ( double & x [ ] , double a , double b )
 
diakin писал(а) >>
Aslında, bir fark olmamalı. Pozisyonlarla da çalışmalı.

Mevkilere ve emirlere bölünme yapaydır. Kişisel rahatlığım için benim tarafımdan icat edildi. Ve bu bölünme aşağıdaki farklılıklara dayanmaktadır:

1. Bir emir (OrderOpenPrice()) için açılış/ayar fiyatını değiştirebilirsiniz, ancak bir pozisyon için değiştiremezsiniz.

2. Emir silinmeli (OrderDelete()) ve pozisyon kapatılmalıdır (OrderClose()).

3. Siparişin lot büyüklüğünü (yorum, sihirli sayı) depozito için kayıp olmadan değiştirebilirsiniz. Eski siparişi silin ve yeni parti büyüklüğü (yorum, sihirli sayı) ile yeni bir sipariş verin. Aynı şeyi pozisyon için yaparsanız, lot büyüklüğü ve puanın değeri ile çarpılan spread miktarında bir kayıp olacaktır.

4. Bir emrin bir ömrü vardır, ancak bir pozisyonun yoktur.

 
KimIV писал(а) >>

Kelimenin tam anlamıyla şunu kastettim:

yerine:

ihtiyaç

Teşekkür ederim! Şimdi neyin mümkün olduğunu ve referans olarak bileceğim ...

Peki, neden MQL yardımında bir bölümde parametrelerin değere göre iletildiğini ve diğerinde - "referans yoluyla geçmek mümkün" diye yazıyorsunuz...

Aman tanrım!

Siparişlere gelince, aksamanın ne olduğunu daha fazla okudum (> 1 && <6), yani OP_BUY, OP_SELL buraya dahil değil

Bu arada, sihirli sayı OrderModify() ile değiştirilemez. Yoksa yine bir şey mi kaçırdım? ;-()

Neden: