Kodlama yardımı - sayfa 188

 

merhaba mladen veya herhangi biri,

mt4 platformunun bazı varsayılan göstergelere sahip olduğunu fark ettim (bazıları özel göstergeler bölümünde tekrar etse de), ancak sanırım kod tam olarak aynı değil, bu varsayılan göstergelerin kodunu nasıl alacağım veya göreceğim, beni bilgilendirdiğiniz için çok teşekkürler .

 
kenwa:
merhaba mladen veya herhangi biri, mt4 platformunun bazı varsayılan göstergelere sahip olduğunu fark ettim (bazıları özel göstergeler bölümünde tekrar etse de), ancak sanırım kod tam olarak aynı değil, bu varsayılan göstergelerin kodunu nasıl alabilirim veya görebilirim, teşekkürler beni bilgilendirmek için çok

Yapamazsın

Bunlar yerleşik göstergedir (doğrudan terminal tarafından yürütülür)

 

yerleşik göstergeler, işlevdeki özel gösterge oturumundakilerden daha iyi görünüyor, gerçekten bunların kodunu bilmenin bir yolu yok mu?

 

Biri bana tek bir dosyadan çoklu zaman çerçevesini nasıl kullandığımı sordu (yerleşik işlevleri çağırmak mümkün olmadığında)

İşte basit bir örnek ve içindeki bazı açıklamalar

______________________________

Ekli gösterge bir arada 3 gösterge gibi davranır ve kodda ne ve ne zaman yapıldığına dair yorumları bulacaksınız. Umarım bu, bazı kişilerin tek bir dosya doğru çoklu zaman çerçevesi göstergesinin nasıl yapılabileceğini netleştirmelerine yardımcı olur (bu, diğer şeylerin yanı sıra, hedef zaman çerçevesinde kaç çubuğun değiştirildiğini varsaymadan her zaman doğru çubuk sayısını hesaplayacaktır).

Böylece bu basit tek dosyalı çoklu zaman çerçevesi göstergesi, çoklu zaman çerçevesi göstergeleri için bir şablon olarak kolayca kullanılabilir.

Dosyalar:
 

merhaba mladen,

bunun mümkün olduğunu ve iStochasticOnArray'in nasıl yapıldığını biliyor musunuz? Bunu yapmak için herhangi bir şablon veya formül var mı? bilgilendirme için teşekkürler.

 
kenwa:
merhaba mladen, bunun mümkün olduğunu ve iStochasticOnArray'in nasıl yapıldığını biliyor musunuz? Bunu yapmak için herhangi bir şablon veya formül var mı? bilgilendirme için teşekkürler.

kenva

Yerleşik işlev diye bir şey yoktur. Bu gönderilerde, bunu yapmak için bir fonksiyonun nasıl yazılabileceğini ve nasıl kullanılabileceğini görebilirsiniz: https://www.mql5.com/en/forum/177239/page34

 

merhaba mladen:

benim için biraz derin

egdouble iStoch(double priceR, double fiyatH, double fiyatL, int dönem, int yavaşlama, int i, int örnekNo=0) double içinde ikiye katlanıyor mu? bu yöntem mq4 içinde işgal edilen indeks arabelleğini azaltabilir mi?

işlevi bana biraz garip geldi:

stok = iStoch(rsi,rsi,rsi,StoPeriod,StoSlowing,i);

bazı açıklığa kavuşturmak için teşekkürler.

 
mladen:
Diğer wav dosyasını neden kabul etmediğini bilmiyorum

Kodda değiştirdiyseniz, kabul etmesi gerekir.

5 kez tekrarlamak için bir döngüye yerleştirmelisiniz, ancak bu bazı sorunlara neden olabilir (ses dosyası çok uzunsa)

İşte kullandığım kod (döngülerin nasıl yapıldığını bilmek için kodlama hakkında çok az şey biliyorum):

//+------------------------------------------- ------------------

#özellik telif hakkı "https://www.forex-tsd.com"

#özellik bağlantısı "https://www.forex-tsd.com"

#özellik göstergesi_chart_window

//------------------------------------------------ -----------------

extern int alertsForNotOlderThan = 300;

harici int alertsForMagicNumber = 0;

harici dize uyarılarıForSymbol = "";

extern bool alertsOn = true;

harici bool uyarılarıSound = true;

harici bool uyarılarıMesaj = true;

harici bool uyarılarıBildirim = yanlış;

harici bool uyarılarıEmail = false;

//------------------------------------------------ -------

//

//------------------------------------------------ -------

//

//

//

//

//

int biletler[];

bool uyarıldı[];

dizi sembolleri[];

int türleri[];

int zamanlar[];

int init() { dönüş (0); }

int deinit() { dönüş (0); }

int başlangıç()

{

//

//

// siparişler için veri topla

//

//

for (int i=OrdersTotal()-1; i>=0; i--)

{

(!OrderSelect(i,SELECT_BY_POS)) devam ederse;

if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) devam ediyor;

if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) devam ediyor;

(alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())) devam ederse;

//

//

//

//

//

for (int k=ArraySize(bilet); k>0; k--)

if (OrderTicket()==tickets[k-1]) break;

eğer (k==0)

{

int size = ArraySize(bilet)+1;

ArrayResize(biletler,boyut); biletler = OrderTicket();

ArrayResize(uyarıldı,boyut); uyarıldı = yanlış;

ArrayResize(semboller,boyut); semboller = OrderSymbol();

ArrayResize(türler, boyut); türler = OrderType();

ArrayResize(kez ,boyut); kez = OrderOpenTime();

}

}

//

//

// bazı siparişlerin uyarılması gerekip gerekmediğini kontrol edin

//

//

for (i=ArraySize(bilet)-1; i>=0; i--)

{

dizi türü = "";

eğer (!uyarılırsa)

{

uyarılmış = doğru;

geçiş (türler)

{

durum OP_BUY : type = "satın al"; kırmak;

case OP_SELL : type = "sat"; kırmak;

case OP_BUYSTOP : type = "satın alma durdurma"; kırmak;

case OP_BUYLIMIT : type = "satın alma limiti"; kırmak;

case OP_SELLSTOP : type = "satış durdurma"; kırmak;

case OP_SELLLIMIT : type = "satış limiti"; kırmak;

}

doAlert(type+" şu saatte açıldı: "+symbols için "+TimeToStr(times,TIME_DATE|TIME_SECONDS)+");

}

}

dönüş(0);

}

//------------------------------------------------ -------

//

//------------------------------------------------ -------

//

//

//

//

//

void doAlert(dize doWhat)

{

dize mesajı;

mesaj = doWhat;

if (alertsMessage) Alert(mesaj);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," sipariş uyarıları "),message);

if (alertsNotification) SendNotification ("uyarıları sipariş et "+mesaj);

if (alertsSound) PlaySound("hallelujah.wav");

}

ancak tetiklendiğinde normal uyarıyı çalar.

Düşünce: PlaySound'un değişmesini sağlayamazsam, her 1 saniyede bir 10 kez kısa bir normal uyarıyı tekrarlayacak bir döngüde kod yazabilir misiniz? - en azından bu beni uyandırmak için tek bir normal uyarı sesinden çok daha fazlasını yapardı. . . .

Teşekkür ederim

 
person77:
İşte kullandığım kod (döngülerin nasıl yapıldığını bilmek için kodlama hakkında çok az şey biliyorum):

//+------------------------------------------- ------------------

#özellik telif hakkı "https://www.forex-tsd.com"

#özellik bağlantısı "https://www.forex-tsd.com"

#özellik göstergesi_chart_window

//------------------------------------------------ -----------------

extern int alertsForNotOlderThan = 300;

harici int alertsForMagicNumber = 0;

harici dize uyarılarıForSymbol = "";

extern bool alertsOn = true;

harici bool uyarılarıSound = true;

harici bool uyarılarıMesaj = true;

harici bool uyarılarıBildirim = yanlış;

harici bool uyarılarıEmail = false;

//------------------------------------------------ -------

//

//------------------------------------------------ -------

//

//

//

//

//

int biletler[];

bool uyarıldı[];

dizi sembolleri[];

int türleri[];

int zamanlar[];

int init() { dönüş (0); }

int deinit() { dönüş (0); }

int başlangıç()

{

//

//

// siparişler için veri topla

//

//

for (int i=OrdersTotal()-1; i>=0; i--)

{

(!OrderSelect(i,SELECT_BY_POS)) devam ederse;

if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) devam ediyor;

if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) devam ediyor;

(alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())) devam ederse;

//

//

//

//

//

for (int k=ArraySize(bilet); k>0; k--)

if (OrderTicket()==tickets[k-1]) break;

eğer (k==0)

{

int size = ArraySize(bilet)+1;

ArrayResize(biletler,boyut); biletler = OrderTicket();

ArrayResize(uyarıldı,boyut); uyarıldı = yanlış;

ArrayResize(semboller,boyut); semboller = OrderSymbol();

ArrayResize(türler, boyut); türler = OrderType();

ArrayResize(kez ,boyut); kez = OrderOpenTime();

}

}

//

//

// bazı siparişlerin uyarılması gerekip gerekmediğini kontrol edin

//

//

for (i=ArraySize(bilet)-1; i>=0; i--)

{

dizi türü = "";

eğer (!uyarılırsa)

{

uyarılmış = doğru;

geçiş (türler)

{

durum OP_BUY : type = "satın al"; kırmak;

case OP_SELL : type = "sat"; kırmak;

case OP_BUYSTOP : type = "satın alma durdurma"; kırmak;

case OP_BUYLIMIT : type = "satın alma limiti"; kırmak;

case OP_SELLSTOP : type = "satış durdurma"; kırmak;

case OP_SELLLIMIT : type = "satış limiti"; kırmak;

}

doAlert(type+" şu saatte açıldı: "+symbols için "+TimeToStr(times,TIME_DATE|TIME_SECONDS)+");

}

}

dönüş(0);

}

//------------------------------------------------ -------

//

//------------------------------------------------ -------

//

//

//

//

//

void doAlert(dize doWhat)

{

dize mesajı;

mesaj = doWhat;

if (alertsMessage) Alert(mesaj);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," sipariş uyarıları "),message);

if (alertsNotification) SendNotification("uyarıları sipariş et"+mesaj);

if (alertsSound) PlaySound("hallelujah.wav");

}

ancak tetiklendiğinde normal uyarıyı çalar.

Düşünce: PlaySound'un değişmesini sağlayamazsam, her 1 saniyede bir 10 kez kısa bir normal uyarıyı tekrarlayacak bir döngüde kod yazabilir misiniz? - en azından bu beni uyandırmak için tek bir normal uyarı sesinden çok daha fazlasını yapardı. . . .

Teşekkür ederim

kişi77,

Bunun için eskiden işe yarayan şey, açık bir grafiğe gitmek, ardından araçlara/seçeneklere/olaylara gitmek ve ardından alarm durumunda wav'ı değiştirmek. istediğinize, ancak bunu bir süredir yapmadıysanız, bunun hala çalışıp çalışmadığından emin değilsiniz ve kullandığınız wav dosyasının sesler klasöründe olduğundan emin olun.

Dosyalar:
alert.png  99 kb
 

mrtools - teşekkür ederim: bu harika çalıştı!