Öğrenme mantığı - sayfa 5

 
Vinin :


Bu benim hattım değil. Bu telif hakkı

start() işlevi için en uygun kod

Hafifçe söylemek gerekirse, bu 2 satır garip görünüyor:

   limit = Bars - counted_bars- 1 ;
   if ( Bars - counted_bars > 2 ) limit = Bars - nPeriod- 1 ;

böyle daha iyi:

   if ( Bars - counted_bars > 2 ) limit = Bars - nPeriod- 1 ;
   else limit = Bars - counted_bars- 1 ;
 
PapaYozh :

Böyle yazabildiğiniz zaman, neden boole değişkenleri etrafında böyle danslar yaptığı kesinlikle açık değil:

Beğendim, hatırlattığın için teşekkürler PapaYozh . Sonuçta, kendisi de benzer tasarımlar yarattı - ve unuttu ...
 
Vinin :


Ve mantık da, düşünmenin mantığı.

Üçüncü seçenek, göstergedeki mantıksal koşulları tamamen terk etmektir. Soru ortaya çıkıyor - mümkün mü?

Hadi deneyelim

Bunu yapmak için birkaç boole değişkeni ekleyin

Başlatma fonksiyonunun tüm kodu bu hale geldi.


bence basitleştirilebilir

for(int i = 0; i < limit; i++)
{
// Seçenek üç_v1

yüksek=iMA(NULL,0, nokta ,0,MODE_EMA,PRICE_HIGH,i);
düşük=iMA(BOŞ,0,nokta,0,MODE_EMA,PRICE_LOW,i);
atr=yüksek-düşük;
MaTDn[i] = düşük - atr;
MaTUp[i] = yüksek + atr;
}

Dosyalar:
 
Mathemat :
Çok beğendim, hatırlattığın için teşekkürler PapaYozh . Sonuçta, kendisi de benzer tasarımlar yarattı - ve unuttu ...

Bence, Symbol() işlev çağrısının aşırı kullanımı var.

şöyle yazardım:

   string smbl= Symbol ();
   showEUR  = ( StringFind (smbl, "EUR" , 0 ) != - 1 );
   showUSD  = ( StringFind (smbl, "USD" , 0 ) != - 1 );
   showGBP  = ( StringFind (smbl, "GBP" , 0 ) != - 1 );
   showCHF  = ( StringFind (smbl, "CHF" , 0 ) != - 1 );
   showJPY  = ( StringFind (smbl, "JPY" , 0 ) != - 1 );
Ama bu mantık için geçerli değil :)
 
Vinin :

Aslında, her şey basit. Başkalarının optimal kodu yapmasına yardım etme ve başkalarından kendim öğrenme arzusu vardı.

Zamanla, bazen (çoğunlukla) yardımcı olan ve bazen engelleyen, iyi tanımlanmış klişelerin geliştirildiği bir sır değildir.

Göstergenin bir versiyonunu hazırlayacağım ve ne yapıldığını ve neden yapıldığını açıklamaya çalışacağım. Eğer ilginçse tabii.


En uygun kodun nasıl yapıldığını bir örnekle açıklamak gerekirse - işe yaramaz - çok fazla eksiklik olacaktır.

Gerçek şu ki, optimal kod oluşturmak için birçok kural var ve bu kütle oldukça kalın bir kitap gibi. Örneğin, MQL4 diliyle karşılaşanların çoğu, işlemcinin toplama ve çıkarma işlemlerinin çarpma ve bölmelere göre çok daha kolay olduğunu bilmiyor. Kod optimizasyonu açısından a=b+b yazmanın a=b*2 yazmaktan daha iyi olduğunu pek çok kişi bilmiyor. Bu nedenle, programlama ve optimizasyonun mantığını anlamak için, ilgilenenleri optimal kod oluşturma, ayrıca algoritmik dilleri inceleme ve kullanıcılara oluşturma alışkanlığını aşılama konusundaki denemelere başvurmanın çok daha yararlı olacağını düşünüyorum. İhmalleri önlemek ve kod değişikliği sayısını en aza indirmek için gelecekteki programların akış şemaları.

Bu gönderiye ek olarak, bina koduyla ilgili mükemmel bir kitap indirmek için bir bağlantı bulunmaktadır.

S. McConnell "Mükemmel Kod"


Kitabı buradan indirebilirsiniz: http://depositfiles.com/files/ebk6t6t5h (dosya boyutu 21 megabayt. Format - djvu)

Genel olarak, bu başlıkta yalnızca orijinal ve optimize edilmiş kod bölümünün özel durumlarını, optimize edilmiş olanın neden orijinalinden daha iyi olduğunu ve optimizasyonun neden bu şekilde gerçekleştirildiğini açıklamak mümkün olacaktır. Sanırım ilk başta tam olarak istediğin buydu.

 
drknn :


Bu gönderiye ek olarak, bina koduyla ilgili mükemmel bir kitap indirmek için bir bağlantı bulunmaktadır.

S. McConnell "Mükemmel Kod"

+1, kitap çok faydalı.
 
drknn :

Genel olarak, bu başlıkta yalnızca orijinal ve optimize edilmiş kod bölümünün özel durumlarını, optimize edilmiş olanın neden orijinalinden daha iyi olduğunu ve optimizasyonun neden bu şekilde gerçekleştirildiğini açıklamak mümkün olacaktır. Sanırım ilk başta tam olarak istediğin buydu.

ayrıca fena değil, ama yine de dalın adını netleştirmek ya da mantık çalışmaya başlamak güzel olurdu.

İkinciyi nasıl yapacağımı gerçekten bilmiyorum ...

 
denis_orlov :

ayrıca fena değil, ama yine de dalın adını netleştirmek ya da mantık çalışmaya başlamak güzel olurdu.

İkinciyi nasıl yapacağımı gerçekten bilmiyorum ...


Mantık ( diğer Yunanca λογική - "akıl yürütme bilimi", λόγος'dan "akıl yürütme sanatı" - "konuşma", "akıl yürütme", "düşünce" ) - entelektüel bilişsel aktivitenin biçimlerinin, yöntemlerinin ve yasalarının bilimi , mantıksal dilin yardımı. Bu bilgi akıl tarafından elde edildiğinden mantık, doğru düşünmenin formları ve yasalarının bilimi olarak da tanımlanır. Düşünme, özel bir durumu ispat ve çürütme olan muhakeme şeklinde dilde şekillendiğinden, mantık bazen muhakeme yöntemleri bilimi veya ispat ve çürütme yöntemleri bilimi olarak tanımlanır. Bir bilim olarak mantık, duyusal deneyimden değil, daha önce kazanılan bilgiden, biliş sürecinde gerçeğe ulaşmanın yollarını dolaylı olarak inceler, bu nedenle çıkarımsal bilgi edinme yollarının bilimi olarak da tanımlanabilir.

Mantık yasalarının ve mantıksal düşünme yöntemlerinin uygulanmasıyla elde edilen çıkarımsal bilgi , gerçeğe ulaşmayı ve dünyadaki fenomenler ve olaylar hakkında daha derin bir bilgi için edinilen bilgiyi uygulamayı amaçlayan herhangi bir mantıksal eylemin amacıdır.

Mantığın temel görevlerinden biri, incelenen düşünce konusunun nüanslarını ve ilişkilerini daha iyi anlamak için öncüllerden nasıl bir sonuca varılacağını ( doğru akıl yürütme ) ve düşünce konusu hakkında doğru bilgi edinmeyi belirlemektir. Ele alınan olgunun diğer yönleriyle birlikte.

Mantık, hemen hemen her bilimin araçlarından biridir.

 
denis_orlov :

ayrıca fena değil, ama yine de dalın adını netleştirmek ya da mantık çalışmaya başlamak güzel olurdu.

İkinciyi nasıl yapacağımı gerçekten bilmiyorum ...


Benim için nasıl olduğunu paylaşabilirim.

Mantığı bir bilim olarak anlamaya çalışmam üç yılımı aldı - hala özü kavrayamadım, derler, ne tür bir mantığa ihtiyacı var. Daha sonra benim için neredeyse işe yaramaz şablonlardan oluşan bir set sundu, ama burada bir şeylerin yanlış olduğunu hissettim, bu yüzden dikkatlice okumaya devam ettim, şemalarına göre akıl yürütmeye çalıştım, her türlü mantıksal sorunu formüllerle çözdüm. Ve sonra, maviden bir cıvata gibi - aniden aklıma geldi ... Sonra, bu disiplinin tüm değeri nihayet aklıma geldiğinde, arkadaşlarımı aktif olarak mantık çalışmasına dahil etmeye başladım. Kelimenin tam anlamıyla "yandım" mantığı. Arkadaşlar aktif olarak tüm mantıksal mizaha, zor sonuçların güzelliğine, paradoksların çözülmezliğine çekildi ve ben etraftayken en azından bir şeyler öğrendiler. Ama kendileriyle 1'e 1 bıraktılar, ateşin korları gibi solup gittiler. Hiçbiri kendi ruhunun ateşini yakmadı. Sonra benimle ilgilendiklerini anladım, ama artık değil - hiçbirinin arkalarında onları bu bilime girmeye zorlayacak bir tekme kuvveti yoktu. Sonra gerçekten Mantık okuyanları kendim için iki kategoriye ayırdım. Hepsi onu okumak zorunda kaldı. Bundan gidecek hiçbir yer yok. Üniversitelerde mantık dersi veren bazı hocalar mantığın öğrenciler için çok zor olduğunu söylüyor. Ama sonra bu disiplinin kendilerine ne kadar zor verildiğine ve uygulamada ne kadar kolay olduğuna şaşırıyorlar. Eh, tüm bu zorunlu olanları kendim için iki sınıfa ayırdım - çalışma sürecinde mantığa aşık olanlar ve üzerinde testleri geçip unutanlar için. Bu aşıklarla konuşmak benim için her zaman hoştur - bir kişi sizi mükemmel bir şekilde anlar. Ancak bazen unutkanlarla bu zordur - bu tür insanlar kendi ölümleriyle Rus ruleti oynarlar. Gerçek şu ki, ancak önceden planlanmış bir plana göre bilinçli hareket etmek mümkündür. Hayatına düzen getirmenin tek yolu bu. Eylem planı hazırlamak bir düşünce sürecidir. Doğru ilerlemezse, sonuç değersiz olacaktır. Kimin kafasında kaos varsa, işlerinde karışıklık vardır. Böylece düşüncenin hayatımızı kontrol ettiği ortaya çıkıyor. Ve burada Mantık'ı reddetmek, mezara giden doğrudan ve hızlı bir yoldur.

:) Yeter belki, yoksa böyle şeyler hakkında saatlerce konuşabilirim ve bu bizi sonunda bu başlığın konusundan uzaklaştırır.

not

Sadece şunu ekleyebilirim, hayatımda bir zamanlar öyle zor bir durum yaşadım ki ne yapacağımı bilemedim - tüm planlar ve umutlar çöktü. Çok acıdı. Sadece umutsuzlukla boğuldum. O zaman, durumu tamamen anlayana kadar, hayatımla ne yapacağıma ve beni çevreleyenlerle nasıl ilişki kuracağıma karar vermemeye karar verdim. Mantık diye bir bilim olduğunu kitaplardan biliyordum. O zaman, sonuçlarımın doğru olması için ustalaşmam gerektiğine karar verdim. Yaşam durumunun karmaşıklığı ve acısı benim için beni teşvik eden güçtü, sorularıma cevapları sadece mantıkta değil, aynı zamanda bir sürü başka bilimde aramaya zorladı. Şimdi hepsi geçmişte kaldı. Bunu sana neden anlattım? Evet, sadece beni neyin motive ettiğini anlamanı istedim, beni mantık öğrenmeye zorladı. Tabiri caizse, benim bir istisna olmadığımı ve benim de bu disiplini baskı altında çalışmak zorunda kaldığımı bir örnekle gösterdi. Gerçek şu ki, üniversitede değil, kendi başınıza okumak.

 
nikost :


bence basitleştirilebilir

for(int i = 0; i < limit; i++)
{
// Seçenek üç_v1

yüksek=iMA(NULL,0,nokta,0,MODE_EMA,PRICE_HIGH,i);
düşük=iMA(BOŞ,0,nokta,0,MODE_EMA,PRICE_LOW,i);
atr=yüksek-düşük;
MaTDn[i] = düşük - atr;
MaTUp[i] = yüksek + atr;
}


Oluşturmayı orijinal koddaki gibi tutmaya çalıştım. ATP farklı değerlendirilir. İki göstergeyi karşılaştırırsanız, farkı kendiniz göreceksiniz.