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

 
Pavel Nikiforov :
Lütfen neyin yanlış olduğunu açıklayın. Planlandığı gibi, fonksiyon açık pozisyonlar üzerinde yinelenmeli ve verilen bir sihirle sayıyı saymalıdır. Ama aslında, sırasıyla aynı bilet ve sihirle başka bir danışman tarafından açılan tüm listeden yalnızca birini seçer, sayı her zaman = 0'dır.

Genel olarak, kendim çözdüm, PositionGetSymbol aracılığıyla seçim yapmanız gerekiyor:

 //+------------------------------------------------------------------+
int OpenPositions() //проверка открытых позиций по Magic number 
  {
   int count= 0 ;
     for ( int z= PositionsTotal ()- 1 ; z>= 0 ; z --) // Перебор всех позиций
     {
       if ( PositionGetSymbol (z)!= _Symbol ) // Найдена позиция с заданным символом
        {
         Print ( __FUNCSIG__ " позиция не выбрана " , GetLastError ()); continue ;
        }
       long   ticket = PositionGetInteger ( POSITION_TICKET );
             Print ( __FUNCSIG__ " ТИКЕТ " , IntegerToString (ticket));
       ulong myMN= PositionGetInteger ( POSITION_MAGIC );
             Print ( __FUNCSIG__ " МАГИК " , IntegerToString (myMN));
       if (myMN==Magic)
            count++;
     }
   return (count);
  }
//+------------------------------------------------------------------+
 
Pavel Nikiforov :

Genel olarak, kendim çözdüm, PositionGetSymbol aracılığıyla seçim yapmanız gerekiyor:

Yanlış anlamışım. PositionGetTicket(i) fonksiyonu ile hadge hesabında seçim yapmak ve ardından sembol ve büyüyü kontrol etmek gerekir.

Документация по MQL5: Торговые функции / PositionGetTicket
Документация по MQL5: Торговые функции / PositionGetTicket
  • www.mql5.com
Торговые функции / PositionGetTicket - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Bu konuyla ilgili olmayan yorumlar " MQL4 MT4 MetaTrader 4 Yeni Başlayanlardan Sorular " bölümüne taşındı.
 
Alexey Viktorov :

Yanlış anlamışım. PositionGetTicket(i) fonksiyonu ile hadge hesabında seçim yapmak ve ardından sembol ve büyüyü kontrol etmek gerekir.

Evet, daha iyi, demoda diğer işlevler de sorunluydu, çalışmaya başladı.

 

iyi günler, bana bu göstergeden bahset https://www.mql5.com/en/forum/94447#comment_6780067

Anladığım kadarıyla 4 puan veya daha fazla bir değişiklikle, fiyatta keskin bir değişiklikle kırmızı ve mavi renk tablosuna daireler koyuyor,

bu sinyallerin sadece 10 puanlık veya daha fazla bir değişiklik olduğunda gitmesi gerekir.

Dosyalar:
1.png  48 kb
 
yesterday35 :

iyi günler, bana bu göstergeden bahset https://www.mql5.com/en/forum/94447#comment_6780067

Anladığım kadarıyla 4 puan veya daha fazla bir değişiklikle, fiyatta keskin bir değişiklikle kırmızı ve mavi renk tablosuna daireler koyuyor,

bu sinyallerin sadece 10 puanlık veya daha fazla bir değişiklik olduğunda gitmesi gerekir.

Bu gösterge puanları değil, sigma veya RMS'yi (standart sapma) sayar. N son kene seçimine dayalıdır (varsayılan olarak 50). 3 sigma'dan bir kanal oluşturur. Fiyat kanaldan fırlarsa, burayı işaretler. Ancak asıl sıkıntı, orijinal fiyat serisinin çok ağır kuyruklarla normal dağılımdan uzak olmasıdır. Aslında bu gösterge bir oyuncak-faydasıdır.

 

Merhaba.

Küçük bir program yazıyorum. Tamamen anlaşılmaz bir durumla karşı karşıya.

Kodda iki satır var. Bir döngüde değil, OnTester()'ın en sonundalar.

 Print ( "Мат ожидание ставки  " ,MatOgidanieStavk(KKef,VVer,Stavka), " Ставка " ,Stavka);
Print ( "Ставка =" ,Stavka);

Ve işte bu satırların tamamen beklenmedik bir sonucu.

Мат ожидание ставки   447.0461599959392 Ставка - 1.0
Ставка = 3912.820000338397

İşte MatOgidanieStavk işlevinin tanımı

 double MatOgidanieStavk( double Kef, double Ver, double &BestStavka)
{
 .......... 
   BestStavka=- 1 ;// Первое обращении к этой переменой.
............
return MatOgidanie;
}
 
pivomoe :

Merhaba.

Küçük bir program yazıyorum. Tamamen anlaşılmaz bir durumla karşı karşıya.

Kodda iki satır var. Bir döngüde değil, OnTester()'ın en sonundalar.

Ve işte bu satırların tamamen beklenmedik bir sonucu.

İşte MatOgidanieStavk işlevinin tanımı

Stavka baskıdan önce başlatıldı mı?

Çağrının fonksiyon içindeki ilk çağrı olduğu nasıl belirlenir?

nasıl bir sonuç bekliyordun?

 

Teşekkür ederim. Sorunu anladım.

İpucu, Print'ten önceki Stavka değişkeninin olduğu ortaya çıktı. -1'e eşitti. Değeri Yazdır işlevine aktarıldı ve bir kopya olarak kaydedildi. MatOgidanieStavk işlevim , Print'in yazdıracağı kopyayı değil, Stavka değişkeninin kendisini değiştirdi.

 
Olması gereken yol bu.

2795/2797, yuvarlama olmadığı için 0 olacaktır. Ya s3 = (çift)s2/s1 yazın; veya s2 ve s1 için türü hemen ikiye katlayın