KimIV'ten faydalı özellikler - sayfa 58

 

Merhaba Igor,

Bu operatörün mql4'te hangi operatörün değiştirildiğini söyleyebilir misiniz - OrderValue(cnt,VAL_TYPE)=OP_BUY (mql3).

Şimdiden teşekkürler.

 
Mevcut barın kapanış fiyatından bir emri nasıl kapatacağımı söyler misiniz? Yani bar siparişle birlikte kapatılır.
 

Merhaba Igor.

Kaç fonksiyon ve operatöre bakmadım - bulamıyorum ve varsa, o zaman fonksiyona bakın,

bu, tüm açık pozisyonları bir kerede değiştirir ve her bir işarette yalnızca bir seçili olanı değil.

Eğer sakıncası yoksa, lütfen bana bildirin.

 
KimIV >> :

Bu başlıkta fonksiyonlarımın kodlarını MQL4 programlama dilinde yayınlayacağım, kullanımlarına örnekler vereceğim ve kullanımları ile ilgili soruları cevaplayacağım. Her işlevi iki gönderide yayınlayacağım. İlk gönderide fonksiyon kodu, ikinci gönderide kullanım örnekleri ve küçük açıklamalar. Görüntülenen sonuçlarla işlevin gerçek testi için bazen komut dosyasını ikinci gönderiye ekleyeceğim.

Sondaki " Aynı anda iki Uzman Danışman nasıl çalıştırılır " konusunda Lukyanov'un isteği üzerine siparişlerle çalışmak üzere tasarlanmış işlevlerle başlayacağım.

Sıra ayar fonksiyonunun ilki olmasına izin verin (MT4 test cihazı versiyonu):

merhaba Igor. alter tüccar terminaline aşina değil misiniz? eğer öyleyse beni ilgilendiren 3-4 sorunun cevabını söyler misiniz?

 
ipm писал(а) >>
Igor. Güzel gün.
Sizin için basit bir problem yazabilir misiniz:
sinyal çizgisinin MACD'yi hangi fiyat değerinde geçeceği veya başka bir deyişle MACD histogramının sıfıra eşit olacağı belirlenir.

Merhaba Oleg!

Uygulamada, bu tür sorunları çözmedim. Evet ve teorik olarak belirsiz bir şekilde bunun nasıl yapıldığını hayal edin. Muhtemelen McDuck değerleri y olarak alınır ve fiyat x içindir ve ardından y=f(x) fonksiyonu McDuck değerlerinin fiyata bağımlılığını temsil edecektir. O kadar basit olsaydı, x'i y x=F(y) cinsinden ifade ederek y=f(x) fonksiyonunu tersine çevirebilirdik. Ancak zorluk, y=f(x) fonksiyonunun bir x'e değil, birkaçına bağlı olmasıdır. Üniversitede bu dersleri atladım :-)

 
Duke3D писал(а) >>

Merhaba Igor,

Bu operatörün mql4'te hangi operatörün değiştirildiğini söyleyebilir misiniz - OrderValue(cnt,VAL_TYPE)=OP_BUY (mql3).

Şimdiden teşekkürler.

Görünüşe göre OrderType() olacak.

 
mozg писал(а) >>
Mevcut barın kapanış fiyatından bir emri nasıl kapatacağımı söyler misiniz? Yani bar siparişle birlikte kapatılır.
 static datetime prevTimeOpen = 0
if ( prevTimeOpen > 0 & & prevTimeOpen < Time [ 0 ] ) {
   for ( цикл перебора позиций ) {
     if ( выбрана позиция , которую надо закрыть ) {
       OrderClose ( . . . ) ;
     }
   }
}
prevTimeOpen = Time [ 0 ] ;
 
amur писал(а) >>

Merhaba Igor.

Kaç fonksiyon ve operatöre bakmadım - bulamıyorum ve varsa, o zaman fonksiyona bakın,

bu, tüm açık pozisyonları bir kerede değiştirir ve her bir işarette seçili olanı değiştirmez.

Eğer sakıncası yoksa, lütfen bana bildirin.

Bu tür eylemlerin uygun olması olası değildir. Sonuçta, her pozisyonun genellikle bireysel parametreleri vardır. Bu nedenle, belirli bir tane seçilir ...

Tam olarak neyi değiştirmek istiyorsunuz?

 

NameDayOfWeek() işlevi

Parametre olarak geçirilen sayıya göre haftanın gününün adını döndürür:

  • ndw - Haftanın gün sayısı. Gerekli parametre.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование дня недели                             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    ndw - номер дня недели                                                  |
//+----------------------------------------------------------------------------+
string NameDayOfWeek ( int ndw ) {
   if ( ndw = = 0 ) return ( "Воскресенье" ) ;
   if ( ndw = = 1 ) return ( "Понедельник" ) ;
   if ( ndw = = 2 ) return ( "Вторник" ) ;
   if ( ndw = = 3 ) return ( "Среда" ) ;
   if ( ndw = = 4 ) return ( "Четверг" ) ;
   if ( ndw = = 5 ) return ( "Пятница" ) ;
   if ( ndw = = 6 ) return ( "Суббота" ) ;
}
 

NormalizeLot() işlevi.

Bu fonksiyon, işlem gören lotun normalleştirilmiş değerini döndürür. Normalleştirmeye ek olarak, fonksiyon parti büyüklüğünü de işlem merkezi tarafından belirlenen limitler dahilinde tutar (minimum ve maksimum parti değerlerinin yanı sıra parti değiştirme adımı kontrol edilir). NormalizeLot() işlevi aşağıdaki parametreleri alır:

  • lo - Normalleştirilecek lot değeri. Gerekli parametre.
  • ro - Yuvarlama yöntemi. Yanlış - aşağı, Doğru - yukarı. Varsayılan değer False - down şeklindedir.
  • sy - İşlem aracının adı. NULL veya "" geçerli karakterdir. Varsayılan değer "" dir.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает нормализованное значение торгуемого лота.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    lo - нормализуемое значение лота.                                       |
//|    ro - способ округления          (   False    - в меньшую,               |
//|                                        True     - в большую сторону)       |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//+----------------------------------------------------------------------------+
double NormalizeLot ( double lo , bool ro = False , string sy = "" ) {
   double l , k ;
   if ( sy = = "" | | sy = = "0" ) sy = Symbol ( ) ;
   double ls = MarketInfo ( sy , MODE_LOTSTEP ) ;
   double ml = MarketInfo ( sy , MODE_MINLOT ) ;
   double mx = MarketInfo ( sy , MODE_MAXLOT ) ;

   if ( ml = = 0 ) ml = 0.1 ;
   if ( mx = = 0 ) mx = 100 ;

   if ( ls > 0 ) k = 1 / ls ; else k = 1 / ml ;
   if ( ro ) l = MathCeil ( lo * k ) / k ; else l = MathFloor ( lo * k ) / k ;

   if ( l < ml ) l = ml ;
   if ( l > mx ) l = mx ;

   return ( l ) ;
}

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

Dosyalar: