MQL5 dilini sıfırdan kendi kendine öğrenme - sayfa 66

 
Valeriy Yastremskiy :

Döngü gövdesindeki döngü ifadesi ve ifadeler. Pek klasik Rusça değil.

Elbette her şey yolunda, ama döngü gövdesindeki i yineleyici nerede? Ve pozisyon sembolünü ve büyüsünü elde etmek için önce onu seçmelisiniz. Pozisyonun tanımı bir yapıdır (µl5'te tüm yapı ve siparişler ve zaman ve fırsatlar) ve seçim yoluyla doldurulur, pozisyon bileti değil, pozisyon numarası olan yineleyici tarafından seçilir. ve pozisyon tanımlama yapısında pozisyonun son seçiminin her zaman olduğu unutulmamalıdır.

Merhaba Valery! Açıklama için teşekkürler.

Bütün yanlış anlamam burada yatıyordu. for döngüsü operatörü olmadan, her şey çalıştı, ancak onunla, bir nedenden dolayı değil. Gerekli tüm istekleri öncelikle request yoluyla yapmanız gerektiğini doğru anladınız mı?

Saygılarımla, Vladimir.

 
MrBrooklin :

Merhaba Valery! Açıklama için teşekkürler.

Bütün yanlış anlamam burada yatıyordu. for döngüsü operatörü olmadan, her şey çalıştı, ancak onunla, bir nedenden dolayı değil. Öncelikle gerekli tüm istekleri istek yoluyla yapmanız gerektiğini doğru anladım mı?

Saygılarımla, Vladimir.

Hayır, MKL5'i tam olarak bilmiyorum. Bu bir yürütme isteğidir. Ve onunla daha fazla çalışmak için numaraya göre bir pozisyon seçmeniz gerekiyor.

KonumSeçimi

öyle düşünüyorum.

 
MrBrooklin :

Herkese iyi günler ve iyi bir ruh hali!

Sevgili uzmanlar! Lütfen bana söyleyin, ancak düzeltilmiş kodla değil, kelimelerle , aksi takdirde MQL5 programlama dilini asla öğrenemeyeceğim.

Saygılarımla, Vladimir.

Merhaba! Sözler; gerçek şu ki, açık pozisyonlar yineleme döngüsünü uyguladığınızda, bunu "if" koşullarında hiçbir şekilde belirtmediniz, yani for döngüsünün tam olarak neyi yinelediğini, ayrıca hiçbir şeyle tamamlamadınız, bir şeyi iade et...

Açık pozisyonların hesaplanması devam etmektedir ve döngülü bir blok oluşturmak ve açılırken buna erişmek daha iyidir, örneğin bunun gibi;

 input int MaxOpenedPositions= 1 ;
.
.
.
int Total=TotalPositions(- 1 );
if (Total<MaxOpenedPositions && другие условия для открытия) OpenBUY(); //например
if (Total<MaxOpenedPositions && другие условия для открытия) OpenSELL(); //например

//+------------------------------------------------------------------+
//| Total Positions                                                  |
//+------------------------------------------------------------------+
int TotalPositions( int Type)
   {
int cnt= 0 ;
if ( PositionsTotal ()> 0 )
for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--)
   
if ( PositionSelectByTicket ( PositionGetTicket (i)) && PositionGetString ( POSITION_SYMBOL )== _Symbol && PositionGetInteger ( POSITION_MAGIC )==MagicNumber) 
   {
   if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY ) {cnt++; continue ;}
   if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL ) {cnt++;}
   }
   return (cnt);
   }
 
Valeriy Yastremskiy :

Hayır, MKL5'i tam olarak bilmiyorum. Bu bir yürütme isteğidir. Ve onunla daha fazla çalışmak için numaraya göre bir pozisyon seçmeniz gerekiyor.

KonumSeçimi

öyle düşünüyorum.

PositionSelect dahil her şeyi denedim. Hiçbir şey yardımcı olmadı.

Saygılarımla, Vladimir.

 
VVT :

Merhaba! Sözler; gerçek şu ki, açık pozisyonlar yineleme döngüsünü uyguladığınızda, bunu "if" koşullarında hiçbir şekilde belirtmediniz, yani for döngüsünün tam olarak neyi yinelediğini, ayrıca hiçbir şeyle tamamlamadınız, bir şeyi iade et...

Açık pozisyonların hesaplanması devam etmektedir ve döngülü bir blok oluşturmak ve açılırken buna erişmek daha iyidir, örneğin bunun gibi;

Merhaba!

Bahşiş için teşekkürler. Bunu çözmeye ve açık pozisyonların numaralandırma versiyonunuzu uygulamaya çalışacağım.

Saygılarımla, Vladimir.

 
VVT :

Merhaba! Sözler; gerçek şu ki, açık pozisyonlar yineleme döngüsünü uyguladığınızda, bunu "if" koşullarında hiçbir şekilde belirtmediniz, yani for döngüsünün tam olarak neyi yinelediğini, ayrıca hiçbir şeyle tamamlamadınız, bir şeyi iade et...

Bu arada, MQL5 Reference, döngünün tamamlandıktan sonra bir şey döndürmesi gerektiği hakkında hiçbir şey söylemez. Belki yine bir şeyi yanlış anladım? Yoksa if deyimiyle mi ilgili?

Saygılarımla, Vladimir.

 
MrBrooklin :

PositionSelect dahil her şeyi denedim. Hiçbir şey yardımcı olmadı.

Saygılarımla, Vladimir.

Az önce fark ettim, evet, ağda pozisyon seçiminin sayıya göre değil, alete göre yapılması. Ah, akıllıca)

üzerinden olabilir

  • PositionGetTicket pozisyon numarasına göre bir pozisyon bileti döndürür (ve bir numaramız var) ve bir pozisyon bileti aldıktan sonra onun sembolünü ve büyüsünü alabiliriz.
Veya netleştirme ise, düşünün ve neden toplam emir veya pozisyon sayısına ihtiyacımız olduğuna karar verin, eğer bir enstrümanda sadece bir pozisyonumuz olabilirse ve bunu bilmemiz gerekiyor. Bu nedenle, döngü gerekli olmayabilir. Enstrümanımızda If PositionSelect False döndürürse bir pozisyon açarız ve True ise bu enstrümanda bir pozisyon seçilir ve onunla çalışabilir ve takip için değiştirebiliriz.
 
Valeriy Yastremskiy :

Az önce fark ettim, evet, ağda pozisyon seçiminin sayıya göre değil, alete göre yapılması. Ah, akıllıca)

geçebilir

  • PositionGetTicket pozisyon numarasına göre bir pozisyon bileti döndürür (ve bir numaramız var) ve bir pozisyon bileti aldıktan sonra onun sembolünü ve büyüsünü alabiliriz.
Veya netleştirme ise, düşünün ve neden toplamemir veya pozisyon sayısına ihtiyacımız olduğuna karar verin, eğer bir enstrümanda sadece bir pozisyonumuz olabilirse ve bunu bilmemiz gerekiyor. Bu nedenle, döngü gerekli olmayabilir. Enstrümanımızda If PositionSelect False döndürürse bir pozisyon açarız ve True ise bu enstrümanda bir pozisyon seçilir ve onunla çalışabilir ve takip için değiştirebiliriz.

Bu yüzden başlangıçta kod döngü operatörü olmadan yazılmıştır, ancak daha sonra nasıl uygulanacağını denemekle ilgilenmeye başladım.

Saygılarımla, Vladimir.

 
MrBrooklin :

Bu arada, MQL5 Reference, döngünün tamamlandıktan sonra bir şey döndürmesi gerektiği hakkında hiçbir şey söylemez. Belki yine bir şeyi yanlış anladım?

Saygılarımla, Vladimir.

İfadeler tam olarak doğru değil, döngü gövdesindeki yineleyiciye bağlı olarak eylemler gerçekleştirilmelidir. Yineleyiciye bağlı olarak. Ve bu eylemlerin sonucunu döngü gövdesinde döndürün. Döngü geçtiyse ve kesme veya devam etme operatörleri yoksa, İfade 3'e ve ardından İfade 2'ye ve True ise, döngü gövdesinde yeni bir yineleyici ile.

 
MrBrooklin :

Bu yüzden başlangıçta kod döngü operatörü olmadan yazılmıştır, ancak daha sonra nasıl uygulanacağını denemekle ilgilenmeye başladım.

Saygılarımla, Vladimir.

Başvuruda bulunabilir

  • PositionGetTicket pozisyon numarasına göre bir pozisyon bileti döndürür (ve bir numaramız var) ve bir pozisyon bileti aldıktan sonra onun sembolünü ve büyüsünü alabiliriz.

Tüm biletleri numaraya göre dolaşın. Biletler aracılığıyla konum sembollerini bulun ve bizimkilerle karşılaştırın. Sihirli pozisyonlar alın ve bizimkilerle karşılaştırın.

 if ( PositionSelectByTicket ( PositionGetTicket (i)) && PositionGetString ( POSITION_SYMBOL )== _Symbol && 
PositionGetInteger ( POSITION_MAGIC )==MagicNumber) // вот эта строчка

Ama sadece neden.

Neden: