Yardım: EA neden bir takası kapatmıyor? - sayfa 2

 
crossy :


teşekkürler onewithzachy,

Öncelikle şu konuda küçük bir hatanız olduğunu düşünüyorum:

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

Yeşil ve kalın düzeltmeyi eklemelisiniz.

Ancak, aşağıdaki satırın bize nasıl yardımcı olabileceğini anlamıyorum?

#include "..\libraries\stdlib.mq4"

Teşekkürler, Y.

Ancak sayım konusunda haklısınız, yazdığım gibi yazarsak OrderSelect() false döndürür ve for döngüsü bir sonraki sayıma devam eder.

Bu içerme, bu koddaki hatayı yazdıracaktır ...

 Print ( "failed to close buy position " , ErrorDescription( GetLastError ())  ); 

.. EA'nızın neden hiçbir siparişi kapatmadığını anlamamız için :(.

Bunun gibi olanları da yazabilirsiniz...

 #include <stdlib.mqh>

Trade.mq4 başlıklı MetaEditor script klasöründe örnek var.


Eklemeyi nereye koyacağını bildiğini sanıyordum, değil mi? EA'nızın üstüne koyun (tıpkı global değişken gibi veya tıpkı trade.mq4 gibi).

stdlib.mq4, MetaEditor > Gezgin Penceresi (Ctrl + D) > dosyalar sekmesi > kitaplıklar klasörü > stdlib.mq4 konumunda bulunur.

Vay canına, umarım sakıncası yoktur, oraya ayrıntıya girdim, çünkü zaten biliyor musun bilmiyor musun bilmiyorum :)

 
onewithzachy :

Ancak sayım konusunda haklısınız, yazdığım gibi yazarsak OrderSelect() false döndürür ve for döngüsü bir sonraki sayıma devam eder.

Bu içerme, bu koddaki hatayı yazdıracaktır ...

.. EA'nızın neden hiçbir siparişi kapatmadığını anlamamız için :(.

Bunun gibi olanları da yazabilirsiniz...

Trade.mq4 başlıklı MetaEditor script klasöründe örnek var.


Eklemeyi nereye koyacağını bildiğini sanıyordum, değil mi? EA'nızın üstüne koyun (tıpkı global değişken gibi veya tıpkı trade.mq4 gibi).

stdlib.mq4, MetaEditor > Gezgin Penceresi (Ctrl + D) > dosyalar sekmesi > kitaplıklar klasörü > stdlib.mq4 konumunda bulunur.

Vay canına, umarım sakıncası yoktur, oraya ayrıntıya girdim, çünkü zaten biliyor musun bilmiyor musun bilmiyorum :)


teşekkürler onewithzachy,

Önerdiğiniz gibi yaptım ve doğru durumu bekliyorum. Güncelleyeceğim.

 
crossy :


teşekkürler onewithzachy,

Önerdiğiniz gibi yaptım ve doğru durumu bekliyorum. Güncelleyeceğim.

Mmm...., Geri testin büyük bir hayranı değilim, ancak, RaptorUK diğer başlıkta ( buraya tıklayın ) geriye dönük test kullanarak kodumuzun hatalarını ayıklayabileceğimizi önermektedir.
 
onewithzachy :
Mmm...., Geri testin büyük bir hayranı değilim, ancak, RaptorUK diğer başlıkta ( buraya tıklayın ) geriye dönük test kullanarak kodumuzun hatalarını ayıklayabileceğimizi önermektedir.


EA çok çiftlidir, bu nedenle geriye dönük test yapmak imkansızdır.

Her neyse, ilgili durumu çok hızlı bir şekilde anlayabilirim. Bir zaten sonuçlarım var. Güncelleyeceğim..

teşekkürler

 
crossy :


EA çok çiftlidir, bu nedenle geriye dönük test yapmak imkansızdır.

Geri test değil. . hata ayıklama. . . portföy tabanlı bir EA ile bile hata ayıklama hala mümkün olabilir.
 

Teşekkürler Raptor,

ORDERSELECT'in bir bool değişkeni olduğunu ve bazen MT4'ün başarılı olmadığını fark ettim.

yapmak için. Bu nedenle onewithzachy şunları yapmasını tavsiye etti:

for ( int cnt= 0 ; cnt< Sipariş Toplamı (); cnt++)
{
if ( OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES) == doğru &&
OrderSymbol ()==Eşleştir &&
Sipariş Türü ()== OP_BUY )
{
// kapatılacak kod
}
}

Sorum şu: ORDERSELECT yanlışsa, "cnt" LOOP'u kaçırmadan nasıl tekrar yapabilirim ...?

Umarım beni anlıyorsun.

Y.

 
crossy :

Teşekkürler Raptor,

ORDERSELECT'in bir bool değişkeni olduğunu ve bazen MT4'ün başarılı olmadığını fark ettim.

yapmak için. Bu nedenle onewithzachy şunları yapmasını tavsiye etti:

for ( int cnt= 0 ; cnt< OrdersTotal (); cnt++ )

Sorum şu: ORDERSELECT yanlışsa, "cnt" LOOP'u kaçırmadan nasıl tekrar yapabilirim ...?

Umarım beni anlıyorsun.

Y.

Emirleri kapatıyorsanız, geri saymanız GEREKİR . . . yukarı DEĞİL .
 
RaptorUK :
Emirleri kapatıyorsanız, geri saymanız GEREKİR . . . yukarı DEĞİL .


Üzgünüm Raptor, bir önceki gönderiden bir Copy_paste yaptım, ancak kodumda değiştirdim.

Her neyse, ön sorum hakkında bir fikriniz var mı?

 
crossy :


Üzgünüm Raptor, bir önceki gönderiden bir Copy_paste yaptım, ancak kodumda değiştirdim.

Her neyse, ön sorum hakkında bir fikriniz var mı?

Kodunuzu gösterin ve bir fikir verebilirim.
 
RaptorUK :
Kodunuzu gösterin ve bir fikir verebilirim.


Rap, 4016 kod satırıdır....

Neyse, sorum teknik bir soru. FORTRAN'ı bir kez öğrendim, ve orada istediğiniz kod satırları için numaralar vardı,

"120'ye gidin" ve kod tekrar o satıra gitti.

Burada Orderselect YANLIŞ ise, EA kod satırına nasıl geri dönebilir: for(int cnt=OrdersTotal() ; cnt > 0; cnt-- )

???

Neden: