OrderClose çalışmıyor - sayfa 3

 

Teşekkürler thrdel, kodlamana bakacağım. Gerçekten çok naziksin. Tekrar teşekkürler

 
thrdel :


Bunun bir emri kapatmanın en iyi yolu olmadığını söylüyorsanız, katılıyorum, ancak adam OrderSelect'i kullanmak istemiyorsa (veya nasıl olduğunu bilmiyorsa) ve piyasada herhangi bir açık emir bırakmıyorsa çalışır.

Burada birbirimize yardım etmeye çalışıyoruz ve cevabınız biraz yardımcı olmadı, ona Order Select işlevini nasıl kullanacağını göstermediniz ve yorumunuz nedeniyle EA'sı şimdi daha iyi çalışmıyor.

Bir daha yardım etmek istediğinde, doğru şekilde yap, oraya doğru kodu koy ki başkaları gerçekten bir şeyler öğrenebilsin.

 
Soruma mesaj yazan herkese teşekkürler. Niyetim bar2 belirli koşulları sağladığında ticarete girmek. GBPJPY üzerinde test yapıyorum ve MQL4'te çok yeni olduğum için her seferinde bir işlem açıyorum. Sadece bir ticaretle, Orderclose()'da bileti kullanabiliyorum. OrderSelect'e hala aşina değilim. Yani bar3 belirli bir koşulu karşılarsa ticaret kapanacak. Herhangi bir soru sormak istiyorum, programın yürütülmesini hata ayıklama amacıyla bir dosyada saklamanın bir yolu var mı? Program yürütüldüğünde, yürütmenin hangi bölümünün yanlış gittiğini bilmiyorum.
 
chuale :
Soruma mesaj yazan herkese teşekkürler. Niyetim bar2 belirli koşulları sağladığında ticarete girmek. GBPJPY üzerinde test yapıyorum ve MQL4'te çok yeni olduğum için her seferinde bir işlem açıyorum. Sadece bir ticaretle, Orderclose()'da bileti kullanabiliyorum. OrderSelect'e hala aşina değilim. Yani bar3 belirli bir koşulu karşılarsa ticaret kapanacak. Herhangi bir soru sormak istiyorum, programın yürütülmesini hata ayıklama amacıyla bir dosyada saklamanın bir yolu var mı? Program yürütüldüğünde, yürütmenin hangi bölümünün yanlış gittiğini bilmiyorum.

Rica ederim Chuale, ben de bu forumdaki diğer insanlardan çok şey öğrendim, bu yüzden sorun değil. Programın yürütülmesini bir dosyaya kaydetmenize gerçekten gerek yok, değişken değerlerinizi ve ortaya çıkabilecek hataları izlemenin birkaç yolu var. Çoğunlukla Comment() işlevini ve Print() işlevini kullanıyorum. Dilerseniz örnekler gönderebilirim. Daha önce de belirttiğim gibi GBPJPY bana olumlu sonuçlar vermedi ama USDJPY verdi. Sadece bir ay boyunca (21 Ocak 2014 - 25 Şubat 2015) bir geri test yaptım ve ayarlarım ile getiri 400 USD'nin biraz üzerindeydi. Biraz zamanım olur olmaz diğer çiftleri de deneyeceğim ve size haber vereceğim. Ayrıca, değerleri ekranda gerçek zamanlı olarak görmek için Print() veya Comment()'in nasıl kullanılacağı konusunda yardıma ihtiyacınız olursa, bana bildirin. Daha önce eklenen resim, bir aylık dönemdeki EA performans grafiğinizdi. Şimdiye kadar kötü görünmüyor.
 

sevgili thedel,

Teşekkür ederim

Evet, Print() kullanıyorum. Daha fazla açık işlem varsa, OrderSelect()'i nasıl kullanacağımı bilmem gerekiyor. Tek bir işlem için, SELECT_BY_POS kullanırsam, indeksin değeri ne olur (OrderSelect (int index, in select, int pool=MODE_TRADES)? 1 mi?

veya hangi değer?

 
chuale :
Soruma mesaj yazan herkese teşekkürler. Niyetim bar2 belirli koşulları sağladığında ticarete girmek. GBPJPY üzerinde test yapıyorum ve MQL4'te çok yeni olduğum için her seferinde bir işlem açıyorum. Sadece bir ticaretle, Orderclose()'da bileti kullanabiliyorum. OrderSelect'e hala aşina değilim. Yani bar3 belirli bir koşulu karşılarsa ticaret kapanacak. Herhangi bir soru sormak istiyorum, programın yürütülmesini hata ayıklama amacıyla bir dosyada saklamanın bir yolu var mı? Program yürütüldüğünde, yürütmenin hangi bölümünün yanlış gittiğini bilmiyorum.


Burada, Order Select fonksiyonunun nasıl kullanılacağına dair bir örnek verilmiştir:

Bu örnekte, CountTrades işlevi tüm açık ve bekleyen emirleri kontrol eder, eşleşen sembolü ve sihirli numarası olmayanları atar ve yalnızca ihtiyacımız olanları sayar.

Bu örnekte en yeni olandan birinciye doğru seçim yapacaktır.

Bununla ilgili daha fazla yardıma ihtiyacınız olursa bana bildirin.

 //+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
/*
On every tick program checks what the value of myTrades is
by calling (executing) the CountTrades() function and asign the value
returned to myTrades..
*/
int myTrades = CountTrades();
/*
Comment() function will display the words in quotes and the value of 
myTrades variable.
*/
Comment ( "You have " +myTrades+ " open trades." );
   
  }
//+------------------------------------------------------------------+
int CountTrades()
{
int count= 0 ; // we start counting from zero
int trade;   // define a variable that will hold the total number of trades that are open
// Get the number of trades from OrdersTotal() and asign that value to trade variable.
for (trade= OrdersTotal ()- 1 ;trade>= 0 ;trade--)
   {
   OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ); // Select orders by position (OP_BUY and OP_SELL) - orders can be selected by position or by ticket
                                                 // select from Open or pending orders = MODE_TRADES or select from History = MODE_HISTORY
   if ( OrderSymbol ()!= Symbol () || OrderMagicNumber () != MagicNumber) // if the order has a different symbol or magic number, skip to next order
   continue ;
   if ( OrderSymbol ()== Symbol () && OrderMagicNumber () == MagicNumber) // if symbol is right and magic number is right, that is my order ,then
   if ( OrderType ()== OP_SELL                                          // if it's an open sell do this.....
   || OrderType ()== OP_BUY )                                         // if it's an open buy do this......      
   count++;                                                         // in this example increase the counter since I'm counting all my orders
   }
return (count);                                                     // When finished counting, return the result
}
 
thrdel :


Bunun bir emri kapatmanın en iyi yolu olmadığını söylüyorsanız, katılıyorum, ancak adam OrderSelect'i kullanmak istemiyorsa (veya nasıl olduğunu bilmiyorsa) ve piyasada herhangi bir açık emir bırakmıyorsa çalışır.

Burada birbirimize yardım etmeye çalışıyoruz ve cevabınız biraz yardımcı olmadı, ona Order Select işlevini nasıl kullanacağını göstermediniz ve yorumunuz nedeniyle EA'sı şimdi daha iyi çalışmıyor.

Bir daha yardım etmek istediğinde, doğru şekilde yap, oraya doğru kodu koy ki başkaları gerçekten bir şeyler öğrenebilsin.


yardım etmeye çalışırsan doğru açıkla

dedin

thrdel :

Önce OrdersTotal() ile siparişleri sayarsınız.

total= OrdersTotal ();


kötü örnek...... verdin

adam OrderSelect() kullanmak istemiyorsa, EA'ları programlamayı bırakması gerekir.

burada söyledikleriniz büyük saçmalık, https://www.mql5.com/en/forum/149958/page2#915413

örnek kodunu yorumladım ve sana ne yapman gerektiğini söyledim

nasıl yapılacağına dair verdiğim çok örnek var...

onları bulmak istiyorsanız bunun için google

 
thrdel :


Yanlış yaptığın birkaç şey var. Bu EA'nın M1 zaman diliminde JPY çiftleri üzerinde çalışmasını istediğinizi varsayıyorum. Yalnızca yeni çubukta sipariş vermek ve yalnızca yeni çubukta siparişleri kapatmak mı yoksa yeni çubuktan giriş yapıp koşullar sağlandığında çıkmak mı istiyorsunuz? İşte düşündüğüm şey:

Önce OrdersTotal() ile siparişleri sayarsınız.

Ardından değişkenlerinizi hesaplayın

Piyasada emirler varsa, kapatılmaları gerekip gerekmediğini kontrol edin.

Piyasada emir yoksa, giriş koşullarının karşılanıp karşılanmadığını kontrol edin.

Herhangi bir sorunuz varsa bana bildirin.

 
aşağıdaki derlendiğinde: Zaman işlevinin tanımlanmadığını söyledi. Tavsiye lütfen.
 if ( Time [ 0 ]==previousTime) return ( 0 );         //EA will not go past this point unless it is a new bar
   previousTime= Time [ 0 ];                         // If it was a new bar , it's old now but continue to the end
 
chuale :
aşağıdaki derlendiğinde: Zaman işlevinin tanımlanmadığını söyledi. Tavsiye lütfen.


Tamam, Time'ın parantezini yanlış yazdığım için düzelttim, () yerine [] olması gerekiyor. teşekkürler