KimIV'ten faydalı özellikler - sayfa 45

 

GetPriceDiffInPoint() işlevinin kullanımına bir örnek.

Mevcut grafikte ikinci ve birinci çubuklar arasındaki oran hareketinin yönünü ve puan cinsinden değeri hesaplamamız gerektiğini varsayalım. EURUSD H1 grafiği güncel olsun. GetPriceDiffInPoint() işlevini varsayılan parametrelerle çağırırız:

 Message ( GetPriceDiffInPoint ()) ;

İşte sonuç:


GetPriceDiffInPoint() işlevi -23 puanlık bir değer döndürdü. Nasıl karşılandığını görelim. Bunu yapmak için, saatlik çubuklar 2, 1 ve 0 boyunca dikey çizgiler çizin:


Daha küçük bir zaman dilimine, örneğin M5'e geçelim ve üzerindeki 2 ve 1 çubuklarının aralığını bir dikdörtgenle işaretleyelim:

Şimdi, seçilen aralıktaki ilkin iki eşit yüksek 1.4283 olduğunu ve sadece onlardan sonra, ikinci saatin ortasında, en düşük 1.4260 olduğunu açıkça görebiliyoruz. Bundan son iki saat içinde EURUSD kurunun düştüğü ve düşüş miktarının (1.4283 - 1.4260) / 0.0001 = 23 puan olduğu sonucuna varıyoruz.


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

Dosyalar:
 

Şık bir seçim, ancak herhangi bir TF'de bir çubuğun ilk başarılı kapanışında bir emri (alış veya satış) kapatma işlevi var mı?

 

Siparişleri açmadan önce hangi kontrollerin yapıldığını öğrenebilir miyim?

Ayrı bir işlevde toplanmışlarsa, lütfen bir bağlantı verin. Değilse, lütfen bir liste sağlayın.

 
SK. писал (а) >>
Siparişleri açmadan önce hangi kontrollerin yapıldığını öğrenebilir miyim?

Seryozha, sorunun benim için olup olmadığını çözemedim?

 
KimIV писал (а) >>

...

Açan, kapatan ve değiştiren işlevler, hataları işlemek için Uyku komutunu kullanır. Biraz araştırma yaptım ve bunu bununla değiştirmenizi tavsiye ederim. Gerçek şu ki, gecikme değeri doğası gereği tavsiye niteliğindedir ve kesinlikle bu değer olmak zorunda değildir. Oldukça sık, siparişle hemen (gecikmeden) işlem yapmanıza izin verirler. Ama teklif verirlerse, DC'nin ne zaman ve ne tür bir işlem yapacağımı hesaplayabilmesinden hoşlanmıyorum.

 int start ()
   {
//----
   Sleep_RND ( 20000 ) ;  
//----
   return ( 0 ) ;
   }
//+------------------------------------------------------------------+
void Sleep_RND ( int _Pausa )
   {
   MathSrand ( TimeLocal ()) ;
   MathRand () ;
   Sleep ( MathRound ( _Pausa * MathRand () / 32767 + _Pausa / 5 )) ;
   return ;
   }
 
KimIV писал (а) >>

Seryozha, sorunun benim için olup olmadığını çözemedim?

Evet, Igor, bu senin için bir soru.

Anlamı şu. Açma işlevine baktım, orada kontrol yok. Görünüşe göre, başka bir işlevde yoğunlaşıyorlar. Böyle bir fonksiyona bakmak mümkünse, lütfen verin. bağlantı. Böyle bir fonksiyon yoksa, buraya bir kontrol listesi yazabilirsiniz. Yavaş olabilir.

 

Hayır, Sergey, daha fazla kontrol yapmıyorum. Daha doğrusu öyle yapıyorum ama onları ayrı işlevlerde tutamıyorum. Yani biraz sabrediyorum... Lanet olsun, bir örnek versem iyi olur:

 extern int StopLoss = 30 ;
extern int TakeProfit = 50 ;

double ll = GetSizeLot () ;
double po , pp , sl , tp ;
if ( ExistPositions ( NULL , OP_BUY , Magic )) {
   po = PriceOpenLastPos ( NULL , OP_BUY , Magic ) ;
   if ( ! ExistOrders    ( NULL , OP_SELLSTOP , Magic + 1 )
  &&  ! ExistPositions ( NULL , OP_SELL     , Magic + 1 )) {
     pp = po - offSet * Point ;
     if ( StopLoss > 0 ) sl = pp + StopLoss * Point ; else sl = 0 ;
     if ( TakeProfit > 0 ) tp = pp - TakeProfit * Point ; else tp = 0 ;
     SetOrder ( NULL , OP_SELLSTOP , ll , pp , sl , tp , Magic + 3 ) ;
   }
}

Burada ne görüyoruz?

1. İşlem gören lot hesaplanır.

2. Belirli bir büyü ile bir Alış pozisyonu varsa, açılış fiyatı po belirlenir.

3. Eğer SellStop emri yoksa ve belirtilenden daha sihirli bir SellStop pozisyonu varsa, Buy pozisyonunun açılış fiyatının altında bir fiyat ofset noktaları ile bir SellStop emri verin.

4. Arada, sl ve tp fiyat seviyelerini hesaplıyoruz.

 
KimIV писал (а) >>

4. Arada, sl ve tp fiyat seviyelerini hesaplıyoruz.

Bunun hakkında konuşuyorum. Genel olarak konuşursak, her zaman değişen mevcut kısıtlamaları dikkate almak gerekir.

Her türlü kısıtlamayı analiz eden bir fonksiyon var mı?

Modifiye ile aynı.

--

(16 işlevim var - her mükemmel sipariş için 3 (OP,SL,TP) ve her pazar için 2 (SL,TP),

ve ardından birkaç izin kombinasyonunu daha analiz edin).

 
SK. писал (а) >>
Her türlü kısıtlamayı analiz eden bir fonksiyon var mı?
Henüz değil ... bir şekilde gerekli değildi. Ama senin sayende bunu düşündüm ve GEREKLİ olduğunu hissettim! Teşekkür ederim!
 

GetTypePrice() işlevi

Fiyat türü adını döndürür. İşlev yalnızca bir isteğe bağlı parametre alır. Geçerli değerler: PRICE_CLOSE, PRICE_OPEN, PRICE_HIGH, PRICE_LOW, PRICE_MEDIAN, PRICE_TYPICAL, PRICE_WEIGHTED. Varsayılan değer 0 - PRICE_CLOSE.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование типа цены.                             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    Applied_Price - тип цены                                                |
//+----------------------------------------------------------------------------+
string GetTypePrice ( int Applied_Price = 0 ) {
   switch ( Applied_Price ) {
     case PRICE_CLOSE    : return ( " Close " ) ;
     case PRICE_OPEN     : return ( " Open " ) ;
     case PRICE_HIGH     : return ( " High " ) ;
     case PRICE_LOW      : return ( " Low " ) ;
     case PRICE_MEDIAN   : return ( " Median " ) ;
     case PRICE_TYPICAL : return ( " Typical " ) ;
     case PRICE_WEIGHTED : return ( " Weighted " ) ;
     default             : return ( " Unknown Type Price " ) ;
   }
}
Bu işlev, özellikle fiyat sabitlerinin değerleri hakkında açıklamaları görüntülemek için göstergelerin, komut dosyalarının ve Uzman Danışmanların çalışmasını yorumlamak veya günlüğe kaydetmek için uygundur.