Nasıl kodlanır? - sayfa 67

 

tezgah?

Aylardır o kadar çok gösterge programlıyorum ki uzmanlar konusunda biraz yetersizim ama bunu çözmeye niyetliyim. Bu arada biraz yardıma ihtiyacım var. Bir araya getirdiğim uzmanımda, ticareti kapatmayı garanti edecek bir durum olup olmadığını barın kapanışında kontrol ettirdim.

Global bir değişkenle başlıyorum,

//--- Global variable

datetime PreviousBar; // record candle/bar time[/CODE]

and set one bool in init()

int init()

{

do_this = true;

}

[/CODE]

blah blah boring stuff.... etc, etc

then in the main loop I have:

[CODE]

if(do_this == true)

{

PreviousBar = Time[0];

do_this= false; // so it does this only once only

}

if(NewBar() == true)

{

if(TotalOpenOrders() == blah blah close my order you crazy monkey)

}

and outside the main loop I have:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}

Tamam, her çubuk için bir kez yapılacak şekilde ayarlanmıştır. Yapmak istediğim şey, 90 saniyeyi veya 60 saniyeyi ya da her neyse artan bir fonksiyona sahip olmak, sonra o süreyi artırdıktan sonra bir bool değerini true olarak ayarlamak. Temel olarak göstergeleri her 60, 90, 120 saniyede bir veya barın kapanması yerine her neyse kontrol etmek istiyorum. Bunu nasıl yaparım?

Herhangi bir yardım için teşekkürler,

- nittany1

 
nittany1:
Aylardır o kadar çok gösterge programlıyorum ki uzmanlar konusunda biraz yetersizim ama bunu çözmeye niyetliyim. Bu arada biraz yardıma ihtiyacım var. Bir araya getirdiğim uzmanımda, ticareti kapatmayı garanti edecek bir durum olup olmadığını barın kapanışında kontrol ettirdim.

Global bir değişkenle başlıyorum,

//--- Global variable

datetime PreviousBar; // record candle/bar time[/CODE]

and set one bool in init()

int init()

{

do_this = true;

}

[/CODE]

blah blah boring stuff.... etc, etc

then in the main loop I have:

[CODE]

if(do_this == true)

{

PreviousBar = Time[0];

do_this= false; // so it does this only once only

}

if(NewBar() == true)

{

if(TotalOpenOrders() == blah blah close my order you crazy monkey)

}

and outside the main loop I have:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}

Tamam, bar başına bir kez yapılacak şekilde ayarlanmıştır. Yapmak istediğim şey, 90 saniyeyi veya 60 saniyeyi ya da her neyse artan bir fonksiyona sahip olmak, sonra o süreyi artırdıktan sonra bir bool değerini true olarak ayarlamak. Temel olarak göstergeleri her 60, 90, 120 saniyede bir veya barın kapanması yerine her neyse kontrol etmek istiyorum. Bunu nasıl yaparım?

Herhangi bir yardım için teşekkürler,

- nittany1

Bu yapmalı. MT'nin kene tabanlı yürütme kullandığını unutmayın, bu nedenle saniye başına doğruluk mümkün değildir (Init() alt öğesindeki her şeyi döngüye almadığınız sürece).

if (CallIndicatorsCheck())

{

// kodunuz burada

}

bool CallIndicatorsCheck()

{

statik tarihsaat Oldtime;

int Sn = 90;

bool Bayrak;

if (CurrTime() >= Eski Zaman) {

Oldtime = CurrTime() + Saniye;

İşaret = doğru; }

dönüş(Bayrak);

}

 

Yorum yerleştirme

Birisi bana varsayılan sol üst yerine ekranın SAĞ ÜST köşesine yorum yerleştirme kodunu gösterebilir mi?

Teşekkürler!

 
wolfe:
Birisi bana varsayılan sol üst yerine ekranın SAĞ ÜST köşesine yorum yerleştirme kodunu gösterebilir mi? Teşekkürler!

Yapamazsın. MQL4 kılavuzundan:

void Comment( ...)İşlev, kullanıcı tarafından tanımlanan yorumu grafiğin sol üst köşesinde verir.

Ölüme ihtiyacınız varsa, nesneler yaratabilirsiniz .

 
wolfe:
Birisi bana varsayılan sol üst yerine ekranın SAĞ ÜST köşesine yorum yerleştirme kodunu gösterebilir mi? Teşekkürler!

LinusGuy haklı; doğrudan bir yolu yok. Kolay geçici çözüm, Yorumunuzu boşluklarla doldurmaktır --

Yorum(" merhaba dünya!");

metni sağa kaydırır.

Sayfayı aşağı indirmek için satır beslemeleri de koyabilirsiniz.

Comment("\n\n\n\n\nmetniniz");

veya ekranın sağ alt köşesinde yazdırmak için satır beslemeleri ve boşlukları birleştirin.

mog

 
mog:
LinusGuy haklı; doğrudan bir yolu yok. Kolay geçici çözüm, Yorumunuzu boşluklarla doldurmaktır --

Yorum(" merhaba dünya!");

metni sağa kaydırır.

Sayfayı aşağı indirmek için satır beslemeleri de koyabilirsiniz.

Comment("\n\n\n\n\nmetniniz");

veya ekranın sağ alt köşesinde yazdırmak için satır beslemeleri ve boşlukları birleştirin.

mog

Yardım için teşekkürler. Deneyeceğim!

 

kaybedilen bir ticaretten sonra X çubukları için yeni ticaret yok

merhaba takım - birinin yardım edebileceğini umuyorum lütfen ..

Son ticaret bir kayıpsa, yeni bir ticaretin 10 bar için başlamasını nasıl durdurabilirim?

şerefe

 

Aşağıdaki işlev , hesap geçmişinde 10. önceki çubuğun açılışında veya sonrasında kapanan bir kayıp ticareti olduğunda (geçerli çubuk 0'dır) doğru dönecektir,

ve aksi takdirde false döndürün.

bool postMortem()

{

datetime since = Time[ bar+10 ];

for ( int i = OrdersHistoryTotal() - 1; i >= 0; i-- ) {

if ( ! OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )

continue;

if ( OrderProfit() = since )

return( true );

}

return( false );

}

[/PHP]

If you add that function to your EA, then include a statement like the following in the start() function, then Bob's your uncle.

[PHP]if ( postMortem() ) return( 0 );
 

bunun için çok teşekkür ederim - deneyeceğim

Saygılarımızla

 

arkadaşlar sizde de aynı sorun var mı?

Bir uzmanı kodladım. Fiyat, göstergeyle aynı olduğunda bir pozisyon açmak istiyorum. Bunu yapmak için aşağıdaki cümleyi kullanıyorum:

//satın almak

çift göstergegeçmiş = icustom(.....................,1);

çift göstergenow = icustom(.....................,0);

if (kapat[1]gösterge şimdi) OpenBUY();

if (kapat[1]>indicatorpast && kapat[0]<indicatornow) OpenSELL();

ancak bu satatment ile, uzman sadece fiyat göstergeyi geçtiğinde pozisyon açmakla kalmaz, aynı zamanda göstergenin üzerinde de pozisyon açar. SADECE göstergeyi geçtiğinde uzman açık pozisyonunun olmasını istiyorum, bu yüzden şunu denedim:

//satın almak

çift göstergegeçmiş = icustom(.....................,1);

çift göstergenow = icustom(.....................,0);

if (kapat[1]<indicatorpast && kapat[0] == göstergeşimdi) OpenBUY();

if (close[1]>indicatorpast && close[0] == göstergeşimdi) OpenSELL();

Ama bu açıklamayı gerçekleştirmiyor.

Ne olduğunu biliyor musun? Çünkü bence açıklamada hata yok.

Saygılarımızla.