xrust писал (а)>> Başka bir soru, standart hale getirmek için işlevlerimde kullandığınızla aynı sözdizimini ve değişken adlarını kullanmamın sakıncası var mı?
Bu işlev, OBJ_LABEL nesnesini geçerli grafikte bir metin etiketine ayarlar.
nm - Nesnenin adı. Gerekli parametre.
tx - Metin. Gerekli parametre.
cl - Etiket rengi. Gerekli parametre.
xd - Bağlantı açısına göre piksel cinsinden X koordinatı. Gerekli parametre.
yd - Bağlantı açısına göre piksel cinsinden Y koordinatı. Gerekli parametre.
cr - Ankraj açısı numarası. Geçerli değerler: 0 - sol üst, 1 - sağ üst, 2 - sol alt, 3 - sağ alt. Varsayılan değer 0'dır .
fs - Yazı tipi boyutu. Varsayılan değer 9'dur .
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка текстовой метки, объект OBJ_LABEL. |//+----------------------------------------------------------------------------+//| Параметры: |//| nm - наименование объекта |//| tx - текст |//| cl - цвет метки |//| xd - координата X в пикселах |//| yd - координата Y в пикселах |//| cr - номер угла привязки (0 - левый верхний, |//| 1 - правый верхний, |//| 2 - левый нижний, |//| 3 - правый нижний ) |//| fs - размер шрифта (9 - по умолчанию ) |//+----------------------------------------------------------------------------+voidSetLabel(stringnm, stringtx, colorcl, intxd, intyd, intcr=0, intfs=9){if(ObjectFind(nm)<0)ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER , cr);
ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
Bir "include" dosyası (mqh) oluşturun (muhtemelen 2 - "ticaret" ve "diğer"), adı üzerinde anlaşın ve "geliştiricileri" bunu dağıtıma dahil etmeye zorlayın.
Düşünce öldürülemez, işler uzun süredir pekiştirilmeye doğru gidiyor. Profesyonel olmayan biri olarak hayalim, sıradan kullanıcıyı yalnızca karar vermesi için bırakmak ve onu yazılım inceliklerinden kurtarmaktır.
Igor'un gelişmeleri (tutarlılık ve ayrıntı açısından şaşırtıcı) buna mümkün olduğunca yaklaştı. Üstelik yazar sadece programlar değil, aynı zamanda sürekli olarak
kodun pratik değerini çoğaltan gerçek danışmanlar.
Igor'un geliştirmelerinin mqh tasarımı olasılığı, böyle bir uygulamanın avantajları ve dezavantajları hakkında fikrini duymak isterim.
granit77 писал (а)>> Igor'un geliştirmelerinin mqh tasarımı olasılığı, böyle bir uygulamanın avantajları ve dezavantajları hakkında fikrini duymak isterim.
doğru fırsatlar...
MQH-dosyaları benim için uzun zamandır yapılıyor... Henüz göndermiyorum... Kolumdaki bir as gibi... Son akor şöyle olacak... Tüm fonksiyonları yazacağım ve özetleyeceğim mqh dosyalarını yükleyerek.
harika dastoinstva ve nidastatki ...
MQH dosyaları kullanışlıdır. Farklı Uzman Danışmanlarda kullanılabilir. Belirli bir danışmanın kodu önemli ölçüde azalır. Geriye kalan tek şey kutsal mantık ve başka bir şey ve tüm çanlar, ıslıklar ve ambalajlar dışarıda yatıyor.
Ancak nadiren mqh dosyalarını kullanırım ve çoğunlukla sadece bir tane. Bu stdlib.mqh'dir. Ve gerekli tüm işlevleri danışmanın dosyasına kopyalayıp yapıştırın. Benim için daha rahat. Bu alışkanlığı, sipariş vermek için çok şey yazdığımda edindim ve genellikle müşteriye şu veya bu mqh dosyasını göndermeyi unuttum. Ve bir Expert Advisor dosyasını terminallerin farklı klasörlerine kopyalamak ve bir sürü eklentiyi arkasına sürüklememek benim için daha uygun.
Bu fonksiyon iki doğrunun kesiştiği noktanın koordinatlarını hesaplar. Her çizgi, noktalarının bir çift koordinatıyla tanımlanır. İşleve parametre olarak üç dizi iletilir:
x - Bir dizi apsis. Dört öğe içermelidir: x[0] , x[1] - ilk satırın apsisi, x[2] , x[3] - ikinci satırın apsisi.
y - Bir dizi koordinat. Dört öğe içermelidir: y[0] , y[1] - ilk satırın koordinatları, y[0] , y[1] - ikinci satırın koordinatları.
t - İki çizginin gerekli kesişme noktasının bir koordinat dizisi. İşlevin normal yürütülmesinden sonra, bu dizi iki öğe içerecektir: t[0] - iki çizginin istenen kesişme noktasının apsisi ve t[1] - aynı noktanın ordinatı.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Вычисляет координаты точки пересечения двух прямых. |//| Каждая прямая задаётся парой координат своих точек. |//+----------------------------------------------------------------------------+//| Параметры: |//| x - массив абсцисс x[0], x[1] - первая прямая |//| x[2], x[3] - вторая прямая |//| y - массив ординат y[0], y[1] - первая прямая |//| y[0], y[1] - вторая прямая |//| t - массив искомых координат t[0] - абсцисса |//| t[1] - ордината |//+----------------------------------------------------------------------------+voidCrossPointOfLines(double& x[], double& y[], double& t[]){doublez=(y[3]-y[2])*(x[1]-x[0])-(y[1]-y[0])*(x[3]-x[2]);
ArrayResize(t, 2);
ArrayInitialize(t, 0.0);
if(z==0)Print("CrossPointOfLines(): Не удалось найти точку пересечения!");
else{doublexy1=x[1]*y[0]-x[0]*y[1];
doublexy2=x[3]*y[2]-x[2]*y[3];
t[0]=NormalizeDouble((xy1*(x[3]-x[2])-xy2*(x[1]-x[0]))/z, 0);
t[1]=(xy1*(y[3]-y[2])-xy2*(y[1]-y[0]))/z;
}}
CrossPointOfLines() işlevinin kullanımına bir örnek.
CrossPointOfLines() işlevini kullanmanın bir örneği olarak, geleneksel olarak kendi betiğimi sunuyorum (eke bakın). Komut dosyasının doğru çalışması için, geçerli grafikte aşağıdaki türlerden herhangi birinde kesişen iki çizgi çizmeniz gerekir: dikey, yatay, eğilim. Ve sonra grafiğe bir komut dosyası ekleyin. Komut dosyasının sonucu, iki düz çizginin kesişme noktasında sol fiyat işareti olacaktır.
not. Ekli, CrossPointOfLines() işlevini test etmek için bir komut dosyasıdır.
Bu işlev, OBJ_REGRESSION nesnesini geçerli çizelgede doğrusal regresyon kanalına ayarlar.
cl - Nesnenin rengi. Gerekli parametre.
nm - Nesnenin adı. Varsayılan değeri - "" geçerken ad olarak mevcut çubuğun açılış zamanı kullanılır.
t1 - Nesnenin kurulum süresinin ilk koordinatı. Varsayılan değer 0 - onuncu çubuğun açılma zamanı.
t2 - Nesnenin kurulum süresinin ikinci koordinatı. Varsayılan değer 0'dır - mevcut çubuğun açılma zamanı.
ry - RAY özelliğinin bayrağı. Varsayılan değer False'dır .
st - Çizgi stili. Geçerli değerler STYLE_SOLID (varsayılan), STYLE_DASH , STYLE_DOT , STYLE_DASHDOT , STYLE_DASHDOTDOT .
wd - Çizgi kalınlığı. Varsayılan değer 1'dir .
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка объекта OBJ_REGRESSION канал линейной регрессии. |//+----------------------------------------------------------------------------+//| Параметры: |//| cl - цвет линии |//| nm - наименование ( "" - время открытия текущего бара) |//| t1 - время открытия бара ( 0 - Time[10]) |//| t2 - время открытия бара ( 0 - Time[0]) |//| ry - луч (False - по умолчанию) |//| st - стиль линии ( 0 - простая линия) |//| wd - ширина линии ( 1 - по умолчанию) |//+----------------------------------------------------------------------------+voidSetRegression(colorcl, stringnm="", datetimet1=0, datetimet2=0,
boolry=False, intst=STYLE_SOLID, intwd=1){if(nm=="")nm=DoubleToStr(Time[0], 0);
if(t1<=0)t1=Time[10];
if(t2<=0)t2=Time[0];
if(ObjectFind(nm)<0)ObjectCreate(nm, OBJ_REGRESSION, 0, 0,0, 0,0);
ObjectSet(nm, OBJPROP_TIME1, t1);
ObjectSet(nm, OBJPROP_TIME2, t2);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_RAY , ry);
ObjectSet(nm, OBJPROP_STYLE, st);
ObjectSet(nm, OBJPROP_WIDTH, wd);
}
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Başka bir soru, standart hale getirmek için işlevlerimde kullandığınızla aynı sözdizimini ve değişken adlarını kullanmamın sakıncası var mı?
Doğru olduğunu düşündüğün şeyi yap.
SetLabel() işlevi.
Bu işlev, OBJ_LABEL nesnesini geçerli grafikte bir metin etiketine ayarlar.
SetLabel() işlevini kullanma örnekleri.
not. Ekli, SetLabel() işlevini test etmek için bir komut dosyasıdır.
Bir "include" dosyası (mqh) oluşturun (muhtemelen 2 - "ticaret" ve "diğer"), adı üzerinde anlaşın ve "geliştiricileri" bunu dağıtıma dahil etmeye zorlayın.
Düşünce öldürülemez, işler uzun süredir pekiştirilmeye doğru gidiyor. Profesyonel olmayan biri olarak hayalim, sıradan kullanıcıyı yalnızca karar vermesi için bırakmak ve onu yazılım inceliklerinden kurtarmaktır.
Igor'un gelişmeleri (tutarlılık ve ayrıntı açısından şaşırtıcı) buna mümkün olduğunca yaklaştı. Üstelik yazar sadece programlar değil, aynı zamanda sürekli olarak
kodun pratik değerini çoğaltan gerçek danışmanlar.
Igor'un geliştirmelerinin mqh tasarımı olasılığı, böyle bir uygulamanın avantajları ve dezavantajları hakkında fikrini duymak isterim.
Igor'un geliştirmelerinin mqh tasarımı olasılığı, böyle bir uygulamanın avantajları ve dezavantajları hakkında fikrini duymak isterim.
doğru fırsatlar...
MQH-dosyaları benim için uzun zamandır yapılıyor... Henüz göndermiyorum... Kolumdaki bir as gibi... Son akor şöyle olacak... Tüm fonksiyonları yazacağım ve özetleyeceğim mqh dosyalarını yükleyerek.
harika dastoinstva ve nidastatki ...
MQH dosyaları kullanışlıdır. Farklı Uzman Danışmanlarda kullanılabilir. Belirli bir danışmanın kodu önemli ölçüde azalır. Geriye kalan tek şey kutsal mantık ve başka bir şey ve tüm çanlar, ıslıklar ve ambalajlar dışarıda yatıyor.
Ancak nadiren mqh dosyalarını kullanırım ve çoğunlukla sadece bir tane. Bu stdlib.mqh'dir. Ve gerekli tüm işlevleri danışmanın dosyasına kopyalayıp yapıştırın. Benim için daha rahat. Bu alışkanlığı, sipariş vermek için çok şey yazdığımda edindim ve genellikle müşteriye şu veya bu mqh dosyasını göndermeyi unuttum. Ve bir Expert Advisor dosyasını terminallerin farklı klasörlerine kopyalamak ve bir sürü eklentiyi arkasına sürüklememek benim için daha uygun.
Belki faydalı işlevlerde, http://www.kroufr.ru/content/view/1027/124/ makalesinde açıklanan siparişleri açabilecek bir komut dosyasına sahipsiniz.
El ile çok zaman alır. Değilse, lütfen nerede bulacağınızı bildirin. Teşekkürler. .
CrossPointOfLines() işlevi.
Bu fonksiyon iki doğrunun kesiştiği noktanın koordinatlarını hesaplar. Her çizgi, noktalarının bir çift koordinatıyla tanımlanır. İşleve parametre olarak üç dizi iletilir:
CrossPointOfLines() işlevinin kullanımına bir örnek.
CrossPointOfLines() işlevini kullanmanın bir örneği olarak, geleneksel olarak kendi betiğimi sunuyorum (eke bakın). Komut dosyasının doğru çalışması için, geçerli grafikte aşağıdaki türlerden herhangi birinde kesişen iki çizgi çizmeniz gerekir: dikey, yatay, eğilim. Ve sonra grafiğe bir komut dosyası ekleyin. Komut dosyasının sonucu, iki düz çizginin kesişme noktasında sol fiyat işareti olacaktır.
not. Ekli, CrossPointOfLines() işlevini test etmek için bir komut dosyasıdır.
SetRegression() işlevi.
Bu işlev, OBJ_REGRESSION nesnesini geçerli çizelgede doğrusal regresyon kanalına ayarlar.