Hatalar, hatalar, sorular - sayfa 2353

 
Alexey Navoykov :
O zaman metin tutamaçlarını nerede gördünüz? ) Evet ve yazarın bir görevi var. Ve koşulları karmaşıklaştırırsak, tutamaçlar bir yapı şeklinde de belirtilebilir.
Evet... ve böylece:
 struct A { int i; };
bool SelectHandle( A& ) { return true ; }
A GetHandle() { A a; return a; }
A NewHandle;
datetime time = MACRO100( NewHandle, TimeCurrent() );

çok çalışır

 
A100 :
Evet... ve böylece:

çok çalışır

Bir dizi biçiminde kalır) Ayrıca, önce ondan bir bayt dizisi oluşturmalı ve ardından tescilli TypeToBytes kitaplığını kullanarak bir yapıya aktarmalısınız)

 
Alexey Navoykov :

Bir dizi biçiminde kalır) Ayrıca, önce ondan bir bayt dizisi oluşturmalı ve ardından tescilli TypeToBytes kitaplığını kullanarak bir yapıya aktarmalısınız)

Kontrol edemiyorum - Böyle bir kitaplık dosyam yok (derleme 1961x32). Bir hafta içinde kendiniz görebilirsiniz.

 
Alexey Navoykov :
O zaman metin tutamaçlarını nerede gördünüz? ) Evet ve yazarın bir görevi var. Ve koşulları zorlaştırırsak, tutamaçlar da bir yapı şeklinde belirtilebilir.

Lütfen konuyla ilgili bir bağlantı sağlayın.
Teşekkür ederim.

 
Sergey Dzyublik :

Lütfen konuyla ilgili bir bağlantı sağlayın.
Teşekkür ederim.

https://www.mql5.com/ru/forum/1111/page2350#comment_9974834

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

pavlick_ , 2018.12.21 17:23

 int MACROS_helper_PrevHandle;
datetime MACROS_helper_time;
#define MACROS(NEW_HANDLE_, FN_)   (MACROS_helper_PrevHandle=GetHandle())* 0 == 0 ?  \
                                     (MACROS_helper_time=SelectHandle(NEW_HANDLE_) ? FN_ : 0 )* 0 == 0 ? \
                                        SelectHandle(MACROS_helper_PrevHandle)* 0 == 0 ? MACROS_helper_time : 0 : 0 : 0
Ne yazık ki, bu seçenek
Alexey Navoykov :
genel bir değişken kullanın.


Konu hakkında pek düşünmedim. Hemen bir çözüm bulamadım, bu yüzden forumdan öğrenmeye karar verdim. Entrikalar ilginç değil çünkü. Pratikte kullanmak istiyorum - Sanal İncil, onsuz savaş danışmanlarını hayal bile edemiyorum.

Eh, iki kişi zaten ek olmadan bir çözüm olduğunu söyledi. değişkenler, bunu hafta sonu düşüneceğim.

NewHandle'ın - bir sabit olabileceğini açıklığa kavuşturacağım. Onlar. geçerli bir arama

time = MACROS( 0 , TimeCurrent ()); // TimeCurrent из 0-хендла.
time = MACROS( 1 , TimeCurrent ()); // TimeCurrent из 1-хендла.

MACROS( 0 , SymbolInfoTick ( _Symbol , Tick)); // SymbolInfoTick из 0-хендла.

#define Bid SymbolInfoDouble ( _Symbol , SYMBOL_BID )
Price = MACROS( 3 , Bid ); // Bid из 3-хендла.
 

fxsaber :

NewHandle'ın - bir sabit olabileceğini açıklığa kavuşturacağım. Onlar. geçerli bir arama

Her şey çalışıyor:

 #include "Простейшее.mqh"
int GetHandle() { return 0; }
bool SelectHandle( int ) { return true; }
#define Bid SymbolInfoDouble ( _Symbol , SYMBOL_BID )
void OnStart ()
{
         datetime time = MACRO100( 0 , TimeCurrent ());
                 time = MACRO100( 1 , TimeCurrent ());
         MqlTick tick;
        MACRO100( 0 , SymbolInfoTick ( _Symbol , tick));
         double price = MACRO100( 3 , Bid );
}

Başka ne zaman fırsat olacak ... gerçek seviyeyi kontrol et
Tartışmalara bakılırsa ... burada ... ciddi proggers ustaca şatafatlı kelimeleri hokkabazlık, dahil. OOP vb. hakkında (Genellikle sözlerin yarısından fazlasını anlamıyorum bile)

Gerçekten nedir? tinsel? ya da hala çekilmedi mi?
Bir kez daha vurguluyorum: karmaşık bir şey olsaydı ... olağanüstü veya özel bilgi gerektiren - hemen yazardım, ama burada - en basiti (!). Bu nedenle, beyni açın ve seçenekleri yazın ... veya bekleyin!

 
https://www.mql5.com/en/forum/1111/page2350#comment_9974834 'den başlayarak ayrı bir konuya koyabilir misiniz? Burada her şey kaybolacak, A100'ün ne kadar sıvı olduğunu görmek istiyorum.
 
pavlick_ :
, A100'ün ne kadar sıvı olduğunu görmek istiyorum.

Neden boş? Hadi üç basamaklı bir çalışma oluştursanız iyi olur ve tahkim bunu kimin batırdığına karar verir.

 
fxsaber :
Ne yazık ki, bu seçenek


Konu hakkında pek düşünmedim. Hemen bir çözüm bulamadım, bu yüzden forumdan öğrenmeye karar verdim. Entrikalar ilginç değil çünkü. Pratikte kullanmak istiyorum - Sanal İncil, onsuz savaş danışmanlarını hayal bile edemiyorum.

Peki xs, herkes zaten düşündü. Doğru anladıysam makrodan dönen tipin değişkenliği önemli. C++ ile çözülebilir

 //------------------------------------ 1 вариант
template < typename T>
T f(T(*fp)()) {...}
//------------------------------------ 2 вариант
template < typename T>
struct Store {
   static inline T val;
};
int MACROS_helper_PrevHandle;
#define MACROS(NEW_HANDLE_, FN_)   (MACROS_helper_PrevHandle=GetHandle())* 0 == 0 ?           \
      (Store<decltype(FN_)>::val=SelectHandle(NEW_HANDLE_) ? FN_ : 0 )* 0 == 0 ?               \
      SelectHandle(MACROS_helper_PrevHandle)* 0 == 0 ? Store<decltype(FN_)>::val : 0 : 0 : 0

Ve gcc önişlemcisi genellikle bunu yapabilir:

 #define M(FN_) ({ int a= 5 ; ; FN_;})
int ff() { return 50 ;}

int val = M(ff());

tüm bunları µl'de uygulama girişimleri başarısızlıkla sonuçlandı. Belki daha iyi bir çözüm eklenebilir: SelectHandle(new, set_next=INT_MAX). Yine de, belki birileri sizi zor bir makro ile şaşırtabilir.

Neden: