Python, Fibonacci yasalarını ortaya koyuyor, çiftçilerin hisse senetlerini analiz etmesine nasıl yardımcı olabilir? | Teknik Başlıklar

Yazar | Yuanxiao Master

Sorumlu Editör | Hu Weiwei

Fibonacci Dizisinin Analizi

Herkesin Fibonacci dizisine aşina olduğuna inanıyorum. Böyle bir diziyi ifade eder: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 , 233 ............ Bu dizideki sır nedir? Fibonacci dizisinin analizine aşağıdaki üç sorudan başlıyoruz:

(1) Fibonacci dizisi nasıl ortaya çıktı?

Fibonacci dizisi, İtalyan ortaçağ matematikçisi Fibonacci (Fibonacci, AD 1 175 -1240) 1202 tarihli "Liber Abaci" (Liber Abaci) adlı kitabında tavşan yetiştiriciliğini örnek olarak kullandı.

Kitapta ilginç bir soru soruluyor: yeni doğmuş bir çift tavşanın bir ayda büyük bir tavşana dönüşebileceğini ve bir ayda bir çift tavşanın doğabileceğini ve ondan sonra her ay bir çift küçük tavşan doğacağını varsayalım. Tavşanlar, bir yılda ölüm yok, peki bir çift yeni doğmuş tavşandan bir yılda kaç çift tavşan çoğaltılabilir?

Varsayılan koşullara göre hesaplandığında, ilk ayda bir çift tavşan, ikinci ayda büyük bir tavşan, üçüncü ayda bir çift tavşan, toplam iki çift tavşan var ...

Fibonacci dizisinin gizli yasalarını bilmeden, aşağıdaki şekilde gösterildiği gibi tavşanların bir yılda üremesini manuel olarak hesapladık:

Bu üreme yasası ile elde edilen aylık tavşan sayısı Fibonacci dizisini oluşturur, bu nedenle buna "tavşan dizisi" de denir.

18. yüzyılın ortalarında meydana gelen Avustralya tavşan felaketinin öyküsü, gerçek "Tavşan Dizisi" nin şaşırtıcı büyüme oranını yansıtıyor.

O zamanlar İngiliz sömürgeciler, av hobilerini tatmin etmek için Avrupalı yabani tavşanlarını Avustralya'ya getirdi. Avustralya'nın ılık iklimi ve zengin otlakları tavşanlar için iyi yaşam koşulları sağladı. Ayrıca, Avustralya yırtıcı kuşların ve gelinciklerin doğal düşmanlarından yoksundu, bu yüzden tavşanlar başladı. Fibonacci dizisinin büyümesi, o sırada Avustralya ekolojisi ciddi şekilde zarar gördü ve ardından tavşanlar ve insanlar arasındaki savaş başladı ... Sonra, Fibonacci dizisinin sırlarını yavaş yavaş ortaya çıkaralım.

(2) Fibonacci dizisinin yasası nedir?

Bu diziden, ilk elemanın 0, ikinci elemanın 1 ve sonraki her elemanın önceki iki elemanın toplamı olduğu anlaşılabilir. Matematiksel olarak, aşağıda gösterildiği gibi Fibonacci dizisinin üretim yasasını tanımlamak için yinelemeli yöntemi kullanabiliriz:

  • N = 0 olduğunda, F (n) = 0

  • N = 1 olduğunda, F (n) = 1

  • Ne zaman > 1'de, F (n) = F (n-1) + F (n-2)

(3) Fibonacci dizisinin büyüsü nedir?

Fibonacci dizisinde pek çok sihirli özellik vardır.Fibonacci dizisinde iki bitişik sayının bölümünü de bulabiliriz. Mevcut değer bir sonraki değere bölündüğünde aşağıdaki sonuç elde edilebilir:

0 ÷ 1 = 0

1 ÷ 1 = 1

1 ÷ 2 = 0.5

2 ÷ 3 = 0.6666 ...

3 ÷ 5 = 0.6

5 ÷ 8 = 0.625

8 ÷ 13 = 0.615 ...

13 ÷ 21 = 0.619 ...

21 ÷ 34 = 0.617 ...

34 ÷ 55 = 0.618 ...

55 ÷ 89 = 0.617 ...

89 ÷ 144 = 0.618 ...

144 ÷ 233 = 0.618 ...

...

21'i 34'e bölerek dizinin sonsuzluğuna ulaşarak bölümün 0,618'e eğilimli irrasyonel bir sayı olduğunu fark ettik!

Sırayla, ikinci değer önceki değere bölündüğünde, sonuç aşağıdaki gibidir:

1 ÷ 0 = 0

1 ÷ 1 = 1

2 ÷ 1 = 2

3 ÷ 2 = 1.5

5 ÷ 3 = 1.67

8 ÷ 5 = 1.6

13 ÷ 8 = 1.625

21 ÷ 13 = 1.615 ...

34 ÷ 21 = 1.619 ...

55 ÷ 34 = 1.618 ...

89 ÷ 55 = 1.618 ...

144 ÷ 89 = 1.618 ...

Buna karşılık, 34'ü 21'e bölerek dizi sonsuz olana kadar bölüm 1.618'e eğilimli irrasyonel bir sayıdır! 0.618 ve 1.618, şaşırtıcı bir şekilde birbirine karşılık gelir ve 0.618'in değeri ünlü "altın bölüm" oranıdır! Bu nedenle Fibonacci dizisine altın bölüm dizisi de denir.

Aslında altın oran, Fibonacci dizisinden çok daha önce önerilmişti. Doğru parçasının toplam uzunluğunun 1 olduğunu varsayarak, doğru parçası üzerinde altın bir bölüm noktası bulun ve doğru parçasını A ve B olmak üzere iki kısma bölün. Aşağıdaki şekilde gösterildiği gibi, B'nin uzunluğu x ve A'nın uzunluğu 1-x'tir:

A uzunluğunun B'ye oranı, B'nin tam uzunluğa oranına eşittir.Bu oran altın bölümdür. Oran ilişkisi aşağıdaki gibidir:

Bu formülü dönüştürün ve x'in değerini aşağıdaki gibi bulun:

Yani B'nin tam uzunluğa oranı 0.618 ve B'nin A uzunluğuna oranı 1.618. Aslında, aynı doğru parçasının altın oranına atıfta bulunuyorlar.

Python doğrulama dizisinin büyüsü

Sıkıcı ve sıkıcı hesaplama işi Python tarafından yapılmalıdır! Yukarıda belirtildiği gibi, Fibonacci dizisinin üretme kuralı özyinelemeli yöntemle tanımlanır, bu nedenle Python özyinelemeli işlevi ile dizi oluşturmak daha sezgisel ve anlaşılması daha kolaydır. Kod aşağıdaki gibidir:

def Fibonacci_Generate (n):

eğer n < 0:

print ('Giriş değeri hatadır')

dönüş -1

elif n == 0: 0 döndür

elif n == 1: dönüş 1

Başka:

Fibonacci_Generate (n-1) + Fibonacci_Generate (n-2) döndür

Aşağıdaki şekilde gösterildiği gibi sırasıyla 10 ve 30 değer içeren Fibonacci dizisi büyüme eğrisini çizin.

Fibonacci dizisi büyüme eğrisini çizme kodu aşağıdaki gibidir:

def Fibonacci_sequence (n):

fibs_list =

i için np.arange (0, n): fibs_list.append (Fibonacci_Generate (i))

plt.plot (np.arange (n), fibs_list, c = 'g', işaretleyici = 'o', ls = 'kesikli')

plt.title ("Fibonacci dizisi: {}". format (n))

plt.show

Şekildeki Fibonacci dizisinin büyüme formundan, dizinin başlangıçta yavaş büyüdüğü ve ardından taban olarak 1.618 ile üssel bir büyüme hızı sergilediği görülmektedir.

Bir dizi sayı oluşturmak için özyinelemeli bir işlev kullanmanın avantajları basit tanım ve net mantık olmasına rağmen, dezavantaj, uygulama verimliliğinin son derece düşük olması ve derin özyinelemeli çağrıların yığın taşmasına neden olmasıdır.

Özyinelemeli fonksiyonun 30 Fibonacci dizisi oluşturması için geçen süreyi test etmek için Python yerleşik zaman modülünü kullanıyoruz. Time.perf_counter işlevi, sistemin çalışma süresini döndürmek için kodun başına ve sonuna eklenir.Geri dönüş değerinin temel noktası tanımsız olduğundan, yalnızca ardışık çağrıların sonuçları arasındaki fark etkili kod ek yük süresidir. Ölçtüğümüz yürütme süresi 2,918 saniyeydi. Kod aşağıdaki gibidir:

start = time.perf_counter

i için np.arange (0, n): fibs_list.append (Fibonacci_Generate (i))

geçen = (time.perf_counter-start)

print ("Kullanılan süre:", geçen) #Kullanılan süre: 2.91 79 80852

Teoride, tüm özyinelemeli fonksiyonlar döngüler halinde yazılabilir Döngülerin mantığı özyineleme kadar net olmasa da, döngülerin yürütme verimliliğindeki avantajları açıktır Döngülere geçtikten sonra ölçülen yürütme süresi sadece 1'dir. 6.4 4 mikrosaniye. Kod aşağıdaki gibidir:

# Döngüyü kullan

def Fibonacci_Generate_Loop (n):

eğer n < 0:

print ('Giriş değeri hatadır')

dönüş -1

elif n == 0: dönüş

elif n == 1: dönüş

Başka:

result_list =

a, b = 0, 1

aralıktaki i için (2, n + 1):

a, b = b, a + b

result_list.append (b)

sonuc_listesini döndür

Döngü yöntemini kullanarak Fibonacci dizisini oluştururken, her seferinde elde edilen değeri saklamak için bir liste kullanılmalıdır.Kodu zarif hale getirmek için, üreteci kullanarak onu optimize edebiliriz. Sözde jeneratör aslında yineleyici protokolünü dahili olarak destekleyen özel bir yineleyicidir.

Python, üreteçleri uygulamak için iki şekilde üreteç işlevleri ve üreteç ifadeleri sağlar.Her istek bir sonuç döndürür.Bir seferde bir sonuç listesi oluşturmaya gerek kalmadan bellek alanından tasarruf sağlar. Burada, düzenli bir def ifadesi olarak yazılan oluşturucuyu uygulamak için, bir seferde bir sonuç döndürmek için verim ifadesini kullanarak, her sonuç arasında durumlarını askıya alıp devam ettirerek, jeneratör işlevi yöntemini kullanıyoruz. Kod aşağıdaki gibidir:

# Yinelemeleri kullanın

def Fibonacci_Generate_iter (n):

eğer n < 0:

print ('Giriş değeri hatadır')

dönüş -1

elif n == 0: dönüş

elif n == 1: dönüş

Başka:

a, b = 0, 1

vermek

verim b

aralıktaki i için (2, n + 1):

a, b = b, a + b

verim b

Yukarıda ayrıca, Fibonacci dizisinin önceki değeri bir sonraki değere bölündüğünde, dizi büyüdükçe bölüm değerinin 0,618'e eğilimli irrasyonel bir sayı olduğu belirtilmiştir. Ardından, Python ile doğrulayalım. Uygulama kodu aşağıdaki gibidir:

def Fibonacci_divide (seq):

div_list =

i için np.arange (0, len (seq) -1):

div_list.append (seq / seq)

plt.plot (np.arange (len (div_list)), div_list, c = 'g', işaretleyici = 'o', ls = 'kesikli')

plt.title ("Fibonacci Fn / Fn + 1: {}". format (div_list))

plt.show

Fibonacci_divide (liste (Fibonacci_Generate_iter (100)))

Aşağıdaki şekilde gösterildiği gibi, Fibonacci dizisinin ilk 100 Fn / Fn + 1 döneminin sonuçlarını alıyoruz. Sekizinci terimin dokuzuncu terime oranından başlayarak sonraki değerlerin 0,618 civarında olma eğiliminde olduğu şekilden görülebilmektedir.

Bu nedenle, Fibonacci dizisinin yaklaşık bir üstel büyüme biçimi olduğu bir kez daha doğrulanmıştır.Bu sorunu daha net bir şekilde açıklamak için matematikçi Binet tarafından oluşturulan Fibonacci dizisinin genel formülüne aşağıdaki gibi bakalım:

Genel formülle hesaplanan Fn / Fn + 1 sonucu aşağıda gösterildiği gibi hala 0,618'dir:

Altın Oran Analizi Hisse Senedi Fiyatı

Fibonacci dizisi doğanın temel bir özelliğidir, özellikle dizideki altın oran resim, heykel, mimari gibi birçok alanda karşımıza çıkar.İnsanlar altın oranın en mükemmel olduğu konusunda hemfikirdir.

Örneğin "Kolu Kırık Venüs" heykeli 2.02 metre boyunda, göbek deliği altın bölümde, göbek üstü kısmı ile göbek deliğinin altı arasındaki oran 0.618'e yakın. Altın oranın, insanların bilinçaltında hareket eden nesnel bir yasa olduğu, güçlü bir doğal niteliğe sahip olduğu ve tabii ki borsa analizine de dahil edildiği görülmektedir: Hisse senedi fiyatları her zaman yüksek ve düşük işlem yasasını izlemiştir.

Hisse senedi fiyatı trendi tersine döndüğünde, 0.382 ve 0.618 altın oranında geçici direnç veya destekle karşılaşma olasılığı çok yüksektir. Bu nedenle, altın oran, tüccarlara yardımcı olacak yukarı / aşağı trendindeki baskıyı ve desteği bulmak için kullanılır. "Giriş" ve "çıkış" zamanlamasını daha iyi değerlendirin.

Ardından, hisse senedi fiyatının destek ve baskı seviyelerini bulmak için örnek olarak "Yeni Umut" hisse senedinin geçmiş verilerini alın. Ocak 2019'dan Haziran 2019'a kadar "Yeni Umut" trend çizelgesi aşağıdaki gibidir:

Genel olarak, hisse senedi fiyatı bir adımda yükselmez ve çoğu spiral bir yükselişi benimser; bu, yeni bir yükselişten önce, momentum kazanmak için yüzen cipsleri yıkamak için bir geri çekilme dalgası olması gerektiği ve geri çekmenin büyüklüğünün altınla tam olarak aynı olduğu anlamına gelir. Bölünme oranı 0.618'dir.

"New Hope" hisse senedi fiyatı altı aylık dönemde yükseliş eğilimi gösterdi. Ortada birkaç kısa düzelme oldu. Altın oranı bir sonraki geri çekmenin pozisyonunu hesaplamak için kullanıyoruz. Hesaplama formülü (maksimum değer-minimum değer) * altın oran + minimum değerdir.Uygulama yöntemi aşağıdaki gibidir:

Fib_max = df_stockload.Close.max

Fib_maxid = df_stockload.index.get_loc (df_stockload.Close.idxmax)

Fib_min = df_stockload.Close.min

Fib_minid = df_stockload.index.get_loc (df_stockload.Close.idxmin)

Fib_382 = (Fib_max-Fib_min) * 0.382 + Fib_min

Fib_618 = (Fib_max-Fib_min) * 0.618 + Fib_min

Daha sonra, destek / direnç seviyesini değerlendirmek için altın oranın geçerliliğini doğrulayın Aşağıdaki şekilde gösterildiği gibi, ilk tur düzelme tam olarak 11.61 olan 0.618 altın oran konumunda.

sonuç olarak

Bu makale, Fibonacci dizisinin büyülü özelliklerini tanıtmak için bir uygulama senaryosu olarak hisse senedi fiyatı analizini kullanır, ancak Fibonacci altın bölümü yatırımcıların destek veya direnç seviyelerini değerlendirme başarı oranını artırmalarına yardımcı olabilir.

Bununla birlikte, diğer teknik analiz araçları gibi, belirli sınırlamaları da vardır.Örneğin, sadece bant yüksek noktası ile bant düşük noktası arasındaki farkı kıyaslama olarak kullanır ve büyük dalgalanmalar veya uzun vadeli dalgalanmalarla piyasada güvenilirdir. İyileştirilmiş yöntem hisse senedi fiyatlarını sıra değerine göre sıralayabilir ve sıra değerini altın oran oranına karşılık gelen konumda alabilir, böylece güvenilirlik daha yüksek olacaktır.

Yazar hakkında: Finansal nicel ticaret alanında yapay zeka ve büyük veri analizinin uygulanmasını teşvik etmeye adanmış kıdemli bir Python mühendisi olan Master Yuanxiao. hepiniz hoşgeldiniz Dikkat Kişisel kamu hesabım "Master Yuanxiao sizi Python ile kantitatif ticarete götürür".

Son

Yapay zekanın 60 yıllık teknoloji tarihi
önceki
Ödüllü Red Devils 3 bir altın daha ekliyor, oyunun cep telefonu sadece 2799 yuan
Sonraki
5G 2.0'daki en son trendler
İlk 5G ticari şehir grubu Ağustos ayında 5G tarife paketlerini başlatacak. Bakalım şehriniz var mı
Nitekim raporu: Listenin en başında talep edilen iki tür yapay zeka yeteneği var, neden?
Yıldızlar ve amatörler yemek yiyor ve aynı anda yaşıyor
Baidu sürücüsüz arabaları bugün uygun mu?
Yeni enerji sübvansiyonlarının geçiş dönemi sona erdi, otomobil şirketleri bu felaketten sağ çıkabilecek mi?
18 parça kod, sizi makine öğrenimi için 18 temel etkileşimli araca götürür
Dünyanın 1 Numarasına dönün! Lenovo'nun küresel pazar payı yine zirveye ulaştı
TIOBE Haziran Programlama Dili Sıralaması: Perl, Python'un aşırı duygusallığının kurbanı mı oldu?
"BigBang" "News" 190622 "Bamboo Horse" tatlı animasyon incelemesi, GDYB HEART
Fransız aksesuar üreticisi Nintendo Switch Mini'nin fotoğraflarını yayınladı
* ST Yidanın yaşam ve ölüm durumu: gelir yok ama 400 milyon hissedar kaybı sadece 50.000 çalışan 2
To Top