yürütme ilkesini döndürür. - sayfa 2

 
Vladimir Karputov :

CTrade ticaret sınıfından bir örnek. Önce ' SYMBOL_FILLING_FOK ', ardından ' SYMBOL_FILLING_IOC ' için kontroller


Kontrol ' Bitwise AND ' ile yapılır.

Bit düzeyinde VE işlemi

x ve y ikili gösterimlerinin bitsel işlemi VE. İfadenin değeri, hem x hem de y'nin sıfırdan farklı olduğu tüm bitlerde 1 (DOĞRU) içerir; ve diğer tüm bitlerde 0 (YANLIŞ).


Misal:


Bit düzeyinde işlemler hakkında daha fazla bilgi .

Peki, bu koda göre, yürütme politikası ya ioc ya da fok ya da hiçbiri değil ve ikisinin aynı anda olamayacağı ortaya çıktı mı? Yoksa yine mi yanlış anladım?
 
Belki aynı anda ikisi aynı olamaz? Aynı anda iki tane olması için işlev ne döndürmeli?
 
Sadece cevabınızı yanlış anladım. Genel olarak demek istediniz, bir ticaret hesabıyla ilgili değil. Yardım için teşekkürler.
 
Ivan_Invanov :
Belki aynı anda ikisi aynı olamaz? Aynı anda iki tane olması için işlev ne döndürmeli?
Belki 2, o zaman fonksiyon 3 döndürür. AMA¡¡¡¡¡ Bu tipik bir durum değildir. Sadece 3 seçenek olduğu göz önüne alındığında, 1, 2 veya 1 + 2 toplamı olabilir. Üçüncü seçenek değil, toplamdır. Bu nedenle, bitsel bir işlemle kontrol etmek yalnızca şu soruyu yanıtlayabilir: Şu veya bu doldurma politikasını uygulamak mümkün mü?
 
Ivan_Invanov :
Belki aynı anda ikisi aynı olamaz? Aynı anda iki tane olması için işlev ne döndürmeli?

MetaQuotes-Demo sunucusundan iki karakter için bir kontrol örneği:

 2020.07 . 19 07 : 35 : 07.922 Info_FILLING (USDRUB,H1)        MetaQuotes-Demo
2020.07 . 19 07 : 35 : 07.922 Info_FILLING (USDRUB,H1)        Fill or Kill, SYMBOL_FILLING_FOK : false
2020.07 . 19 07 : 35 : 07.922 Info_FILLING (USDRUB,H1)        Immediate or Cancel, SYMBOL_FILLING_IOC : true
2020.07 . 19 07 : 35 : 07.922 Info_FILLING (USDRUB,H1)        Return: true
2020.07 . 19 07 : 35 : 07.922 Info_FILLING (USDRUB,H1)        Flags of allowed order filling modes: SYMBOL_TRADE_EXECUTION_INSTANT
2020.07 . 19 07 : 35 : 07.922 Info_FILLING (USDRUB,H1)        
2020.07 . 19 07 : 35 : 45.291 Info_FILLING (EURUSD,H1)        MetaQuotes-Demo
2020.07 . 19 07 : 35 : 45.291 Info_FILLING (EURUSD,H1)        Fill or Kill, SYMBOL_FILLING_FOK : true
2020.07 . 19 07 : 35 : 45.291 Info_FILLING (EURUSD,H1)        Immediate or Cancel, SYMBOL_FILLING_IOC : false
2020.07 . 19 07 : 35 : 45.291 Info_FILLING (EURUSD,H1)        Return: true
2020.07 . 19 07 : 35 : 45.291 Info_FILLING (EURUSD,H1)        Flags of allowed order filling modes: SYMBOL_TRADE_EXECUTION_INSTANT

Bu sembollerin özelliklerine (doldurma) bakıyoruz:



ve işte daha yaygın bir seçenek: sembol için tüm dolgular mevcut olduğunda

 2020.07 . 19 07 : 40 : 22.818 Info_FILLING (NZDUSD,H1)        MetaQuotes-Demo
2020.07 . 19 07 : 40 : 22.818 Info_FILLING (NZDUSD,H1)        Fill or Kill, SYMBOL_FILLING_FOK : true
2020.07 . 19 07 : 40 : 22.818 Info_FILLING (NZDUSD,H1)        Immediate or Cancel, SYMBOL_FILLING_IOC : true
2020.07 . 19 07 : 40 : 22.818 Info_FILLING (NZDUSD,H1)        Return: true
2020.07 . 19 07 : 40 : 22.818 Info_FILLING (NZDUSD,H1)        Flags of allowed order filling modes: SYMBOL_TRADE_EXECUTION_INSTANT

ve şartname


 
teşekkür etmek.
 
Alexey Viktorov :
Belki 2, o zaman fonksiyon 3 döndürür. AMA¡¡¡¡¡ Bu tipik bir durum değildir. Sadece 3 seçenek olduğu göz önüne alındığında, 1, 2 veya 1 + 2 toplamı olabilir. Üçüncü seçenek değil, toplamdır. Bu nedenle, bitsel bir işlemle kontrol etmek yalnızca şu soruyu yanıtlayabilir: Şu veya bu doldurma politikasını uygulamak mümkün mü?
hala bir değişkenin iki üyeyi nasıl döndürebileceğini anlamadı. Ve bir üyede 3 değerini döndürürse, bitsel işlemler çalışmayacaktır. Sadece EXECUTION_INSTANT modunu seçmeye karar verdim ve her zaman FOK politikasına sahip olacağım.
 
Ivan_Invanov :
hala bir değişkenin iki üyeyi nasıl döndürebileceğini anlamadı. Ve bir üyede 3 değerini döndürürse, bitsel işlemler çalışmayacaktır. Sadece EXECUTION_INSTANT modunu seçmeye karar verdim ve her zaman FOK politikasına sahip olacağım.

Anlamak için bayrakların ne olduğunu anlamanız gerekir.

Bayrağın her bir sonraki değeri, bir öncekinin 2 ile çarpılmış değeridir. Yani, 1, 2, 4, 8, 16, 32……… Yani, değer 33 ise, bu sadece 1 ve 32'nin olduğu anlamına gelir. Ayrıca, eğer 18 değeri sadece 16 ve 2'den oluşabiliyorsa ve zaten etkilenmiş olan 3 sadece 1 ve 2'den oluşabilir.

Ve bu nedenle, bitsel işlemler , bayrakların toplamında kontrol edilen değerin mevcut olup olmadığını kontrol eder. 18'de rastgele bir sayı olup olmadığını kontrol ederseniz, 2 ve 16 değerlerini kontrol etmek dışında false alırsınız.

 
Alexey Viktorov :

Anlamak için bayrakların ne olduğunu anlamanız gerekir.

Bayrağın her bir sonraki değeri, bir öncekinin 2 ile çarpılmış değeridir. Yani, 1, 2, 4, 8, 16, 32……… Yani, değer 33 ise, bu sadece 1 ve 32'nin olduğu anlamına gelir. Ayrıca, eğer 18 değeri sadece 16 ve 2'den oluşabiliyorsa ve zaten etkilenmiş olan 3 sadece 1 ve 2'den oluşabilir.

Ve bu nedenle, bitsel işlemler , bayrakların toplamında kontrol edilen değerin mevcut olup olmadığını kontrol eder. 18'de rastgele bir sayı olup olmadığını kontrol ederseniz, 2 ve 16 değerlerini kontrol etmek dışında false alırsınız.

Evet, ikili sistemin bitleriyle nasıl çalışılacağını anlıyorum.

   uint filling=( uint ) SymbolInfoInteger (symbol, SYMBOL_FILLING_MODE );
   if ((filling& SYMBOL_FILLING_FOK )== SYMBOL_FILLING_FOK )
     {
      m_type_filling= ORDER_FILLING_FOK ;

Bu kod çıkar, örneğin 3 işlevi döndürdü.

(11&1)==1 ; 11==01 hayır, bu yanlış, işe yaramadı.

Bunu yazıyordum ve düşündüm ki, belki işlemleri yanlış anlıyorum.

& bu, ondalık değerleri ikiliye çevirdiğim ve bit düzeyinde birleşim yaptığım anlamına geliyor.

== ilk terim ikinci terime eşit olduğunda doğrudur. O gibi?

 
AAAAA sonunda geldi. Bitte bir değer varsa, bu işaret doğrudur ve üçlü, değeri her iki bite ayarlar. Ama bu kod neden o zaman çalışıyor?