KimIV'ten faydalı özellikler - sayfa 37

 
KimIV писал (а) >>

isLossLastPos() işlevi.

Bu işlev, son kapatılan pozisyonun kârsızlık bayrağını döndürür. Bayrak kaldırıldı - Doğru - son pozisyon bir kayıpla kapatıldı. Bayrak atlandı - Yanlış - son pozisyon ya sıfırdan ya da kârla kapatıldı. İşlev, takasları ve komisyonu hesaba katmaz. Konum seçimi harici parametreler tarafından belirlenir:

  • sy - Piyasa aracının adı. Bu parametreyi ayarlarsanız, işlev yalnızca belirtilen takımın konumlarını dikkate alacaktır. Varsayılan değer "" herhangi bir piyasa aracı anlamına gelir. NULL , geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY , OP_SELL veya -1 . Varsayılan değer -1 , herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.
PS Ekli, isLossLastPos() işlevini test etmek için bir komut dosyasıdır.

Son kapatılan pozisyonla ilgili çok sayıda fonksiyon üretmemek için aşağıdaki seçeneği öneriyorum:

 int LastClosePos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime t ;
   int        i , j =- 1 , k = OrdersHistoryTotal () ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( t < OrderCloseTime ()) {
                 t = OrderCloseTime () ;
                 j = OrderTicket();                }
               else
                 return ( j ) ;
             }
           }
         }
       }
     }
   }
   return ( - 1 ) ;
}

Bu fonksiyon, son kapatılan pozisyonun bilet numarasını belirler ve...

Bilet numarasıyla ilgili diğer işlemler, çözülmekte olan göreve bağlı olarak programcının takdirindedir...

 

FindNearFractal() işlevi.

Bu fonksiyon en yakın fraktalı arar ve fiyat seviyesini döndürür. İşlev, aşağıdaki isteğe bağlı parametreleri kabul eder:

  • sy - Araç adı. "" veya NULL geçerli karakterdir. Varsayılan değer NULL'dur .
  • tf - Zaman çerçevesi. Varsayılan değer 0 , geçerli karakterdir.
  • mod - Fraktal türü. Geçerli değerler MODE_LOWER ve MODE_UPPER'dir . Varsayılan değer MODE_LOWER'dır .
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень.         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy   - наименование инструмента      ("" или NULL - текущий символ)     |
//|    tf   - таймфрейм                     (    0       - текущий ТФ)         |
//|    mode - тип фрактала                  (MODE_LOWER|MODE_UPPER)            |
//+----------------------------------------------------------------------------+
double FindNearFractal ( string sy = " 0 " , int tf = 0 , int mode = MODE_LOWER ) {
   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   double f = 0 ;
   int      d = MarketInfo ( sy , MODE_DIGITS ) , s ;
   if ( d == 0 ) if ( StringFind ( sy , " JPY " ) < 0 ) d = 4 ; else d = 2 ;

   for ( s = 2 ; s < 100 ; s ++ ) {
     f = iFractals ( sy , tf , mode , s ) ;
     if ( f != 0 ) return ( NormalizeDouble ( f , d )) ;
   }
   Print ( " FindNearFractal(): Фрактал не найден " ) ;
   return ( 0 ) ;
}
 

FindNearFractal() işlevini kullanma örnekleri.

  • Mevcut tablodaki en yakın alt fraktalın fiyatı.
     Message ( FindNearFractal ()) ;
  • Mevcut sembolün H4 tablosundaki en yakın yukarı fraktalın fiyatı.
     Message ( FindNearFractal ( NULL , PERIOD_H4 , MODE_UPPER )) ;
  • GBPUSD M30 grafiğindeki en yakın alt fraktalın fiyatı.
     Message ( FindNearFractal ( " GBPUSD " , PERIOD_M30 , MODE_LOWER )) ;
    

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

Dosyalar:
 
KimIV (a) yazdı >>

SetVLine() işlevini kullanma örnekleri.

  1. Geçerli çubukta mavi düz dikey çizgi.
  2. Sekizinci çubukta leylak kalın çizgi.
  3. Çubuklarda noktalı çizgiler ızgarası 14:00.

not. SetVLine() işlevini test etmek için bir komut dosyası ektedir.

KimIV (a) yazdı >>

SetVLine() işlevini kullanma örnekleri.

  1. Geçerli çubukta mavi düz dikey çizgi.
  2. Sekizinci çubukta leylak kalın çizgi.
  3. Çubuklarda noktalı çizgiler ızgarası 14:00.

not. SetVLine() işlevini test etmek için bir komut dosyası ektedir.

günaydın İgor,
Örnek olarak böyle bir fonksiyonun bir göstergede nasıl kullanılabileceğini gösterebilir misiniz?
PreviousiHighsvAndhLows0 göstergesini sonlandırmaya ve ona bir zaman damgası eklemeye çalışıyorum.

SetVLine() örneğini kullanarak ve belirli bir süre ile bir çubuğun açılışında bir etiket çizin..
Şimdiye kadar, versiyonum bir tür saçmalık çiziyor
burada forumda zaten yardım istedim, ama görünüşe göre yeni başlayanlar burada pek şımartılmış değil ..

Yine de teşekkür ederim, işlevleriniz adım adım öğrenme için çok faydalı, ancak elbette çok daha fazla ipucu veya farklı örnekler olsaydı iyi olurdu.

 
obabuev писал (а) >>
Örnek olarak böyle bir fonksiyonun bir göstergede nasıl kullanılabileceğini gösterebilir misiniz?
PreviousiHighsvAndhLows0 göstergesini sonlandırmaya ve ona bir zaman damgası eklemeye çalışıyorum.
SetVLine() örneğini kullanarak ve belirli bir süre ile bir çubuğun açılışında bir etiket çizin..

Hangi işaretleri çizmek istediğinizi çizim üzerinde gösterin.

 

GetExtremumZZBar() işlevi.

Bu işlev, standart özel ZigZag göstergesinin uç noktasını arar ve çubuk numarasını döndürür. İşlev, aşağıdaki isteğe bağlı parametreleri kabul eder:

  • sy - Araç adı. "" veya NULL geçerli karakterdir. Varsayılan değer NULL'dur .
  • tf - Zaman çerçevesi. Varsayılan değer 0 - mevcut zaman dilimi.
  • ne - Uç nokta numarası. 0 - son, 1 - önceki, 2 - önceki vb.
  • dp , dv , bs - ZigZaga parametreleri: Sırasıyla ExtDepth , ExtDeviation , ExtBackstep .
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает номер бара экстремума ЗигЗага по его номеру.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar ( string sy = "" , int tf = 0 , int ne = 0 , int dp = 12 , int dv = 5 , int bc = 3 ) {
   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   double zz ;
   int      i , k = iBars ( sy , tf ) , ke = 0 ;

   for ( i = 0 ; i < k ; i ++ ) {
     zz = iCustom ( sy , tf , " ZigZag " , dp , dv , bc , 0 , i ) ;
     if ( zz != 0 ) {
       ke ++;
       if ( ke > ne ) return ( i ) ;
     }
   }
   Print ( " GetExtremumZZBar(): Экстремум ЗигЗага номер " , ne , " не найден " ) ;
   return ( - 1 ) ;
}
 

GetExtremumZZBar() işlevini kullanma örnekleri.

  • Geçerli çizelgede en son ZigZag ekstremumunu içeren çubuğun numarası.
     Message ( GetExtremumZZBar ()) ;
  • Geçerli sembolün H4 tablosunda sondan bir önceki ZigZag ekstremumunu içeren çubuğun numarası.
     Message ( GetExtremumZZBar ( NULL , PERIOD_H4 , 1 )) ;
  • Mevcut grafikteki son ZigZag kırılmasını bulun ve içinden dikey bir çizgi çizin.
     int n = GetExtremumZZBar ( NULL , 0 , 1 ) ;
    SetVLine ( Magenta , "" , Time [ n ]) ; 

not. GetExtremumZZBar() işlevini test etmek için bir komut dosyası ektedir.

Dosyalar:
 
KimIV писал (а) >>

Hangi işaretleri çizmek istediğinizi resimde gösterin.

Cevabınız için teşekkürler Igor.
İki gündür oturuyorum ama işareti yaptım
Şimdi başka bir şey yapmaya çalışıyorum
test için ihtiyacım var
i-AnyRange göstergenizi kullanarak böyle bir şey yapmak istiyorum
gösterge, rastgele bir sapma ile işlenen zamanı.
Örneğin-
göstergede
zaman1=10:05;
zaman2=15:35;
göstergenin kendisi kullanırken
T1=zaman1(+/-rastgele)
T2=zaman2(+/-rastgele)
ancak maksimum sapma limitlerinin de ayarlanması gerekir, örneğin
maksimum rastgele=5dk;
Yakalama, rastgelelik nasıl 5 dakika ile sınırlandırılabilir?
Muhtemelen benzer örnekleriniz vardır

Dosyalar:
 
obabuev писал (а) >>

ancak maksimum sapma limitlerinin de ayarlanması gerekir, örneğin
maksimum rastgele=5dk;
Yakalama, rastgeleliği 5 dakika ile nasıl sınırlayacağınızdır?
Muhtemelen benzer örnekleriniz vardır

5 dakika 300 saniyedir:

 void init () {
   MathSrand ( TimeLocal ()) ;
}

void start () {
   double a = MathRand () / 32767.0 * 300 ;
   int b = MathFloor ( a ) ;
   Comment ( b ) ;
}
 
KimIV писал (а) >>

5 dakika 300 saniyedir:

Tabii ki teşekkür ederim, ama soruları tam olarak cevaplamıyor,
Şimdi Time2 dakika dizesine int b nasıl eklenir veya artı eksi rasgele nasıl yapılır

Elbette çözeceğim, ama bu zor