KimIV'ten faydalı özellikler - sayfa 84

 
vopros писал(а) >>

Igor, merhaba!

Lütfen bana mevcut bir göstergeye sesli bir bildirimin nasıl uygulanacağını söyleyin.

Örneğin ZigZag'da. Film müziğinin yeni bir çizgi çizme anında olması için nereye ve nasıl yazılabilir:

//| ZIG-ZAG_RPoint_v2_m.mq4 |https://www.mql5.com/en/code/8739
//| Telif Hakkı © 2004-2008, Poul_Trade_Forum | RPoint gösterge kodunu yeniden yazdı. 'RPnoktası'
//| Aborigen ve Kharko |
//| http://forex.kbpauk.ru/ |KALİTE ZIGZAG
//+------------------------------------------- --------------------+

 

Beyler, programcılar, lütfen Kim'in göstergesinden bir Uzman Danışman (makul bir fiyata) yapın.

Ayrıntılar postayla

Vladimir

vladmo@mail.ru

//+------------------------------------------- --------------------+
//| i-MorningRange.mq4 |
//| Kim Igor V. namı diğer KimIV |
//| http://www.kimiv.ru |
//| |
//| 02/08/2006 Sabah menzil göstergesi. |
//+------------------------------------------- --------------------+
#özellik telif hakkı "Kim Igor V. aka KimIV"
#özellik bağlantısı " http://www.kimiv.ru "

#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 2
#özellik göstergesi_color1 Mavi
#özellik göstergesi_renk2 Turuncu

//------- Göstergenin harici parametreleri ----------------------------------
dış dize CheckTime = "08:00"; // Aralık kontrol zamanı
extern bool ShowHistory = True; // Geçmiş seviyeleri göster
harici intGün Sayısı = 5; // Tarihteki gün sayısı
extern bool ShowComment = Doğru; // Yorumları göster

//------- Gösterge arabellekleri --------------------------------- ---
çift dBuf0[], dBuf1[];

//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
geçersiz init() {
SetIndexArrow(0, 217);
SetIndexBuffer(0, dBuf0);
SetIndexStyle(0, DRAW_OK, 1, 2);
SetIndexArrow(1, 218);
SetIndexBuffer(1, dBuf1);
SetIndexStyle(1, DRAW_OK, 1, 2);

DeleteLines();
for (int i=0; i<2; i++) {
ObjectCreate("HLine"+i, OBJ_HLINE, 0, 0,0);
}

for (i=0; i<Gün Sayısı; i++) {
CreateLines("upLine"+i, gösterge_renk1);
CreateLines("dnLine"+i, gösterge_renk2);
}
}

//+------------------------------------------- --------------------+
//| Nesnelerin yaratılması Geçmiş günlerin çizgisi |
//| Seçenekler: |
//| satırsız isim |
//| cl - çizgi rengi |
//+------------------------------------------- --------------------+
void CreateLines(dize no, renk cl) {
ObjectCreate(hayır, OBJ_TREND, 0, 0.0, 0.0);
ObjectSet(hayır, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(hayır, OBJPROP_WIDTH, 1);
ObjectSet(no, OBJPROP_COLOR, cl);
ObjectSet(hayır, OBJPROP_RAY, Yanlış);
}

//+------------------------------------------- --------------------+
//| özel gösterge sıfırlama işlevi |
//+------------------------------------------- --------------------+
geçersiz tanım() {
DeleteLines();
Yorum("");
}

//+------------------------------------------- --------------------+
//| Yatay çizgilerin kaldırılması. |
//+------------------------------------------- --------------------+
geçersiz DeleteLine() {
for (int i=0; i<2; i++) {
ObjectDelete("HLine"+i);
}

for (i=0; i<Gün Sayısı; i++) {
ObjectDelete("upline"+i);
ObjectDelete("dnline"+i);
}
}

//+------------------------------------------- --------------------+
//| özel gösterge yineleme işlevi |
//+------------------------------------------- --------------------+
geçersiz başlangıç() {
tarihsaat t1, t2, dt;
çift p1, p2;
int b1, b2, sd=0;

t1=StrToTime(TimeToStr(CurTime(), TIME_DATE)+" 00:00");
t2=StrToTime(TimeToStr(CurTime(), TIME_DATE)+" "+CheckTime);
b1=iBarShift(NULL, 0, t1);
b2=iBarShift(NULL, 0, t2);
p1=Yüksek[En Yüksek(NULL, 0, MODE_HIGH, b1-b2+1, b2)];
p2=Düşük [En Düşük (NULL, 0, MODE_LOW, b1-b2+1, b2)];

SetHLine(0, p1);
SetHLine(1, p2);

if (ShowHistory) {
dt=decDateTradeDay(CurTime());
for (int i=0; i<NumberOfDays; i++) {
DrawLines(dt, i);
dt=decDateTradeDay(dt);
while (TimeDayOfWeek(dt)<1 ||TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt);
}
}

if (ShowComment) Comment("CheckTime="+CheckTime);
}

//+------------------------------------------- --------------------+
//| Geçerli günün yatay çizgisinin ayrıntılarını ayarlar. |
//+------------------------------------------- --------------------+
void SetHLine(int nl, double pp) {
renk cl;

if (sf!=BOŞ_DEĞER) {
anahtar(nl) {
durum 0: cl=gösterge_renk1; kırmak;
durum 1: cl=gösterge_renk2; kırmak;
}
ObjectSet("HLine"+nl, OBJPROP_COLOR, cl);
ObjectSet("HLine"+nl, OBJPROP_PRICE1, s);
ObjectSet("HLine"+nl, OBJPROP_STYLE, STYLE_DOT);
}
}

//+------------------------------------------- --------------------+
//| Grafikte çizgiler çizme |
//| Seçenekler: |
//| dt - işlem günü tarihi |
//| nd - gün numarası (nesne numaralandırma için) |
//+------------------------------------------- --------------------+
void DrawLines(datetime dt, int nd) {
tarihsaat t1, t2;
çift p1, p2;
int b1, b2;

t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 00:00");
t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+CheckTime);
b1=iBarShift(NULL, 0, t1);
b2=iBarShift(NULL, 0, t2);
p1=Yüksek[En Yüksek(NULL, 0, MODE_HIGH, b1-b2+1, b2)];
p2=Düşük [En Düşük (NULL, 0, MODE_LOW, b1-b2+1, b2)];

ObjectSet("upLine"+nd, OBJPROP_TIME1, t1);
ObjectSet("upLine"+nd, OBJPROP_PRICE1, s1);
ObjectSet("upLine"+nd, OBJPROP_TIME2, t2);
ObjectSet("upLine"+nd, OBJPROP_PRICE2, p1);

ObjectSet("dnLine"+nd, OBJPROP_TIME1, t1);
ObjectSet("dnLine"+nd, OBJPROP_PRICE1, s2);
ObjectSet("dnLine"+nd, OBJPROP_TIME2, t2);
ObjectSet("dnLine"+nd, OBJPROP_PRICE2, p2);
}

//+------------------------------------------- --------------------+
//| Tarihi bir işlem günü azaltmak |
//| Seçenekler: |
//| dt - işlem günü tarihi |
//+------------------------------------------- --------------------+
tarihsaat decDateTradeDay(tarihsaat dt) {
intty=ZamanYıl(dt);
int tm=ZamanAy(dt);
int td=ZamanGünü(dt);
intth=ZamanSaati(dt);
intti=ZamanDakika(dt);

td--;
if (td==0) {
tm--;
if (tm==0) {
ty--;
tm=12;
}
if (tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12) td=31;
if (tm==2) if (MathMod(ty, 4)==0) td=29; başka td=28;
if (tm==4 || tm==6 || tm==9 || tm==11) td=30;
}
return(StrToTime(ty+"."+tm+"."+td+" "+th+":"+ti));
}
//+------------------------------------------- --------------------+

 
Igor, merhaba! İki Expert Advisor (Uzman1 ve Uzman2) vardır.Uzman1'in her yeni satırdan veri yazan bir dosyası vardır. Expert2, dosyadaki maksimum değerle karşılaştırılması gereken bir değere sahiptir. Lütfen bu maksimum sayıyı çıkarmama yardım edin.
 
Milka писал(а) >>
Igor, merhaba! İki Expert Advisor (Uzman1 ve Uzman2) vardır.Uzman1'in her yeni satırdan veri yazan bir dosyası vardır. Expert2, dosyadaki maksimum değerle karşılaştırılması gereken bir değere sahiptir. Lütfen bu maksimum sayıyı çıkarmama yardım edin.

Expert 2'de, tüm sayıları bir diziye yükleyin ve ardından ArrayMaximum() işlevini kullanın.

 
KimIV >> :

Expert 2'de, tüm sayıları bir diziye yükleyin ve ardından ArrayMaximum() işlevini kullanın.

Bir diziye veri yükleyemiyorum

 
Milka писал(а) >>

Bir diziye veri yükleyemiyorum

Dizilerle çalışma işlevlerim için bu konuya bakın. Örneklerde, diziler verilerle doldurulmalıdır.

 

Igor, merhaba!

Bir grafik üzerinde bir çizgi oluştururken (örneğin - ObjectCreate (tLine,OBJ_TREND,0,Time[3],Low[3],Time[1],Low[1]) ), platform sonsuz uzunlukta bir ışın çizer, ama ders kitabı diyor ki - HAT! OBJ_TREND'i istenen uzunlukta bir segmente nasıl çevireceğimi bulamıyorum. Tüm ışınları manuel olarak dönüştürmek veya hile yapmak (üçgen gibi çizmek) - durum böyle değil gibi görünüyor. Söylemek...

 
alexpert007 писал(а) >>

Igor, merhaba!

Bir grafik üzerinde bir çizgi oluştururken (örneğin - ObjectCreate (tLine,OBJ_TREND,0,Time[3],Low[3],Time[1],Low[1]) ), platform sonsuz uzunlukta bir ışın çizer, ve ders kitabı diyor ki - HAT! OBJ_TREND'i istenen uzunlukta bir segmente nasıl çevireceğimi bulamıyorum. Tüm ışınları manuel olarak dönüştürmek veya hile yapmak (üçgen gibi çizmek) - durum böyle değil gibi görünüyor. Söylemek...

ObjectSet'i kullanın (tLine, OBJPROP_RAY, False).

 

Merhaba Igor,

Pozisyonların kısmen kapatılması konusu, özellikle yanlışlıkla 131 (s. 49-50 avt. 6232) zaten gündeme getirildi. Kısmi kapanma bir sorun değil, ancak günlükteki 131 hatası ahlaki olarak bir danışman yazmaya devam etmenize izin vermiyor. Bunu kullanarak, "Bir pozisyonun kısmen kapatılması için hazır bir fonksiyon var mı" başlığında "Bir pozisyonun üçte birini kapatma" fonksiyonunuza bir bağlantı buldum, ancak burada, bu başlıkta, ikisini de bulamadım bu fonksiyon ya da yazarın 6232 sorusuna cevabınız. Sorunun çözümüne kısmen yardımcı oldu cevabı (s. 50). Günlük bir hata vermeyi bıraktı, ancak bir yan etki ortaya çıktı - ilk açık konum gerektiği gibi kapatılmadı.

Karşılaştırma için, ilk kapanış tablosu "olması gerektiği gibi", ancak 131 hatası sürekli olarak ortaya çıkıyor:

ve hatasız, ancak ilk (ve nedense yalnızca ilk) açık pozisyonun yanlış kapanması ile bir grafik:

 

Kapanış kodu şöyle görünüyordu:

Dosyalar:
codv1.mq4  8 kb
Neden: