Sormak! - sayfa 176

 

Not: sadece hatırlatmak gerekirse - iCustom() çağrısındaki 3. parametre gösterge adıdır. İlk parametre semboldür ve 2. parametre istenen zaman çerçevesidir.

mladen:
Bunu şu şekilde yapın:
array[0]=iClose("EURUSD",0,0); [/PHP]

and so on. That way array will be filled with close prices for symbols you select. If you are using a custom indicator then the form is the following :

[PHP]array[0]=iCustom("EURUSD",0,"indicator name",0,0);
 

MLaden

Birkaç çift için bir döngüde icustom kullanarak özel bir gösterge arıyorum. Uzmanlar sekmesinde, göstergenin boşaldığını ve ardından bir sonraki çift için yeniden yüklendiğini görebiliyorum. Bu, iCustom çağrısının, her yüklendiğinde grafikteki tüm maksimum çubukların değerlerini yeniden hesapladığı anlamına mı geliyor? Ayrıca, Bar N için ve ardından Bar N+1 ayrı ardışık aramalar olarak ararsanız, ikinci arama tam bir yeniden hesaplama gerektiriyor mu? Ve son olarak, ardışık çağrılar farklı arabellekler içinse, her biri yeniden hesaplanır mı?

Her iCustom çağrısının ayrı bir örnek oluşturduğunu söylediğinizi hatırlıyorum, bu yüzden benim varsayımım, her birinin kendi bütünlüğü içinde yeniden hesaplanmasıdır.

cevap için teşekkürler

Tzuman

 

Tzuman,

Metatrader, her yeni parametre değeri grubu için yeni bir gösterge örneği oluşturur ( arabellek numarası ve dizin istisnadır).

Bir örnek - aşağıdaki iki arama :

iCustom(NULL,0,"ad",1,0,0);

iCustom(NULL,0,"ad",2,0,0);

bir göstergenin iki örneğini yaratacaktır (örneğin 1 ve 2 yerine "n" kullansanız ve iCustom()'a yeni bir çağrıdan önce n'ye farklı değerler atasanız bile, ayrı örnekler yaratacaktır. Bu nedenle bazı uyarlanabilir göstergeler iCustom() kullanılarak yazılamaz, ancak bir işlev biçiminde yapılmalıdır)

Şimdi bu örneklerle ilgili. Ancak gösterge yüklenir ve ardından boşaltılırsa, bu genellikle parametrelerle ilgili bir sorundur (boşaltma kısmı genellikle bunu gösterir). Parametre türleri eşleşmiyorsa, "yükleme - boşaltma" dublörünü yapacaktır. iCustom'a iletilen bazı parametrelerin yanlışlıkla beklenen türde olup olmadığını kontrol edin (veya bazı parametreler yanlışlıkla atlanır ve bu, parametre türlerinin karışmasına neden olabilir).

Tzuman:
MLaden

Birkaç çift için bir döngüde icustom kullanarak özel bir gösterge arıyorum. Uzmanlar sekmesinde, göstergenin boşaltıldığını ve ardından bir sonraki çift için yeniden yüklendiğini görebiliyorum. Bu, iCustom çağrısının, her yüklendiğinde grafikteki tüm maksimum çubukların değerlerini yeniden hesapladığı anlamına mı geliyor? Ayrıca, Bar N için ve ardından Bar N+1 ayrı ardışık aramalar olarak ararsanız, ikinci arama tam bir yeniden hesaplama gerektiriyor mu? Ve son olarak, ardışık çağrılar farklı arabellekler içinse, her biri yeniden hesaplanır mı?

Her iCustom çağrısının ayrı bir örnek oluşturduğunu söylediğinizi hatırlıyorum, bu yüzden benim varsayımım, her birinin kendi bütünlüğü içinde yeniden hesaplanmasıdır.

cevap için teşekkürler

Tzuman
 

Son tartışmalarınızı bölmek istemedim

lütfen bu yeni konuya bir göz atın

https://www.mql5.com/en/forum/182212

 

Gördüğüm gibi, mrtools zaten çözdü

MaaTini:
Son tartışmalarınızı bölmek istemedim

lütfen bu yeni konuya bir göz atın

https://www.mql5.com/en/forum/182212
 
mladen:
Tzuman,

Metatrader, her yeni parametre değeri grubu için yeni bir gösterge örneği oluşturur (arabellek numarası ve dizin istisnadır).

Bir örnek - aşağıdaki iki arama :

iCustom(NULL,0,"ad",1,0,0);

iCustom(NULL,0,"ad",2,0,0);

bir göstergenin iki örneğini yaratacaktır (örneğin 1 ve 2 yerine "n" kullansanız ve iCustom()'a yeni bir çağrıdan önce n'ye farklı değerler atasanız bile, ayrı örnekler yaratacaktır. Bu nedenle bazı uyarlanabilir göstergeler iCustom() kullanılarak yazılamaz, ancak bir işlev biçiminde yapılmalıdır)

Şimdi bu örneklerle ilgili. Ancak gösterge yüklenir ve ardından boşaltılırsa, bu genellikle parametrelerle ilgili bir sorundur (boşaltma kısmı genellikle bunu gösterir). Parametre türleri eşleşmiyorsa, "yükleme - boşaltma" dublörünü yapacaktır. iCustom'a iletilen bazı parametrelerin yanlışlıkla beklenen türde olup olmadığını kontrol edin (veya bazı parametreler yanlışlıkla atlanır ve bu, parametre türlerinin karışmasına neden olabilir).

Açıklama için çok teşekkürler. Yükleme/boşaltma işleminin Sembolün döngünün her yinelemesinde değişmesinden kaynaklandığını varsaydım, bu nedenle tüm yeni veri değerlerini yüklemek zorunda kaldı,

örneğin iCustom("EURUSD",0,"isim",1,0,0); & iCustom("GBPUSD",0,isim",1,0,0);

Parametreleri dikkatlice kontrol edeceğim ama bazı intihallerle kendi MA ortalama fonksiyonlarımı yazmaya devam ettim. Görev Yöneticisi'ndeki işlemci kullanımına bakınca işlemci kullanımım %90-95 azalmış gibi görünüyor. Mutluyum

 

merhaba guru im kodlamada acemi, "kazanç sağlandığında çoklu sipariş açmayı durdur" konusunda bana yardımcı olabilir misiniz, böyle bir kod deniyorum ama çalışmıyor. bana yardım edebilir misiniz, lütfen.

statik tarihsaat yakınT;

for ( int a=OrdersHistoryTotal()- 1 ; a>= 0 ; a--) { if ( OrderSelect (a,SELECT_BY_POS,MODE_HISTORY)== true ) { if (OrderMagicNumber()==magic && OrderSymbol()== symb && closeT<SiparişKapatTime()) { closeT=SiparişKapatTime(); if ((buy== true || sat== true ) && closeT==Zaman[ 0 ]){buy= false ; satmak= yanlış ;} } } }

 

teşekkür ederim mladen, kodunu deneyeceğim.

 
RBarias:
merhaba guru im kodlamada acemi, "kazanç sağlandığında çoklu sipariş açmayı durdur" konusunda bana yardımcı olabilir misiniz, böyle bir kod deniyorum ama çalışmıyor. bana yardım edebilir misiniz, lütfen.

statik tarihsaat yakınT;

for ( int a=OrdersHistoryTotal()- 1 ; a>= 0 ; a--) { if ( OrderSelect (a,SELECT_BY_POS,MODE_HISTORY)== true ) { if (OrderMagicNumber()==magic && OrderSymbol()== symb && closeT<SiparişKapatTime()) { closeT=SiparişKapatZamanı(); if ((buy== true || sat== true ) && closeT==Zaman[ 0 ]){buy= false ; satmak= yanlış ;} } } }

Bunun gibi bir şey deneyebilirsiniz (geçerli bir çubukta son kapatılan emrin kapanıp kapanmadığını ve bir kazanç elde edip etmediğini kontrol edecektir):

datetime closeT= 0;

int ticket=-1;

for(int a=OrdersHistoryTotal()-1; a>=0; a--)

{

if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY))

if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime())

{

closeT=OrderCloseTime();

ticket=OrderTicket();

}

}

if (ticket>-1)

{

OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(iBarShift(symb,0,closeT)==0 && OrderClosePrice()==OrderTakeProfit())

{

buy =false;

sell=false;

}

}
 

merhaba mladen,

Symbols.mq4 betiğiniz MT4 build 509'da mükemmel bir şekilde çalıştı, ancak build 636'da (symbols.raw'ı açarken) bir dosya hatası veriyor.

MT4 build 636 için güncellenmiş bir sürüm paylaşır mısınız?

Şimdiden çok teşekkür ederim.

Saygılarımızla,

Timo.

Neden: