TicketNearPos() - Açılış fiyatından veya 0'dan piyasaya en yakın pozisyonun bileti.
Bu işlevler, Andrey, parti büyüklüğüne göre seçim dışında ihtiyacınız olan her şeye sahiptir. Yakın gelecekte, parti büyüklüğüne göre açılış fiyatı ve biletin alınabileceği başka işlevler yapacağım.
TicketNearPos() - Açılış fiyatından veya 0'dan piyasaya en yakın pozisyonun bileti.
Bu işlevler, Andrey, parti büyüklüğüne göre seçim dışında ihtiyacınız olan her şeye sahiptir. Yakın gelecekte, parti büyüklüğüne göre açılış fiyatı ve biletin alınabileceği başka işlevler yapacağım.
Belki onlar benim için gereksizdir ve şu gibi gereksiz koşullardan kurtulmam gerekiyor: en yakın pozisyonun açılış fiyatı, son açık, piyasaya en yakın. Ve her zaman doğru sonuç vermez. Ayrıca doğru seçeneklerin karşılaştırılmasında tüm bu hikmetlerin anlaşılması daha hızlı olacaktır. Teşekkürler, bekleyeceğim.
Bu fonksiyon, lot büyüklüğüne göre bir pozisyonun veya emrin açılış fiyatını döndürür. Dikkate alınacak pozisyonların 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 değeri, geçerli enstrüman anlamına gelir.
op - Ticaret işlemi, pozisyon veya emir türü. Geçerli değerler OP_BUY , OP_SELL, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP veya -1'dir . Varsayılan değer -1 , herhangi bir ticaret işlemi anlamına gelir.
mn - Konum veya sipariş kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.
lo- çok.0varsayılan değeriherhangi bir lot anlamına gelir.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 29.03.2013 |//| Описание : Возвращает цену открытия позиции или ордера по размеру лота. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ( "" - любой символ, |//| NULL - текущий символ) |//| op - торговая операция ( -1 - любая операция) |//| mn - MagicNumber ( -1 - любой магик) |//| lo - лот ( 0 - любой лот) |//+----------------------------------------------------------------------------+double GetOpenPriceByLot( string sy= "" , int op=- 1 , int mn=- 1 , double lo= 0 ) {
double p= 0 ;
int i, k= OrdersTotal ();
if (sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy== "" ) && (mn< 0 || OrderMagicNumber()==mn)) {
if ((op< 0 || OrderType()==op) && OrderType()< 6 ) {
if (lo==0 || lo==NormalizeLot(OrderLots())) p=OrderOpenPrice();
}
}
}
}
return (p);
}
not.GetOpenPriceByLot () işlevini test etmek için bir komut dosyası ektedir.
Bu fonksiyon, lot büyüklüğüne göre bir pozisyon veya sipariş bileti döndürür. Dikkate alınacak pozisyonların 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 değeri, geçerli enstrüman anlamına gelir.
op - Ticaret işlemi, pozisyon veya emir türü. Geçerli değerler OP_BUY , OP_SELL, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP veya -1'dir . Varsayılan değer -1 , herhangi bir ticaret işlemi anlamına gelir.
mn - Konum veya sipariş kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.
lo - çok. 0 varsayılan değeri herhangi bir lot anlamına gelir.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 29.03.2013 |//| Описание : Возвращает тикет позиции или ордера по размеру лота. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ( "" - любой символ, |//| NULL - текущий символ) |//| op - торговая операция ( -1 - любая операция) |//| mn - MagicNumber ( -1 - любой магик) |//| lo - лот ( 0 - любой лот) |//+----------------------------------------------------------------------------+int GetTicketByLot( string sy= "" , int op=- 1 , int mn=- 1 , double lo= 0 ) {
int i, k= OrdersTotal (), t;
if (sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy== "" ) && (mn< 0 || OrderMagicNumber()==mn)) {
if ((op< 0 || OrderType()==op) && OrderType()< 6 ) {
if (lo== 0 || lo==NormalizeLot(OrderLots())) t=OrderTicket();
}
}
}
}
return (t);
}
not. GetTicketByLot() işlevini test etmek için bir komut dosyası ektedir.
Yeni özellikler ve her şeyin çok hızlı olduğu için çok teşekkür ederiz. Hepsi çok harika. işlev döner örneğin bilet dış değişkenler tarafından ayarlanabilen koşullara göre siparişler veya bunları kullanamazsınız. Bu satırı tam olarak anlamıyorum:
if ((op<0 || OrderType()==op) && (OrderType()>1 && OrderType()<6))
burada if ifadesinin durumunu kontrol ediyoruz, yani. harici değişken <0 ise, o zaman herhangi bir tür sipariş kullanılabilir VEYA fonksiyon çağrısında yazarsak, örneğin OP_BUY , o zaman seçim siparişlerden gelecek tip OP_BUY. Bu koşul açıktır, ancak daha sonra yazılan eşdeğer koşul gelir. && bunu söyleyen OrderType () bekleyen emirler aralığında yani 1'den 5'e kadar olmalıdır. OP_BUY tipimiz bu aralığa dahil değildir ve bu nedenle operatör koşulu yanlış olmalı ve kontrol geçmelidir. operatör if-else operatörünü takip ediyor, yani vücudun kıvrımlı okunun ötesinde bir yerde nerede olduğunu söylemek benim için zor. Bana öyle geliyor ki, piyasa emirlerinin işleyişi için bir koşul ve ayrı bir bekleyen siparişlerin aynı işlevi. Yani, piyasa emirlerinden bir seçim yapmak istiyorsam ve bunu bilmiyorsam kesin tip o zaman alırım harici değişken <0, ama ben 0'dan 1'e kadar olan koşulların belirtildiği fonksiyona atıfta bulunuyorum.Aynı durum bekleyen emirler için de geçerli. Yani, her sipariş türü kategorisi için, bunu kullanırken yararlı olduğu sonucuna vardım. işlevinizi kullanmanız için gereken koşullar.
Ayrıca kütüphaneleri bağlamakla ilgili bir sorunum var. Aramayı denedim okudum ama yazdığım Expert Advisor'ı derlerken bağlantı hata veriyor. Henüz anlamaya vakit yok, hızlı bir şekilde karlı bir Expert Advisor yazmak istiyorum, bu yüzden gerekli tüm üç kütüphaneyi kopyaladım ve özel start() işlevinden sonra yapıştırdım ve global değişkenlerini global değişkenlere taşıdım. Uzman Danışman ve onlara bağlantıları yorumladı. Çok uygun değil, ama işe yarıyor.
if ((op<0 || OrderType()==op) && (OrderType()>1 && OrderType()<6))
Sayesinde! Düzeltildi... Bunlar kopyala-yapıştır, yani sadece limit ve stop emirleri ile çalışmak üzere tasarlanmış başka bir fonksiyonun boş kullanılmasının sonuçlarıdır.
00007 :
Ayrıca kütüphaneleri bağlamakla ilgili bir sorunum var. Aramayı denedim okudum ama yazdığım Expert Advisor'ı derlerken bağlantı hata veriyor. Henüz anlamaya vakit yok, hızlı bir şekilde karlı bir Expert Advisor yazmak istiyorum, bu yüzden gerekli tüm üç kütüphaneyi kopyalayıp özel start() işlevinden sonra yapıştırdım ve global değişkenlerini global değişkenlere taşıdım. Uzman Danışman ve onlara bağlantıları yorumladı. Çok uygun değil, ama işe yarıyor.
Bu arada, kütüphanelerimi MQH dosyaları biçiminde kullanmıyorum. Genelde ihtiyaç duyduğum fonksiyonları Expert Advisor'a kopyalarım, yani her zamanki hazır Expert Advisor'ım bir MQ4 dosyasıdır. İhtiyacınız olan her şey bu dosyanın içinde. Evet, kod tekrarlanabilirliği var. Ancak işlevlerin sürümlerinde sorun yoktur.
Bu arada, her işlev için testler için komut dosyalarınız olduğunu ve işlevle birlikte danışmanınıza ekleyebileceğiniz tüm gerekli ek işlevlere sahip olduklarını zaten fark ettim ve her şey tek bir dosyada olacak ve başka bir şey olmayacak. İşlevlerin basit ve kullanışlı olduğu ortaya çıktı, ancak izninizle kendim için dört tane yapacağım: ikisi erteleme ve ikisi pozisyonlar için. Danışmanımın ince ihtiyaçları için daha evrensel olacaklar. Ama şimdi bunun ne kadar kolay yapılabileceğini görüyorum. Igor'a çok teşekkür ederim.
Bu fonksiyon, ilk açık pozisyonun açılış zamanını döndürür. Dikkate alınacak pozisyonların 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 değeri, 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.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 25.01.2012 |//| Описание : Возвращает время открытия первой открытой позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+datetime TimeOpenFirstPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
datetime t= TimeCurrent ();
int i, k= OrdersTotal ();
if (sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy== "" ) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op< 0 || OrderType()==op) {
if (mn< 0 || OrderMagicNumber()==mn) {
if (t>OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
return (t);
}
Merhaba Andrey!
Merhaba Andrey!
GetOpenPriceByLot() işlevi.
Bu fonksiyon, lot büyüklüğüne göre bir pozisyonun veya emrin açılış fiyatını döndürür. Dikkate alınacak pozisyonların seçimi harici parametreler tarafından belirlenir:
GetTicketByLot() işlevi.
Bu fonksiyon, lot büyüklüğüne göre bir pozisyon veya sipariş bileti döndürür. Dikkate alınacak pozisyonların seçimi harici parametreler tarafından belirlenir:
not. GetTicketByLot() işlevini test etmek için bir komut dosyası ektedir.
Merhaba Igor!
Yeni özellikler ve her şeyin çok hızlı olduğu için çok teşekkür ederiz. Hepsi çok harika. işlev döner örneğin bilet dış değişkenler tarafından ayarlanabilen koşullara göre siparişler veya bunları kullanamazsınız. Bu satırı tam olarak anlamıyorum:
if ((op<0 || OrderType()==op) && (OrderType()>1 && OrderType()<6))
burada if ifadesinin durumunu kontrol ediyoruz, yani. harici değişken <0 ise, o zaman herhangi bir tür sipariş kullanılabilir VEYA fonksiyon çağrısında yazarsak, örneğin OP_BUY , o zaman seçim siparişlerden gelecek tip OP_BUY. Bu koşul açıktır, ancak daha sonra yazılan eşdeğer koşul gelir. && bunu söyleyen OrderType () bekleyen emirler aralığında yani 1'den 5'e kadar olmalıdır. OP_BUY tipimiz bu aralığa dahil değildir ve bu nedenle operatör koşulu yanlış olmalı ve kontrol geçmelidir. operatör if-else operatörünü takip ediyor, yani vücudun kıvrımlı okunun ötesinde bir yerde nerede olduğunu söylemek benim için zor. Bana öyle geliyor ki, piyasa emirlerinin işleyişi için bir koşul ve ayrı bir bekleyen siparişlerin aynı işlevi. Yani, piyasa emirlerinden bir seçim yapmak istiyorsam ve bunu bilmiyorsam kesin tip o zaman alırım harici değişken <0, ama ben 0'dan 1'e kadar olan koşulların belirtildiği fonksiyona atıfta bulunuyorum.Aynı durum bekleyen emirler için de geçerli. Yani, her sipariş türü kategorisi için, bunu kullanırken yararlı olduğu sonucuna vardım. işlevinizi kullanmanız için gereken koşullar.
Ayrıca kütüphaneleri bağlamakla ilgili bir sorunum var. Aramayı denedim okudum ama yazdığım Expert Advisor'ı derlerken bağlantı hata veriyor. Henüz anlamaya vakit yok, hızlı bir şekilde karlı bir Expert Advisor yazmak istiyorum, bu yüzden gerekli tüm üç kütüphaneyi kopyaladım ve özel start() işlevinden sonra yapıştırdım ve global değişkenlerini global değişkenlere taşıdım. Uzman Danışman ve onlara bağlantıları yorumladı. Çok uygun değil, ama işe yarıyor.Bu satırı tam olarak anlamıyorum:
if ((op<0 || OrderType()==op) && (OrderType()>1 && OrderType()<6))
Sayesinde! Düzeltildi... Bunlar kopyala-yapıştır, yani sadece limit ve stop emirleri ile çalışmak üzere tasarlanmış başka bir fonksiyonun boş kullanılmasının sonuçlarıdır.
Ayrıca kütüphaneleri bağlamakla ilgili bir sorunum var. Aramayı denedim okudum ama yazdığım Expert Advisor'ı derlerken bağlantı hata veriyor. Henüz anlamaya vakit yok, hızlı bir şekilde karlı bir Expert Advisor yazmak istiyorum, bu yüzden gerekli tüm üç kütüphaneyi kopyalayıp özel start() işlevinden sonra yapıştırdım ve global değişkenlerini global değişkenlere taşıdım. Uzman Danışman ve onlara bağlantıları yorumladı. Çok uygun değil, ama işe yarıyor.
Bu arada, kütüphanelerimi MQH dosyaları biçiminde kullanmıyorum. Genelde ihtiyaç duyduğum fonksiyonları Expert Advisor'a kopyalarım, yani her zamanki hazır Expert Advisor'ım bir MQ4 dosyasıdır. İhtiyacınız olan her şey bu dosyanın içinde. Evet, kod tekrarlanabilirliği var. Ancak işlevlerin sürümlerinde sorun yoktur.
Bu arada, her işlev için testler için komut dosyalarınız olduğunu ve işlevle birlikte danışmanınıza ekleyebileceğiniz tüm gerekli ek işlevlere sahip olduklarını zaten fark ettim ve her şey tek bir dosyada olacak ve başka bir şey olmayacak. İşlevlerin basit ve kullanışlı olduğu ortaya çıktı, ancak izninizle kendim için dört tane yapacağım: ikisi erteleme ve ikisi pozisyonlar için. Danışmanımın ince ihtiyaçları için daha evrensel olacaklar. Ama şimdi bunun ne kadar kolay yapılabileceğini görüyorum. Igor'a çok teşekkür ederim.
Saygılarımla, Andrew.
TimeOpenFirstPos() işlevi.
Bu fonksiyon, ilk açık pozisyonun açılış zamanını döndürür. Dikkate alınacak pozisyonların seçimi harici parametreler tarafından belirlenir:
Merhaba
SetRegression() ( https://www.mql5.com/en/forum/107476/page35 ) kanalınıza fibu nasıl eklenir.
Merhaba
SetRegression() ( https://www.mql5.com/en/forum/107476/page35 ) kanalınıza fibu nasıl eklenir.
Evet, kolay: