Kontrol et - neyi yanlış yaptım? - sayfa 6

 
Nikolai Semko # :

Evet, Natalya - "Bir satır kod için ödeme yaptığınızda" dizisinden sadece bir memeydi.

Programcılar arasında böyle bir mizah


Senin durumunda, bir işleve gerek yok

Sadece Volume1 ... Volume10 değişkenlerini başlangıçta bir dizi hacmi[10] biçiminde oluşturmanız gerekir.
ve ardından n dizinine göre [n] öğelerine erişin.
Endişelenme - hemen hemen her programcı bunu yaşadı.
Ana şey, programlamadan gerçekten acele etmenizdir. Ben hissediyorum.
Yani uzağa gideceksin.

Bana nasıl güzel yazılacağını söyle. Kod dizilerini çoğaltmaktan kaçınmak için.
EA 2 gösterge kullanır.
ve bir sipariş açma koşulları şimdi şöyle görünüyor:

 if (Indicator1 > 0 && Indicator2 > 0 )
{
OrderSend
}


Ama ayarlara bir filtre eklemek istiyorum
1 veya 2 göstergesi kullanın veya kullanmayın
Sadece daha doğru bir şekilde nasıl uygulanacağını bilmiyorum.
Böyle bir şey ne olurdu:

 if (Indicator1 && Indicator1 > 0 )
{
if (Indicator2 && Indicator2 > 0 ) || (Indicator2 == false )
{
///
}
}



if (Indicator2 && Indicator2 > 0 )
{
if (Indicator1 && Indicator1 > 0 ) || (Indicator1 == false )
{
///
}
}
böylece ayarlarda 1 veya ikinci göstergeyi kapatabilirim.
Çok fazla kod kopyalamadan nasıl yapacağımı çözemiyorum .....
 
Natalya Smirnova # :

Bana nasıl güzel yazılacağını söyle. Kod dizilerini çoğaltmaktan kaçınmak için.
EA 2 gösterge kullanır.
ve bir sipariş açma koşulları şimdi şöyle görünüyor:


Ama ayarlara bir filtre eklemek istiyorum
1 veya 2 göstergesi kullanın veya kullanmayın
Sadece daha doğru bir şekilde nasıl uygulanacağını bilmiyorum.
Böyle bir şey ne olurdu:

böylece ayarlarda 1 veya ikinci göstergeyi kapatabilirim.
Çok fazla kod kopyalamadan nasıl yapacağımı çözemiyorum .....

Burada bu konu hakkında biraz yazdım: https://www.mql5.com/en/forum/6343/page1384#comment_26447195

 
JRandomTrader # :

Burada bu konu hakkında biraz yazdım: https://www.mql5.com/en/forum/6343/page1384#comment_26447195

Teşekkürler, ders çalışmaya gidiyorum.
 

Natalya Smirnova # :

böylece ayarlarda 1 veya ikinci göstergeyi kapatabilirim.
Çok fazla kod kopyalamadan nasıl yapacağımı çözemiyorum .....


 input bool indicator_1 = true ;
input bool indicator_2 = true ;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool F_1()
    {
     if (!indicator_1)
           return true ;
// выполнение условий

//---
     return false ;
    }
bool F_2()
    {
     if (!indicator_2)
           return true ;
// выполнение условий

//---
     return false ;
    }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart ( void )
    {
     if (F_1 && F2) /* работаем */ ;
    }

Gösterge yürütme koşulunu fonksiyona yazın ve kontrol edilmemesi gerekiyorsa koşul karşılanır. TRUE'ya dönüyoruz .

 
Natalya Smirnova # :

Bana nasıl güzel yazılacağını söyle. Kod dizilerini çoğaltmaktan kaçınmak için.
EA 2 gösterge kullanır.
ve bir sipariş açma koşulları şimdi şöyle görünüyor:


Ama ayarlara bir filtre eklemek istiyorum
1 veya 2 göstergesi kullanın veya kullanmayın
Sadece daha doğru bir şekilde nasıl uygulanacağını bilmiyorum.
Böyle bir şey ne olurdu:

böylece ayarlarda 1 veya ikinci göstergeyi kapatabilirim.
Çok fazla kod kopyalamadan nasıl yapacağımı çözemiyorum .....

Ancak kullanım koşulu değişkeni ile gösterge çıktı değeri değişkeni farklı değişkenler olmalıdır.
Kullanım koşulunun değişkenleri ind_1 ve ind_2 ise, örneğin şunu yapabilirsiniz:

ind_1 = !(ind_1 && !(Indicator1> 0) );
ind_2 = !(ind_2 && !(Indicator2> 0) );
if (ind_1 && ind_2) { OrderSend... } ;
Not Her ihtimale karşı: Ünlem işareti, bool değerinin tersine çevrilmesi anlamına gelir
 
Nikolai Semko # :

Ancak kullanım koşulu değişkeni ile gösterge çıktı değeri değişkeni farklı değişkenler olmalıdır.
Kullanım koşulunun değişkenleri ind_1 ve ind_2 ise, örneğin şunu yapabilirsiniz:

ind_1 = !(ind_1 && !(Indicator1> 0) );

mantıksal bir ifadede parantez ve ters çevirmelerin bolluğu, olduğu gibi, basitleştirmenin mümkün olduğunu gösteriyor ...

PS/ mimari olarak genellikle cüruf. Gösterge okumaları ticaret faktörleri olmayan bir grupta özetlenebilirse (nerede açıldığından bağımsız olarak), bu bir göstergedir ve robotun ticaret mantığında hiçbir ilgisi yoktur. Analiz için oluşturulmalı ve erişilebilir olmalıdır.

 
Maxim Kuznetsov # :

mantıksal bir ifadede parantez ve ters çevirmelerin bolluğu, olduğu gibi, basitleştirmenin mümkün olduğunu gösteriyor ...

Belki.
ab mantığı hangi seçeneklere sahip olabilir?
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
!(a && !b) hariç
Belki birisi daha kısa bir mantık bulur ...

 
Maxim Kuznetsov # :

PS/ mimari olarak genellikle cüruf. Gösterge okumaları ticaret faktörleri olmayan bir grupta özetlenebilirse (nerede açıldığından bağımsız olarak), bu bir göstergedir ve robotun ticaret mantığında hiçbir ilgisi yoktur. Analiz için oluşturulmalı ve erişilebilir olmalıdır.

Bu anlamadım.
Sadece soruyu cevapladı. Daha fazla yok.
 
Nikolai Semko # :
Belki.
ab mantığı hangi seçeneklere sahip olabilir?
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
!(a && !b) hariç
Belki birisi daha kısa bir mantık bulur ...

!a || b

:)

 
PapaYozh # :

!a || b

:)

Evet kesinlikle.
Teşekkürler :))
Eğlenceli. XOR'u vidalamaya çalıştım ama VEYA'yı unuttum.

Yani daha kısa versiyon:
ind_1 = !ind_1 || Indicator1> 0 ;
ind_2 = !ind_2 || Indicator2> 0 ;
if (ind_1 && ind_2) { OrderSend ... };
veya orijinal ind_1 ve ind_2'yi koruyan tek satırlık bir sürüm

 if ((!ind_1 || Indicator1> 0 ) && (!ind_2 || Indicator2> 0 )) { OrderSend ... };