Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bu EA için iCustom işleviyle ilgili Yardıma ihtiyacınız var, özel bir gösterge arayabilir.
Herkese selam,
Bu (Entry.mq4) indi'yi bu (swb grid 4.1.0.3_EA) EA'ya eklemek istiyorum.
iCustom işlevi böylece ben ve biz bu göstergeyi EA stratejisinde kullanabiliriz.
EA zaten 3 MT4 göstergesi Bollinger Bands , Stokastik ve RSI kullanıyor ve
DOĞRU veya YANLIŞ'ı seçerek bunlardan birini veya tümünü seçebilirsiniz.
ve bu 4. indi(Entry.mq4) EA'ya eklemek istiyorum.
Herhangi biri bana yardım edebilirse çok minnettar olurum.
teşekkür ederim.
EA ve indi ekli körük.
Bu diziyi anlamak için Noob MQL4 yardımı gerekli
Merhaba, kodlayıcılar
Biri beni diziler konusunda biraz eğitmek ister mi?
Ya da belki bu diziyle ilgili olduğu için bu döngüyü anlamakta daha fazla sorun yaşıyorum.
#property copyright "Unfinished POS by Agent86"
çift v1[];
çift v2[];
çift val1;
çift val2;
int başlangıç()
{
while(i>=0)
{
val1=iFractals(NULL, 0, MODE_UPPER,i);
eğer (val1 > 0)
{
v1=Yüksek;
}
başka
{
v1=v1;
}
val2=iFractals(NULL, 0, MODE_LOWER,i);
eğer (val2 > 0)
{
v2=Düşük;
}
başka v2=v2;
ben--;
}
dönüş(0);
}
Bu temel bir fraktal ve yine de dizideki herhangi bir öğeye atıfta bulunamıyorum.
Bir şekilde i++ ve Print (v1); veya 0 veya EMPTY_VALUE öncesindeki değeri yazdırın.
Bununla doğru yönde gidiyorsam bile.
Bir sıkıntım var.
Yazdır (v1): her zaman == 0 ve 0 yazdırır
Anlıyorum çünkü aslında -1'e dönüyor ki bu == 0
Neler olup bittiğini görebilmek için Print ifadelerini nasıl ve nereye koyabilirim?
Çok sayıda veya yöntem denedim ve v1 öğelerine başvurabilmem için döngüyü denemek ve değiştirmek için i=0'ı yeniden başlattım, ancak tüm girişimler başarısız oldu.
Temel olarak, bir ABCD şeması tipi EA'da gelecekteki olası kullanım için önceki fraktalları görüntülemek veya onları A yüksek, B düşük vb. olarak işaretlemek istiyorum.
Şimdilik, esas olarak v1'i yazdırmak istiyorum, böylece ne yaptığını görebiliyorum.
Belki A_high ve/veya B_low gibi bir Önceki Fraktal veya buna benzer bir şema seçmek için bir şeyler tasarlayabilirim.
Bu konuda yanlış yolda mıyım?
Tavsiye lütfen
teşekkürler
Bunun yerine A FOR döngüsüyle giderdim. Eğer i--'yi eklemeyi unutursanız, döngüler kilitlenmelere yol açabilir. Çubukların tam sayısını bildiğiniz için kullanımı daha kolaydır, ayrıca i asla < 0 olmayacaktır. Karışıklığı önlemeye yardımcı olur.
For (int i=Bars-1;i>0;i--) {
// kod
}
Tüm dizi değerlerini 0'a ayarlamayı deneyin, ardından geri dönün ve gösterge değerleri atayın. Ayrıca, gösterge değerinizi atadıktan hemen sonra bir print() deneyin. Gerçekten bir şey döndürüp döndürmediğine bakın.
En iyi bahsiniz, benim tahminime göre, diziye aslında bir boyut atamak. 1000 pozisyon diyelim. Bu kadar çok şeye ihtiyacınız olmayacak, ayrıca yaptığınız hesaplamaları azaltacaktır. O zaman tek yapmanız gereken son 999 çubuktan 0'a geçmek ve değerleri atamak. MT4'ün dizi başlatmalarla ilgili sorunları olduğunu hatırlıyor gibiyim.
Dizi Soruları
Bunun yerine A FOR döngüsüyle giderdim. İ--'yi eklemeyi unutursanız, döngüler kilitlenmelere yol açabilir. Çubukların tam sayısını bildiğiniz için kullanımı daha kolaydır, ayrıca i asla < 0 olmayacaktır. Karışıklığı önlemeye yardımcı olur.
For (int i=Bars-1;i>0;i--) {
// kod
}
Tüm dizi değerlerini 0'a ayarlamayı deneyin, ardından geri dönün ve gösterge değerleri atayın. Ayrıca, gösterge değerinizi atadıktan hemen sonra bir print() deneyin. Gerçekten bir şey döndürüp döndürmediğine bakın.
En iyi bahsiniz, benim tahminime göre, diziye aslında bir boyut atamak. 1000 pozisyon diyelim. Bu kadar çok şeye ihtiyacınız olmayacak, ayrıca yaptığınız hesaplamaları azaltacaktır. O zaman tek yapmanız gereken son 999 çubuktan 0'a geçmek ve değerleri atamak. MT4'ün dizi başlatmalarla ilgili sorunları olduğunu hatırlıyor gibiyim.Tamam, teşekkürler deneyeceğim.
while deyimleri iyi çalışıyor olsa da, yazdırmak/görüntülemek istediğim dizi öğelerini vb. almama yardımcı olmuyor.
Dedikleriniz üzerinde çalışacağım ve bazı testler yapacağım ve geri göndereceğim.
teşekkürler
Bunun yerine A FOR döngüsüyle giderdim. Eğer i--'yi eklemeyi unutursanız, döngüler kilitlenmelere yol açabilir. Çubukların tam sayısını bildiğiniz için kullanımı daha kolaydır, ayrıca i asla < 0 olmayacaktır. Karışıklığı önlemeye yardımcı olur.
For (int i=Bars-1;i>0;i--) {
// kod
}
Tüm dizi değerlerini 0'a ayarlamayı deneyin, ardından geri dönün ve gösterge değerleri atayın. Ayrıca, gösterge değerinizi atadıktan hemen sonra bir print() deneyin. Gerçekten bir şey döndürüp döndürmediğine bakın.
En iyi bahsiniz, benim tahminime göre, diziye aslında bir boyut atamak. 1000 pozisyon diyelim. Bu kadar çok şeye ihtiyacınız olmayacak, ayrıca yaptığınız hesaplamaları azaltacaktır. O zaman tek yapmanız gereken son 999 çubuktan 0'a geçmek ve değerleri atamak. MT4'ün dizi başlatmalarla ilgili sorunları olduğunu hatırlıyor gibiyim.Yine de diziyi tüm 0 girişleriyle birlikte yazdırın
Yabancı
Arjantin86,
Kodunuzda birkaç hata var:İşte bu sorunlar olmadan yapmaya çalıştığınız şey
MQ4'ten bir dll işlevine erişim: değişken argüman listeleri
merhaba,
Bunun mümkün olup olmadığını herkes bilir: a: değişken argüman listelerini argüman olarak kullanan bir dll fonksiyonunu içe aktarmak
örneğin vprintf - C++ Referansı
int vprintf ( const char * biçimi, va_list argümanı);
eğer öyleyse nasıl yapacak?
teşekkürler
MJ
Dönüş değeri olmayan işlev nasıl çağırılır
Merhaba Erkekler ve Kızlar.
Programımın bir noktasında bir fonksiyon çağırmak istiyorum.
Ancak işlevin dönüş değeri yoktur (void). Peki işlevi nasıl çağırırım,
bu yüzden fonksiyonun içindeki kodu tam olarak onu çağırdığım yerde yürütür,
sanki o yerin kendisinde yazılmış gibi mi?
Aşağıda bazı örnek kodlar yaptım .. bazı parametreleri kontrol ettiğim yerde ve Tamam ise, işlevi yürütmek istiyorum ...
Umarım birisi bana bu konuda yardımcı olabilir, şimdiden tx, Jonkie76
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int başlangıç()
{
//----
if (Fiyat >= PRICE_CLOSE)
çağrı işlevi; // Bu noktada fonksiyonu çağırmak istiyorum. Bunu nasıl yapabilirim?
başka
Alert("Hiçbir şey yapmayın"); //
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//============================================== ===================+
//FONKSİYONLAR
//============================================== ===================+
//----------------------- SİPARİŞ FONKSİYONUNU KAPAT ---------------------- +
geçersiz subCloseOrder()
{
int
ben,
toplam = 0,
bilet = 0,
hata = 0,
c = 0;
toplam = SiparişlerToplam();
for(i=toplam-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() &&
OrderMagicNumber()==Büyü)
{
geçiş(SiparişTürü())
{
durum OP_BUY :
for(c=0;c<NumberOfTries;c++)
{
bilet=OrderClose(OrderTicket(),OrderLots(),Teklif,Kayma,Violet);
err=GetLastError();
if(hata==0)
{
if(bilet>0) ara;
}
başka
{
if(err==0 || hata==4 || hata==136 || hata==137 || hata==138 || hata==146) //Meşgul hataları
{
Uyku(5000);
devam etmek;
}
başka //normal hata
{
if(bilet>0) ara;
}
}
}
kırmak;
}
}
}
}
Çok basit. Sadece bir şey döndüreceği için onu çağırmanız gerekiyor, sadece herhangi bir sonucu kaydetmenize gerek yok çünkü void türünde hiçbir sonuç yok. (hiçbir şey döndürmez) Bunun gibi:
int start()
{
//----
if (Price >= PRICE_CLOSE)
subCloseOrder(); // At this point I'd like to call the function.How do I do that?
else
Alert("Do nothing"); //
//----
return(0);
}
Bunun yerine "boşluk" kullanın. Bunun gibi :
{
...
//
//
// no need to place return at the end, but if you want then use "just" return, like this
//
//
return;
}Void, bir işlevden değer döndürmeyeceği anlamına gelir ve bu şekilde etkin bir şekilde bir işlev değil, bir prosedür haline gelir.
Merhaba Erkekler ve Kızlar.
Programımın bir noktasında bir fonksiyon çağırmak istiyorum.
Ancak işlevin dönüş değeri yoktur (void). Peki işlevi nasıl çağırırım,
bu yüzden fonksiyonun içindeki kodu tam olarak onu çağırdığım yerde yürütür,
sanki o yerin kendisinde yazılmış gibi mi?
Aşağıda bazı örnek kodlar yaptım .. bazı parametreleri kontrol ettiğim yerde ve Tamam ise, işlevi yürütmek istiyorum ...
Umarım birisi bana bu konuda yardımcı olabilir, şimdiden tx, Jonkie76
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int başlangıç()
{
//----
if (Fiyat >= PRICE_CLOSE)
çağrı işlevi; // Bu noktada fonksiyonu çağırmak istiyorum. Bunu nasıl yapabilirim?
başka
Alert("Hiçbir şey yapmayın"); //
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//============================================== ===================+
//FONKSİYONLAR
//============================================== ===================+
//----------------------- SİPARİŞ FONKSİYONUNU KAPAT ---------------------- +
geçersiz subCloseOrder()
{
int
ben,
toplam = 0,
bilet = 0,
hata = 0,
c = 0;
toplam = SiparişlerToplam();
for(i=toplam-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() &&
OrderMagicNumber()==Büyü)
{
geçiş(SiparişTürü())
{
durum OP_BUY :
for(c=0;c<NumberOfTries;c++)
{
bilet=OrderClose(OrderTicket(),OrderLots(),Teklif,Kayma,Violet);
err=GetLastError();
if(hata==0)
{
if(bilet>0) ara;
}
başka
{
if(err==0 || hata==4 || hata==136 || hata==137 || hata==138 || hata==146) //Meşgul hataları
{
Uyku(5000);
devam etmek;
}
başka //normal hata
{
if(bilet>0) ara;
}
}
}
kırmak;
}
}
}
}