Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1480

 
Artyom Trishkin #:
Can. Ardından, yalnızca referansla aktarılan değişkenlerde iki değer alınacaktır. Yani, fonksiyon üç değer döndürür

İlgi çekmek için d değişkenini kaldırdım. Sadece fonksiyonu bıraktım. Yazdırma sonucu değişmedi. Dürüst olmak gerekirse, üç değer hakkında hiçbir şey anlamıyorum.

Saygılarımla, Vladimir.

 
MrBrooklin #:

İlgi çekmek için d değişkenini kaldırdım. Sadece fonksiyonu bıraktım. Yazdırma sonucu değişmedi. Dürüst olmak gerekirse, üç değer hakkında hiçbir şey anlamıyorum.

Saygılarımla, Vladimir.

Bu değer yazdırılmadığı için değişmemiştir.

Sadece yazdırmayı ekleyin ve göreceksiniz.

 
Alexey Viktorov #:

Bu değer yazdırılmadığı için değiştirilmedi.

Sadece baskı ekleyin ve göreceksiniz.

Basıldı. Aynı kaldı.

2023.11.22 19:48:24.110 10 (EURUSDrfd,H1)       a и b перед вызовом:14 8
2023.11.22 19:48:24.110 10 (EURUSDrfd,H1)       a и b после вызова:28 4

Belki yine bir şeyi yanlış anlamışımdır? Yoksaddeğişkenini mi yazdırmanızgerekiyordu? Konuştuğumuz şey bu muydu?

Saygılarımla, Vladimir.

 
MrBrooklin #:

Çıktısını aldım. Olduğu gibi, her şey aynı kalıyor.

Saygılarımla, Vladimir.

Nerede basıldı?

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
  {
   double res;
//---
   i*=2;
   j/=2;
   res=i+j;
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---.
   int a=14,b=8;
   Print("a и b перед вызовом:",a," ",b);
   double d=SecondMethod(a,b);
   Print("Результат выполнения функции ", d);
   Print("a и b после вызова:",a," ",b, " ",d);// или здесь. А можно и там и тут…
  }
//+------------------------------------------------------------------+
 
Alexey Viktorov #:

Nerede basıldı?

Şimdi her şeyi çözdüm. )) Hepinize teşekkür ederim!

Saygılarımla, Vladimir.

 
Herkese günaydın ve iyi günler! MQL5 programlama dilini incelemeye devam ediyorum. Toplam açık pozisyon sayısını hesaplamak ve varsa hata kodları da dahil olmak üzere bazı parametrelerini yazdırmak için küçük bir komut dosyası yazdım:
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ResetLastError(); // установим значение предопределенной переменной _LastError в ноль
   int pos_total = PositionsTotal(); // объявим переменную для хранения количества открытых позиций
   if(pos_total > 0) // если есть открытые позиции
     {
      for(int i=0; i<pos_total; i++) // запустим цикл и переберём все открытые позиции
        {
         if(PositionGetSymbol(i) == _Symbol) // выберем все открытые позиции по текущему символу
           {
            ulong  pos_id = PositionGetInteger(POSITION_IDENTIFIER);
            double pos_price = PositionGetDouble(POSITION_PRICE_OPEN);
            double pos_tp = PositionGetDouble(POSITION_TP);
            double pos_sl = PositionGetDouble(POSITION_SL);
            PrintFormat("Позиция #%d цена = %G тейк-профит = %G стоп-лосс = %G", pos_id, pos_price, pos_tp, pos_sl);
           }
         else // если выбрать позицию не удалось
           {
            PrintFormat("Не удалось выбрать позицию по символу %s. Ошибка = ", _Symbol, GetLastError());
           }
        }
     }
  }
//+------------------------------------------------------------------+

Açık pozisyonların olduğu bir sembol üzerinde çalıştırdım. Düzgün çalışıyor, bilgiler doğru şekilde yazdırılıyor. Sonraki. Açık pozisyon bulunmayan bir sembol üzerinde çalıştırdım. Açık pozisyon olmadığı bilgisi doğru şekilde görüntüleniyor, ancak hatanın nedeninin kodu nedense görüntülenmiyor. Hata kodunun neden görüntülenmediğini anlamama yardımcı olabilir misiniz?

Saygılarımla, Vladimir.

 
MrBrooklin #:

Açık pozisyonları olan bir sembol üzerinde başlattım. Düzgün çalışıyor, bilgiler doğru görüntüleniyor. Sonraki. Açık pozisyonu olmayan bir sembol üzerinde çalıştırdım. Açık pozisyon olmadığı bilgisi doğru şekilde görüntüleniyor, ancak hatanın nedeninin kodu nedense görüntülenmiyor. Hata kodunun neden görüntülenmediğini anlamama yardımcı olabilir misiniz?

Hata yoksa hata kodu nereden geliyor? Bu sadece pozisyon için yanlış semboldür.

 
JRandomTrader #:

Hata yoksa neden bir hata kodu olsun ki? Sadece pozisyon için yanlış sembol.

Yanıt için teşekkürler! En azından bu hata kodunun görüntülenmesini bekliyordum:

ERR_TRADE_POSITION_NOT_FOUND

4753

Pozisyon bulunamadı


Sembol konusunda aynı fikirde değilim. Sembol tam olarak bu betiğin atıldığı grafikteki semboldür. Şu anda GBPUSDrfd sembolünde açık pozisyonum yok, ancak hata da yok. Bu açık değil!!!

2023.11.23 13:27:26.385 7 (GBPUSDrfd,H1)        Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка = 
2023.11.23 13:27:26.385 7 (GBPUSDrfd,H1)        Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка = 

Saygılarımla, Vladimir.

 
MrBrooklin #:

Yanıt için teşekkürler! En azından bu hata kodunun görüntülenmesini bekliyordum:

ERR_TRADE_POSITION_NOT_FOUND

4753

Pozisyon bulunamadı


Sembol konusunda aynı fikirde değilim. Sembol tam olarak bu betiğin atıldığı grafikteki semboldür. GBPUSDrfd sembolünde herhangi bir açık pozisyonum yok, ancak bir hatam da yok. Anlamıyorum!!!

Saygılarımla, Vladimir.

Tüm pozisyonlar bulundu! Ancak bulunan pozisyonların hiçbirinde ihtiyacımız olan sembol yok.

 
JRandomTrader #:

Tüm pozisyonlar bulundu! Ancak bulunan pozisyonların hiçbirinde ihtiyacımız olan sembol yok.

Şimdi anladım. Teşekkür ederim!!! En az bir açık pozisyon varsa, 4753 hata kodunun asla görünmeyeceği ortaya çıktı.

Saygılarımla, Vladimir.