Sayfa 142/594 İlkİlk ... 4292132140141142143144152192242 ... SonSon
Arama sonucu : 4746 madde; 1,129 - 1,136 arası.

Konu: İDEAL veri terminalinde /Sistem/İndikatör/Robot

  1. #1129
    Duhul
    Feb 2017
    İkamet
    Eskişehir / Duhul 2007
    Yaş
    53
    Gönderi
    4,631
     Alıntı Originally Posted by ferit618 Yazıyı Oku
    Aşağıdaki indikatörde bir yerde hata yapmışım. YArdımcı olacaklara şimdiden teşekkürler....
    Kod:
    var V = Sistem.GrafikVerileri ;
    var C = Sistem.GrafikFiyatOku(V, "Kapanis") ;
    var H = Sistem.GrafikFiyatOku(V, "Yuksek") ;
    var L = Sistem.GrafikFiyatOku(V, "Dusuk") ;
    var Bars = V.Count;
    
    var a = Sistem.MA(C,"Exp",20);
    var b = Sistem.MA(C,"Exp",100);
    
    var k = Sistem.Liste(0);
    
    for (int i = 100; i < Bars ; i++)
    {
    k[i] =  (a[i]-b[i]) / (a[i]+b[i]) ;
    }
    
    var m =Sistem.MA(k,"Exp",8);
    
    Sistem.Cizgiler[0].Deger = k; Sistem.Cizgiler[0].Aciklama="voli";
    Sistem.Cizgiler[1].Deger = m; Sistem.Cizgiler[1].Aciklama="average";
    Sistem.Cizgiler[2].Deger = Sistem.Liste(0); Sistem.Cizgiler[2].Aciklama="Axis";
    Bear_Bull
    @BearBull26

  2. @stradivarius ve @Bear_Bull yardımlarınız için teşekkürler indikatörü çalıştırdım.Bir sorum daha olacak.Ortalamayı ağırlıklı olarak alabilirmiyiz?

  3.  Alıntı Originally Posted by ferit618 Yazıyı Oku
    @stradivarius ve @Bear_Bull yardımlarınız için teşekkürler indikatörü çalıştırdım.Bir sorum daha olacak.Ortalamayı ağırlıklı olarak alabilirmiyiz?
    bear bull ustad donguyu 100 den baslatarak isi garantiye almis. "exp" seklinde cikmis.

    idealde agirlikli diye direk gecmeyen buyuk ihtimal ayni isi yapan "Weighted" var . "Exp" yerine "Weighted" yazarsaniz ona gore hesapliyor.
    bang bang you shot me down..

  4. Merhaba,

    CCI İndicatörünün hesaplama örneğini bilen var mı.Buradaki veriler ile örneklendirebilecek olursa sevinirim.

    Tarih Saat Açılış Yüksek Düşük Kapanış
    17.05.2017 11:57:00 17.84 17.85 17.83 17.83
    17.05.2017 11:58:00 17.83 17.84 17.83 17.84
    17.05.2017 11:59:00 17.86 17.86 17.82 17.82
    17.05.2017 12:00:00 17.82 17.82 17.82 17.82
    17.05.2017 12:01:00 17.84 17.84 17.84 17.84
    17.05.2017 12:02:00 17.83 17.83 17.83 17.83
    17.05.2017 12:03:00 17.83 17.85 17.83 17.85
    17.05.2017 12:04:00 17.83 17.83 17.83 17.83
    17.05.2017 12:05:00 17.85 17.85 17.85 17.85
    17.05.2017 12:06:00 17.84 17.85 17.83 17.85
    17.05.2017 12:07:00 17.84 17.85 17.84 17.85
    17.05.2017 12:08:00 17.85 17.85 17.85 17.85
    17.05.2017 12:09:00 17.84 17.85 17.84 17.85
    17.05.2017 12:10:00 17.86 17.86 17.85 17.85
    17.05.2017 12:11:00 17.85 17.87 17.85 17.85
    17.05.2017 12:12:00 17.85 17.85 17.85 17.85
    17.05.2017 12:14:00 17.87 17.88 17.87 17.87
    17.05.2017 12:15:00 17.87 17.88 17.86 17.86
    17.05.2017 12:16:00 17.85 17.85 17.85 17.85

  5.  Alıntı Originally Posted by Bear_Bull Yazıyı Oku
    https://www.bilgeyatirimci.com/2014/...e-yorumlanisi/

    Admin tarafından 01 Nisan 2014 tarihinde yayınlandı.
    Admin

    Donald Lambert’ in mal piyasaları için geliştirdiği indikatördür. Yapısı itibariyle hisse senetleri piyasasında da kullanılabilmektedir. Esasen trend indikatörüdür. Bir çok analist aşırı alım satım indikatörü olarakta kullanmaktadır.

    Çok hareketli bir yapıya sahip olup, kısa vadeli, özellikle yatay gelişen piyasalarda trend başlangıçlarını yakalayabilmektedir. Cci hesaplanırken belirtilen periyotta en düşük en yüksek ve kapanış değerinin toplanıp üçe bölünmesi ile oluşturulan bir ortalama yardımıyla hesaplanmaktadır. Fiyatların hareketli ortalamadan ne kadar uzaklaştığını gösterir.

    Referans değerleri +100 ve -100 olup, küçük fiyat hareketlerinde bile bu referans değerlerine ulaşabilmektedir. Periyot değeri, analistin bakış açısı, vadesi, uyguladığı stratejiye göre değişsede genel olarak 14 periyot kullanılır.

    Al-Sat sinyalleri için

    1-CCI üzerine eklenen hareketli ortalaması ile olan kesişimleri.

    2-Referans değerleri ile olan kesişimlerden alınan al-sat sinyalleri.

    3-Fiyat grafiği ile indikatör arasındaki pozitif ve negatif uyuşmazlıklar kullanılmaktadır.

    1980 li yıllarda Donald Lambert emtia piyasalarında işlem yaparken, fiyatların belirli periyotlarda belirli hareketler sergilediğini gözlemleyerek, cci indikatörü için bir alt yapı oluşturmuştur. Lambert’e göre işlem yaptığı piyasalarda fiyatlar 22 günlük bir periyotla hareket ettiği için ve bu hareketin yarısı yükseliş diğer yarısıda düşüşle geçtiği için, Lambert cci göstergesini 11 günlük kullanmayı tercih etmiştir. Unutulmamalıdır ki, traderin vadesi, izlediği grafik periyodu, analizini, stratejisini ve kullanmış olduğu teknik analiz yöntemlerini etkilemektedir. Bu yüzden her analistin indikatörleri hazmettikten sonra, deneyimlerine dayanarak periyot seçimi yapmasını tavsiye ederiz.

    CCI ve ortalamasından gelen al-sat sinyalleri;

    ORT AL-SAT

    Yukarıda görülen grafikte mavi çizgi 14 periyotluk CCI indikatörünü göstermektedir. Kırmızı çizgide 14 periyotluk CCI’nin 5 periyotluk basit hareketli ortalamasıdır. grafikte görüldüğü üzere yeşil çizginin kırmızı çizgi üzerine geçtiği noktalarda alım yapılması ve altına geçtiği noktalarda satım yapılması halinde grafikte görülen düşüş ve yükselişlerin ne ölçüde yakalandığı görülüyor.

    Referans değerleri ile olan kesişimlerden alınan al-sat sinyalleri;

    al-sat

    CCI indikatöründe alt referans -100 ve üst referans +100 seviyesidir. Aşırı satım bölgesi -100 altı olarak ifade edilirken, aşırı alım bölgesi +100 üzeri olarak gösterilmektedir. yukarıdaki grafikte -100 ve +100 değerlerinin CCI tarafından aşağı yada yukarı kırılması ile alım-satım yapıldığında fiyatta görülen düşüş ve yükselişlerin ne ölçüde gerçekleştiği görülmektedir.

    Uyuşmazlıklardan gelen al sat sinyalleri;
    Fiyatta görülen ikinci dip, birinci dibe göre daha aşağıda oluşurken, indikatörde tekabül eden 2.dip grafikte görüldüğü gibi daha yukarıda oluşmaktadır. Fiyat yeni bir dip yaparken fiyata eşlik etmeyerek, düşüşü desteklemeyen CCI, fiyatta bir düzeltme olacağı sinyalini verir. Uyuşmazlıkların, teknik analizde kullanılan kuvvetli al sat sinyallerinden biri olduğu varsayılır. Aşağıdaki grafikte pozitif uyuşmazlık gösterilmiştir.

    eregl poz uyuş

    Pozitif uyuşmazlıklar alım yönlü pozisyonlar için grafik diplerinde aranır. Satış için ise grafik tepelerinde negatif uyuşmazlıklara bakılır. Negatif uyuşmazlık örneği aşağıda gösterilmiştir.

    ccı sat uyuşmazlık

    Fiyat bir önceki tepeden daha yüksek bir tepe yaparken CCI, bir önceki tepesine ulaşamıyorsa bu durum kısa bir süre sonra fiyatın trend değiştirerek düşüş göstereceğine işaret eder. Yani öyle olduğu varsayılır. Zira uyuşmazlıklardan sonra düşüşün yada yükselişin gerçekleşmediği görülebilmektedir. İndikatörlerden gelen sinyaller diğer indikatörler tarafından desteklendiğinde, teknik analizin diğer kuralları tarafından teyid edildiğinde bir anlam taşır.

    ccı sat asels

    Ali Erkan Tanacıoğlu
    Araştırma Uzman Yrd.
    Gedik Yatırım

    Bear_Bull Ustad

    Bu sayfaları buldum fakat burada anlatılanları tam olarak uygulayamadım.Bu neden ile sonucu bulamadım.

    Bu sayfada genel olarak CCI anlatılıyor.Benim istediğim CCI nasıl yaratılıyor.

    Bu linkte formül var fakat elimdeki veriler ile CCI sonuç üretemedim.

    http://teknikanalizsanati.com/cci.aspx

  6.  Alıntı Originally Posted by serseri26 Yazıyı Oku
    Bear_Bull Ustad

    Bu sayfaları buldum fakat burada anlatılanları tam olarak uygulayamadım.Bu neden ile sonucu bulamadım.

    Bu sayfada genel olarak CCI anlatılıyor.Benim istediğim CCI nasıl yaratılıyor.

    Bu linkte formül var fakat elimdeki veriler ile CCI sonuç üretemedim.

    http://teknikanalizsanati.com/cci.aspx
    Merhaba CCI hesaplama ile ilgili gerçek veriler kullanılarak yapılan örneği buldum.Excel formatinda.
    İlgilenen olursa link aşağıdadır.

    http://stockcharts.com/school/doku.p...nnel_index_cci

  7.  Alıntı Originally Posted by serseri26 Yazıyı Oku
    Merhaba CCI hesaplama ile ilgili gerçek veriler kullanılarak yapılan örneği buldum.Excel formatinda.
    İlgilenen olursa link aşağıdadır.

    http://stockcharts.com/school/doku.p...nnel_index_cci
    Merhaba, geçmişte forumda paylaşılan csharp hesaplaması da bu şekilde.


    public List<float> CCI(int Periyot, List<float> Kapanis, List<float> Yuksek, List<float> Dusuk)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    List<float> tipikfiyat = new List<float>(new float[Kapanis.Count]);
    for (int i = 0; i < Kapanis.Count; i++)
    tipikfiyat[i] = (Kapanis[i] + Yuksek[i] + Dusuk[i]) / 3f;
    List<float> orttipikfiyat = new List<float>(MA(Periyot, tipikfiyat));
    var ortsapma = new List<float>(new float[Kapanis.Count]);
    for (int i = 0; i < Kapanis.Count; i++)
    {
    if (i >= Periyot)
    {
    float sapma = 0f;
    for (int j = i - Periyot + 1; j <= i; j++)
    sapma += Math.Abs(orttipikfiyat[i] - tipikfiyat[j]);
    ortsapma[i] = sapma / Periyot;
    liste[i] = (tipikfiyat[i] - orttipikfiyat[i]) / (0.015f * ortsapma[i]);
    }
    }
    }
    return liste;
    }
    catch { return liste; }
    }


    Bunlarda Lib.cs içinden çağrılabilen diğerleri:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    namespace ideal
    {
    public class Lib
    {
    public List<float> EnYuksek(List<float> Yuksek)
    {
    var liste = new List<float>(new float[Yuksek.Count]);
    try
    {
    if (Yuksek.Count > 0)
    {
    liste[0] = Yuksek[0];
    for (int i = 1; i < Yuksek.Count; i++)
    {
    if (Yuksek[i] > liste[i - 1]) liste[i] = Yuksek[i]; else liste[i] = liste[i - 1];
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> EnDusuk(List<float> Dusuk)
    {
    var liste = new List<float>(new float[Dusuk.Count]);
    try
    {
    if (Dusuk.Count > 0)
    {
    liste[0] = Dusuk[0];
    for (int i = 1; i < Dusuk.Count; i++)
    {
    if (Dusuk[i] < liste[i - 1]) liste[i] = Dusuk[i]; else liste[i] = liste[i - 1];
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> XBarEnYuksek(int Periyot, List<float> Yuksek)
    {
    var liste = new List<float>(new float[Yuksek.Count]);
    try
    {
    if (Yuksek.Count > Periyot)
    {
    liste[0] = Yuksek[0];
    for (int i = 1; i < Yuksek.Count; i++)
    {
    float maks = Yuksek[i];
    if (i > Periyot)
    {
    for (int j = i - Periyot + 1; j < i; j++)
    if (Yuksek[j] > maks) maks = Yuksek[j];
    }
    else if (i > 0)
    {
    for (int j = 0; j <= i; j++)
    if (Yuksek[j] > maks) maks = Yuksek[j];
    }
    liste[i] = maks;
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> XBarEnDusuk(int Periyot, List<float> Dusuk)
    {
    var liste = new List<float>(new float[Dusuk.Count]);
    try
    {
    if (Dusuk.Count > Periyot)
    {
    liste[0] = Dusuk[0];
    for (int i = 1; i < Dusuk.Count; i++)
    {
    float min = Dusuk[i];
    if (i > Periyot)
    {
    for (int j = i - Periyot + 1; j < i; j++)
    if (Dusuk[j] < min) min = Dusuk[j];
    }
    else if (i > 0)
    {
    for (int j = 0; j <= i; j++)
    if (Dusuk[j] < min) min = Dusuk[j];
    }
    liste[i] = min;
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> MA(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    liste[0] = Kapanis[0];
    for (int i = 1; i < Kapanis.Count; i++)
    {
    if (i > Periyot)
    {
    liste[i] = Kapanis.Skip(i - Periyot + 1).Take(Periyot).Average();
    }
    else if (i > 0)
    {
    liste[i] = Kapanis.Take(i + 1).Average();
    }
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> EMA(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    liste[0] = Kapanis[0];
    float carpan = 2f / (Periyot + 1f);
    for (int i = 1; i < Kapanis.Count; i++)
    {
    if (i >= Periyot)
    liste[i] = liste[i - 1] + carpan * (Kapanis[i] - liste[i - 1]);
    else if (i > 0)
    for (int j = 1; j <= i; j++)
    liste[i] = liste[j - 1] + carpan * (Kapanis[j] - liste[j - 1]);
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> DEMA(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    List<float> ema = new List<float>(EMA(Periyot, Kapanis));
    List<float> ema2 = new List<float>(EMA(Periyot, ema));
    liste[0] = Kapanis[0];
    for (int i = 1; i < Kapanis.Count; i++)
    liste[i] = 2f * ema[i] - ema2[i];
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> TEMA(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    List<float> ema = new List<float>(EMA(Periyot, Kapanis));
    List<float> ema2 = new List<float>(EMA(Periyot, ema));
    List<float> ema3 = new List<float>(EMA(Periyot, ema2));
    liste[0] = Kapanis[0];
    for (int i = 1; i < Kapanis.Count; i++)
    liste[i] = (3f * ema[i] - 3f * ema2[i]) + ema3[i];
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> RSI(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    var kazanclar = new List<float>(new float[Kapanis.Count]);
    var kayiplar = new List<float>(new float[Kapanis.Count]);
    var ortkazanclar = new List<float>(new float[Kapanis.Count]);
    var ortkayiplar = new List<float>(new float[Kapanis.Count]);
    var RS = new List<float>(new float[Kapanis.Count]);
    for (int i = 1; i < Kapanis.Count; i++)
    {
    float fark = Kapanis[i] - Kapanis[i - 1];
    if (fark >= 0) kazanclar[i] = fark; else kayiplar[i] = Math.Abs(fark);
    if (i == Periyot)
    {
    ortkazanclar[i] = kazanclar.Take(Periyot).Average();
    ortkayiplar[i] = kayiplar.Take(Periyot).Average();
    }
    else if (i > Periyot)
    {
    ortkazanclar[i] = ((ortkazanclar[i - 1] * (Periyot - 1)) + kazanclar[i]) / Periyot;
    ortkayiplar[i] = ((ortkayiplar[i - 1] * (Periyot - 1)) + kayiplar[i]) / Periyot;
    }
    RS[i] = ortkazanclar[i] / ortkayiplar[i];
    if (float.IsNaN(RS[i])) RS[i] = 0;
    if (RS[i] == 0) liste[i] = 0f; else liste[i] = 100f - (100f / (1f + RS[i]));
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> CCI(int Periyot, List<float> Kapanis, List<float> Yuksek, List<float> Dusuk)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    List<float> tipikfiyat = new List<float>(new float[Kapanis.Count]);
    for (int i = 0; i < Kapanis.Count; i++)
    tipikfiyat[i] = (Kapanis[i] + Yuksek[i] + Dusuk[i]) / 3f;
    List<float> orttipikfiyat = new List<float>(MA(Periyot, tipikfiyat));
    var ortsapma = new List<float>(new float[Kapanis.Count]);
    for (int i = 0; i < Kapanis.Count; i++)
    {
    if (i >= Periyot)
    {
    float sapma = 0f;
    for (int j = i - Periyot + 1; j <= i; j++)
    sapma += Math.Abs(orttipikfiyat[i] - tipikfiyat[j]);
    ortsapma[i] = sapma / Periyot;
    liste[i] = (tipikfiyat[i] - orttipikfiyat[i]) / (0.015f * ortsapma[i]);
    }
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public MACDCiz MACD(int KisaP, int UzunP, int SinyalP, List<float> Kapanis)
    {
    MACDCiz liste = new MACDCiz();
    liste.MacdCiz = new List<float>(new float[Kapanis.Count]);
    liste.SinyalCiz = new List<float>(new float[Kapanis.Count]);
    liste.HistCiz = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > UzunP)
    {
    var kisaema = EMA(KisaP, Kapanis);
    var uzunema = EMA(UzunP, Kapanis);
    for (int i = 0; i < Kapanis.Count; i++)
    liste.MacdCiz[i] = kisaema[i] - uzunema[i];
    liste.SinyalCiz = EMA(SinyalP, liste.MacdCiz);
    for (int i = 0; i < Kapanis.Count; i++)
    liste.HistCiz[i] = liste.MacdCiz[i] - liste.SinyalCiz[i];
    }
    return liste;
    }
    catch { return liste; }
    }
    public struct MACDCiz
    {
    public List<float> MacdCiz { get; set; }
    public List<float> SinyalCiz { get; set; }
    public List<float> HistCiz { get; set; }
    }
    public List<float> MOM(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    for (int i = 0; i < Kapanis.Count; i++)
    if (i > Periyot)
    liste[i] = 100f + ((Kapanis[i] - Kapanis[i - Periyot]) / Kapanis[i - Periyot]) * 100f;
    }
    return liste;
    }
    catch { return liste; }
    }
    public STOCiz STO(int PeriyotK, int PeriyotD, List<float> Kapanis, List<float> Yuksek, List<float> Dusuk)
    {
    STOCiz liste = new STOCiz();
    liste.KCiz = new List<float>(new float[Kapanis.Count]);
    liste.DCiz = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > PeriyotK)
    {
    var Kendusuk = XBarEnDusuk(PeriyotK, Dusuk);
    var Kenyuksek = XBarEnYuksek(PeriyotK, Yuksek);
    for (int i = 0; i < Kapanis.Count; i++)
    if (i > PeriyotK)
    liste.KCiz[i] = ((Kapanis[i] - Kendusuk[i]) / (Kenyuksek[i] - Kendusuk[i])) * 100f; //fast stoK **sabit
    liste.DCiz = EMA(PeriyotD, liste.KCiz); //fast stoD
    //liste.KCiz = EMA(PeriyotD, liste.KCiz); //slow stoK
    //liste.DCiz = MA(PeriyotD, liste.KCiz); //slow stoD
    }
    return liste;
    }
    catch { return liste; }
    }
    public struct STOCiz
    {
    public List<float> KCiz { get; set; }
    public List<float> DCiz { get; set; }
    }
    }
    }

  8.  Alıntı Originally Posted by Orhan AKDOĞAN Yazıyı Oku
    Merhaba, geçmişte forumda paylaşılan csharp hesaplaması da bu şekilde.


    public List<float> CCI(int Periyot, List<float> Kapanis, List<float> Yuksek, List<float> Dusuk)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    List<float> tipikfiyat = new List<float>(new float[Kapanis.Count]);
    for (int i = 0; i < Kapanis.Count; i++)
    tipikfiyat[i] = (Kapanis[i] + Yuksek[i] + Dusuk[i]) / 3f;
    List<float> orttipikfiyat = new List<float>(MA(Periyot, tipikfiyat));
    var ortsapma = new List<float>(new float[Kapanis.Count]);
    for (int i = 0; i < Kapanis.Count; i++)
    {
    if (i >= Periyot)
    {
    float sapma = 0f;
    for (int j = i - Periyot + 1; j <= i; j++)
    sapma += Math.Abs(orttipikfiyat[i] - tipikfiyat[j]);
    ortsapma[i] = sapma / Periyot;
    liste[i] = (tipikfiyat[i] - orttipikfiyat[i]) / (0.015f * ortsapma[i]);
    }
    }
    }
    return liste;
    }
    catch { return liste; }
    }


    Bunlarda Lib.cs içinden çağrılabilen diğerleri:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    namespace ideal
    {
    public class Lib
    {
    public List<float> EnYuksek(List<float> Yuksek)
    {
    var liste = new List<float>(new float[Yuksek.Count]);
    try
    {
    if (Yuksek.Count > 0)
    {
    liste[0] = Yuksek[0];
    for (int i = 1; i < Yuksek.Count; i++)
    {
    if (Yuksek[i] > liste[i - 1]) liste[i] = Yuksek[i]; else liste[i] = liste[i - 1];
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> EnDusuk(List<float> Dusuk)
    {
    var liste = new List<float>(new float[Dusuk.Count]);
    try
    {
    if (Dusuk.Count > 0)
    {
    liste[0] = Dusuk[0];
    for (int i = 1; i < Dusuk.Count; i++)
    {
    if (Dusuk[i] < liste[i - 1]) liste[i] = Dusuk[i]; else liste[i] = liste[i - 1];
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> XBarEnYuksek(int Periyot, List<float> Yuksek)
    {
    var liste = new List<float>(new float[Yuksek.Count]);
    try
    {
    if (Yuksek.Count > Periyot)
    {
    liste[0] = Yuksek[0];
    for (int i = 1; i < Yuksek.Count; i++)
    {
    float maks = Yuksek[i];
    if (i > Periyot)
    {
    for (int j = i - Periyot + 1; j < i; j++)
    if (Yuksek[j] > maks) maks = Yuksek[j];
    }
    else if (i > 0)
    {
    for (int j = 0; j <= i; j++)
    if (Yuksek[j] > maks) maks = Yuksek[j];
    }
    liste[i] = maks;
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> XBarEnDusuk(int Periyot, List<float> Dusuk)
    {
    var liste = new List<float>(new float[Dusuk.Count]);
    try
    {
    if (Dusuk.Count > Periyot)
    {
    liste[0] = Dusuk[0];
    for (int i = 1; i < Dusuk.Count; i++)
    {
    float min = Dusuk[i];
    if (i > Periyot)
    {
    for (int j = i - Periyot + 1; j < i; j++)
    if (Dusuk[j] < min) min = Dusuk[j];
    }
    else if (i > 0)
    {
    for (int j = 0; j <= i; j++)
    if (Dusuk[j] < min) min = Dusuk[j];
    }
    liste[i] = min;
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> MA(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    liste[0] = Kapanis[0];
    for (int i = 1; i < Kapanis.Count; i++)
    {
    if (i > Periyot)
    {
    liste[i] = Kapanis.Skip(i - Periyot + 1).Take(Periyot).Average();
    }
    else if (i > 0)
    {
    liste[i] = Kapanis.Take(i + 1).Average();
    }
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> EMA(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    liste[0] = Kapanis[0];
    float carpan = 2f / (Periyot + 1f);
    for (int i = 1; i < Kapanis.Count; i++)
    {
    if (i >= Periyot)
    liste[i] = liste[i - 1] + carpan * (Kapanis[i] - liste[i - 1]);
    else if (i > 0)
    for (int j = 1; j <= i; j++)
    liste[i] = liste[j - 1] + carpan * (Kapanis[j] - liste[j - 1]);
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> DEMA(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    List<float> ema = new List<float>(EMA(Periyot, Kapanis));
    List<float> ema2 = new List<float>(EMA(Periyot, ema));
    liste[0] = Kapanis[0];
    for (int i = 1; i < Kapanis.Count; i++)
    liste[i] = 2f * ema[i] - ema2[i];
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> TEMA(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    List<float> ema = new List<float>(EMA(Periyot, Kapanis));
    List<float> ema2 = new List<float>(EMA(Periyot, ema));
    List<float> ema3 = new List<float>(EMA(Periyot, ema2));
    liste[0] = Kapanis[0];
    for (int i = 1; i < Kapanis.Count; i++)
    liste[i] = (3f * ema[i] - 3f * ema2[i]) + ema3[i];
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> RSI(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    var kazanclar = new List<float>(new float[Kapanis.Count]);
    var kayiplar = new List<float>(new float[Kapanis.Count]);
    var ortkazanclar = new List<float>(new float[Kapanis.Count]);
    var ortkayiplar = new List<float>(new float[Kapanis.Count]);
    var RS = new List<float>(new float[Kapanis.Count]);
    for (int i = 1; i < Kapanis.Count; i++)
    {
    float fark = Kapanis[i] - Kapanis[i - 1];
    if (fark >= 0) kazanclar[i] = fark; else kayiplar[i] = Math.Abs(fark);
    if (i == Periyot)
    {
    ortkazanclar[i] = kazanclar.Take(Periyot).Average();
    ortkayiplar[i] = kayiplar.Take(Periyot).Average();
    }
    else if (i > Periyot)
    {
    ortkazanclar[i] = ((ortkazanclar[i - 1] * (Periyot - 1)) + kazanclar[i]) / Periyot;
    ortkayiplar[i] = ((ortkayiplar[i - 1] * (Periyot - 1)) + kayiplar[i]) / Periyot;
    }
    RS[i] = ortkazanclar[i] / ortkayiplar[i];
    if (float.IsNaN(RS[i])) RS[i] = 0;
    if (RS[i] == 0) liste[i] = 0f; else liste[i] = 100f - (100f / (1f + RS[i]));
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public List<float> CCI(int Periyot, List<float> Kapanis, List<float> Yuksek, List<float> Dusuk)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    List<float> tipikfiyat = new List<float>(new float[Kapanis.Count]);
    for (int i = 0; i < Kapanis.Count; i++)
    tipikfiyat[i] = (Kapanis[i] + Yuksek[i] + Dusuk[i]) / 3f;
    List<float> orttipikfiyat = new List<float>(MA(Periyot, tipikfiyat));
    var ortsapma = new List<float>(new float[Kapanis.Count]);
    for (int i = 0; i < Kapanis.Count; i++)
    {
    if (i >= Periyot)
    {
    float sapma = 0f;
    for (int j = i - Periyot + 1; j <= i; j++)
    sapma += Math.Abs(orttipikfiyat[i] - tipikfiyat[j]);
    ortsapma[i] = sapma / Periyot;
    liste[i] = (tipikfiyat[i] - orttipikfiyat[i]) / (0.015f * ortsapma[i]);
    }
    }
    }
    return liste;
    }
    catch { return liste; }
    }
    public MACDCiz MACD(int KisaP, int UzunP, int SinyalP, List<float> Kapanis)
    {
    MACDCiz liste = new MACDCiz();
    liste.MacdCiz = new List<float>(new float[Kapanis.Count]);
    liste.SinyalCiz = new List<float>(new float[Kapanis.Count]);
    liste.HistCiz = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > UzunP)
    {
    var kisaema = EMA(KisaP, Kapanis);
    var uzunema = EMA(UzunP, Kapanis);
    for (int i = 0; i < Kapanis.Count; i++)
    liste.MacdCiz[i] = kisaema[i] - uzunema[i];
    liste.SinyalCiz = EMA(SinyalP, liste.MacdCiz);
    for (int i = 0; i < Kapanis.Count; i++)
    liste.HistCiz[i] = liste.MacdCiz[i] - liste.SinyalCiz[i];
    }
    return liste;
    }
    catch { return liste; }
    }
    public struct MACDCiz
    {
    public List<float> MacdCiz { get; set; }
    public List<float> SinyalCiz { get; set; }
    public List<float> HistCiz { get; set; }
    }
    public List<float> MOM(int Periyot, List<float> Kapanis)
    {
    var liste = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > Periyot)
    {
    for (int i = 0; i < Kapanis.Count; i++)
    if (i > Periyot)
    liste[i] = 100f + ((Kapanis[i] - Kapanis[i - Periyot]) / Kapanis[i - Periyot]) * 100f;
    }
    return liste;
    }
    catch { return liste; }
    }
    public STOCiz STO(int PeriyotK, int PeriyotD, List<float> Kapanis, List<float> Yuksek, List<float> Dusuk)
    {
    STOCiz liste = new STOCiz();
    liste.KCiz = new List<float>(new float[Kapanis.Count]);
    liste.DCiz = new List<float>(new float[Kapanis.Count]);
    try
    {
    if (Kapanis.Count > PeriyotK)
    {
    var Kendusuk = XBarEnDusuk(PeriyotK, Dusuk);
    var Kenyuksek = XBarEnYuksek(PeriyotK, Yuksek);
    for (int i = 0; i < Kapanis.Count; i++)
    if (i > PeriyotK)
    liste.KCiz[i] = ((Kapanis[i] - Kendusuk[i]) / (Kenyuksek[i] - Kendusuk[i])) * 100f; //fast stoK **sabit
    liste.DCiz = EMA(PeriyotD, liste.KCiz); //fast stoD
    //liste.KCiz = EMA(PeriyotD, liste.KCiz); //slow stoK
    //liste.DCiz = MA(PeriyotD, liste.KCiz); //slow stoD
    }
    return liste;
    }
    catch { return liste; }
    }
    public struct STOCiz
    {
    public List<float> KCiz { get; set; }
    public List<float> DCiz { get; set; }
    }
    }
    }
    Teşekkür ederim Sayın.Orhan

Sayfa 142/594 İlkİlk ... 4292132140141142143144152192242 ... SonSon

Yer İmleri

Yer İmleri

Gönderi Kuralları

  • Yeni konu açamazsınız
  • Konulara cevap yazamazsınız
  • Yazılara ek gönderemezsiniz
  • Yazılarınızı değiştiremezsiniz
  •