Bir de 2 gündür çözemediğim bir sorun var. Yatay trend çizdiğimde sağ tarafa fiyat skalasına sıkışıyor. Ben sağdan sola tüm grafikte görünmesini istiyorum. Bütün ayarlarla oynadım ancak çözemedim. Nedir bunun çözümü?
Printable View
Bir de 2 gündür çözemediğim bir sorun var. Yatay trend çizdiğimde sağ tarafa fiyat skalasına sıkışıyor. Ben sağdan sola tüm grafikte görünmesini istiyorum. Bütün ayarlarla oynadım ancak çözemedim. Nedir bunun çözümü?
Çok tşk ederim
1) MACD-AS dediğiniz, MACD HISTOGRAMI oluyormuş anladığıma göre zaten var gömülü indikatörlerde
2 ve 3 ü birleştirdim, siz 2 ayrı indikatöre çevirebilirsiniz :) Bana ADXR çok gerekli gelmedi açıkçası, ya da ADX e ortalama da atsanız benzeri olur, amacı göstergeyi yumuşatmak..
PHP Code:
//indikatör penceresinde göster ve Diğer kısmı seçili olsun
//ayarlarda 0-7 arasını yani 8 tane aktif et, panel->2
//alt parantezlerdeki sayılar periyot..
var DP = Sistem.DirectionalIndicatorPlus(14);
var DM = Sistem.DirectionalIndicatorMinus(14);
var fark=Sistem.ListeFark(DP,DM);
var ADX = Sistem.ADX(14);
var RDX = Sistem.ADX(8); //adxr için 2. adx
var ADXR = Sistem.ListeOrta(ADX, RDX);
Sistem.Cizgiler[0].Deger = DP;
Sistem.Cizgiler[1].Deger = DM;
Sistem.Cizgiler[2].Deger = ADX;
Sistem.Cizgiler[3].Deger = ADXR;
Sistem.Cizgiler[4].Deger = Sistem.Liste(25F);
Sistem.Cizgiler[5].Deger = fark; //stil dikey seç
Sistem.Cizgiler[6].Deger = Sistem.MA(fark, "Exp", 9);
Sistem.Cizgiler[7].Deger = Sistem.Liste(0);
-------
MACD AS Şu olabilirmi
var Veriler = Sistem.GrafikVerileri;
var MACD = Sistem.MACD (Veriler, 12, 26);
var AVR = Sistem.MA(MACD, "Exp", 9);
var ASP = Sistem.Liste(0);
var MACD_ASP = Sistem.Liste(0);
for (int i= 1; i<Sistem.BarSayisi; i++)
ASP[i] = MACD[i] - AVR[i];
MACD_ASP = Sistem.MA(ASP, "Exp", 9);
Sistem.Cizgiler[0].Deger = MACD;
Sistem.Cizgiler[1].Deger = AVR;
Sistem.Cizgiler[2].Deger = MACD_ASP;
Merhaba, vade geçişlerindeki gaplar getiri eğrilerimde büyük hatalara sebep oluyor. Sistemlerimi vade sonu flate geçirip, sonraki vade açılışında aynı yönden başlatmak istiyorum.
Biraz araştırdım ama örnek kod bulamadım. Varsa eğer aktif kontratın son gününü, saatini çeken bir fonksiyon da işimi görebilir.
Çift bir ayda ise ve ayın tatil olmayan son günü ise vadenin son günüdür.
PHP Code:
var V = Sistem.GrafikVerileri ;
for(int i = 10; i < V.Count; i++)
{
bool VadeSonu=false;
DateTime AyinSonGunu= new DateTime(V[i].Date.AddMonths(1).Year, V[i].Date.AddMonths(1).Month , 1).AddDays(-1);
if (
//Çift bir ayda ise
(V[i].Month % 2) == 0
//ayın tatil olmayan son günü ise
&& V[i].Date>= (AyinSonGunu.DayOfWeek == DayOfWeek.Sunday ? AyinSonGunu.AddDays(-2) : AyinSonGunu.DayOfWeek == DayOfWeek.Saturday ? AyinSonGunu.AddDays(-1) : AyinSonGunu)
) VadeSonu=true; else VadeSonu=false;
}
Çok çok tşk ederim emek verip uğraşmışsınız. Elinize emeğinize sağlık. Söylediğiniz gibi MACD histogram benim bahsettiğim MACDAS ile aynı göstergeymiş. Ancak diğer yazdığınız kod çok karışık sonuçlar verdi. Sadece DIOSC göstergesinin formülünü çözmeyi ben beceremedim açıkçası. Hep bir hata verdi. Acaba sadece DIOSC u nasıl yazabilirim.
Bu indikatorler mi ?
Kod:
var DIP = Sistem.DirectionalIndicatorMinus(100);
var DIM = Sistem.DirectionalIndicatorPlus(100);
var DI =Sistem.DirectionalMovement(100);
Sistem.Cizgiler[0].Deger = DIP;
Sistem.Cizgiler[1].Deger = DIM;
Sistem.Cizgiler[2].Deger = DI;
https://i.hizliresim.com/XVDH1P.png
@hector ve @3c1a ikinize de teşekkür ederim. Yanlız benim uzun zamandır çözemediğim farklı bi problemden dolayı bu kodları kullanamıyorum.
bars[i].Month satırındaki gibi month ve türevi tarih fonksiyonlarını çalıştıramıyorum. Tarih fonksiyonları tanımlanmamış gibi hata veriyor, eklediğim tüm referansları da resimde gösterdim, sizinkilerden eksik bi referans var mı kontrol edebilir misiniz rica etsem.
Kodu idealin içinden çalıştırmaya çalıştığımda da paneldeki hatayı alıyorum. Direk idealde mi bi hata var acaba benim ?
https://i.hizliresim.com/8rtgx5.png
Kapanışların 20 günlük hareketli ortalamaya olan uzaklığını yüzde olarak nasıl yazdırabilirim?
Yardımcı olursanız sevinirim.....
Teşekkürler sn ozmen
buraya yapıştıralım da bulunsun
Belki benim gibi bir acemi ihtiyaç duyar
var C = Sistem.GrafikFiyatSec("Kapanis");
var MA = Sistem.MA(10, "Simple", "Kapanis");
var FARK = Sistem.Liste(0);
for (int i=1; i < Sistem.BarSayisi; i++)
{
FARK[i]=(C[i]-MA[i])*100/MA[i];
}
Sistem.Cizgiler[0].Deger = FARK;
Sistem.Cizgiler[1].Deger = MA;
Formülle uğraşmayın hocam, görmek istemediğiniz çizgilerin tiklerini alt resimdeki gibi kaldırın sadece..
Onları ayırmak çok basit ama kurcalarken öğrenmeye başlangıç yaparsınız diye ayırmadım açıkçası :)
İlla sadece Histogram ve Ema olsun derseniz, alttaki 6 satır ve panelde 3 tik işinizi görür:
var DP = Sistem.DirectionalIndicatorPlus(14);
var DM = Sistem.DirectionalIndicatorMinus(14);
var fark=Sistem.ListeFark(DP,DM);
Sistem.Cizgiler[0].Deger = fark; //stil dikey seç
Sistem.Cizgiler[1].Deger = Sistem.MA(fark, "Exp", 9);
Sistem.Cizgiler[2].Deger = Sistem.Liste(0);
https://pbs.twimg.com/media/EV1FqFVW...png&name=small
https://pbs.twimg.com/media/EV1HhhTW...jpg&name=large
ZigZag Dip Tepe (Zigzag alım satıma uygun olmayan bir indikatör ancak bazen şekilleri görmek için faydalı oluyor. Normalde dip tepe şeklinde çizmiyor)
https://drive.google.com/file/d/1c1C...O7H3nNIcS/view
Hull Hareketli Ortalama (Tradingview de popüler bir ortalama. Ağırlıklı(weighted) ho türevi ama çok daha hızlı tepki veriyor..Daha önce de paylaşmıştım burada)
https://drive.google.com/file/d/1A_0...hJ1VpRbp5/view
https://pbs.twimg.com/media/EV6bQIYW...pg&name=medium
https://pbs.twimg.com/media/EV6VzuLW...pg&name=medium
Copy-paste yapmıştım zaten, Date yazımı atlanmış, şuan çözüldü bu problem teşekkürler hızlı geri dönüşünüz için. Yalnız gönderdiğiniz kod vadenin son gününün 9.30 başlangıç mumunda kapatıyor sistemi.
Biraz geliştirmeye çalıştım. Vadenin son günü son mumda sistemi flate geçirebildim fakat yeni vadenin ilk mumunun açılış fiyatından önceki vadenin son yönünde devam ettiremedim sistemi.
Ek 24786
Burada ilk if bloğunun ilk satırında " Sistem.Yon[i] = Sistem.Yon[i-2]; " bir problem varmış gibi. [i-1] değil [i-10] da alsam Flat yönünde devam ediyor. "Sistem.Yon[i] = "S" veya "A" şeklinde elle yön belirttiğimde kod çalışıyor.PHP Code:
var V = Sistem.GrafikVerileri;
var SonYon = "F";
bool VadeSonu = false;
TimeSpan timeSpan1 = new TimeSpan(09, 30, 00);
TimeSpan timeSpan2 = new TimeSpan(18,14,00);
for (int i = 1; i < Sistem.BarSayisi; i++)
{
if ( V[i-1].Date.Month!=V[i].Date.Month && V[i].Date.Month%2==1 && V[i].Date.TimeOfDay == timeSpan1)
//Yeni vade başı saat 9.30 ise 2 bar önceki yönden devam et
{
Sistem.Yon[i] = Sistem.Yon[i-2];
SonYon = Sistem.Yon[i];
continue;
}
if(AL SAT KOŞUL)
{
....
}
DateTime AyinSonGunu = new DateTime(V[i].Date.AddMonths(1).Year,
V[i].Date.AddMonths(1).Month,1).AddDays(-1);
// Çift bir ayda ise && ayın tatil olmayan son günü ise
if ( (V[i].Date.Month % 2) == 0 &&
V[i].Date >= (AyinSonGunu.DayOfWeek == DayOfWeek.Sunday ? AyinSonGunu.AddDays(-2) :
AyinSonGunu.DayOfWeek == DayOfWeek.Saturday ? AyinSonGunu.AddDays(-1) : AyinSonGunu))
VadeSonu = true;
else VadeSonu = false;
if (VadeSonu && V[i].Date.TimeOfDay==timeSpan2) //Vadenin son günüyse ve saat 18.14 ise flat
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
}
Vadenin ilk mumunda açılış fiyatından son yönde devam ettirmek istiyorum sistemi, yardımcı olabilirseniz sevinirim.
Date ilk kodda eksikmiş yeni gördüm, yazarken uçmuş olmalı:)
aşağıdaki satır yanlış çünkü Sistem.Yon bir liste ve listenin her elamanı "dolu" gibi düşünmeyin! çünkü geçmişte hangi elemanı set etmişseniz o doludur yani böyle bir kullanım mümkün değil. özetle Sistem.Yon[i-2] birer null :)
Sistem.Yon[i] = Sistem.Yon[i-2];
bunun yerine
sonyon atadığınız yerlerde oncekisonyon diye bir değişken yapıp öncekini saklayın ve bunu kullanın.
Merhaba,
Büyük ihtimalle daha önce konuşuldu fakat uzun süre aramama rağmen bir post bulamadım.
Robot üzerinden emir iyileştirmek ya da iptal etmek mümkün mü acaba?
öyle bir fonksiyon maalesef yok
kendinize excell dosya hazırlayıp,
excell dosyayı sürekli güncelleyip robotunuza o hisseleri tanıtıp işlem yapmamasını sağlayabilirsiniz.
,
https://www.borsaistanbul.com/urunle...kas-uygulamasi
İLGİLİ DOSYALAR
https://www.borsaistanbul.com/docs/d...pdf?sfvrsn=220
yüzeysel veride bildiğim kadarı ile yoktu.
aşağıdaki kod direk çalışan ideal sistem kodudur. Bununla brüt takas bilgisini çekebilirsiniz.
Bir hissenin brüt takas uygulamasında olup olmadığını ve eğer brüt takasta ise;
Başlangıç ve bitiş tarihlerini, kredi yasağı, açık yasağı, internet yasağı, tek fiyat uygulaması var mı yok mu ve hisse pazarını okuyabilirsiniz.
Pratikte her döngüde webden veri çekmeyi tavsiye etmem. günde bir kez veri çekip yazan yardımcı bir robot yazıp bu kodlardan faydalanarak ideal tablosuna veya dosyaya yazabilirsiniz. asıl robotda ise yazdığınız yerden okuyabilirsiniz.
PHP Code:
//Brüt Takas listesini gedik yatırım sayfasından oku.
string webData = System.Text.Encoding.UTF8.GetString((new System.Net.WebClient()).DownloadData("https://www.gedik.com/bilgi-egitimler/tedbirli-hisseler"));
string pattern = "(?<=\\t\\t\\t<p>)(.+?)(?=</p>)";
System.Text.RegularExpressions.MatchCollection matches = System.Text.RegularExpressions.Regex.Matches(webData, pattern);
var BrutTakasList = new Dictionary< string, List<string> >();
for (int i = 9; i < matches.Count; i+=9)
{
List<string> HisseDetayBilgileri = new List<string>();
HisseDetayBilgileri.Add(matches[i+1].Value.ToString()); // 0-Başlangıç Tarihi
HisseDetayBilgileri.Add(matches[i+2].Value.ToString()); // 1-Bitiş Tarihi
HisseDetayBilgileri.Add(matches[i+3].Value.ToString()); // 2-Brüt Takas
HisseDetayBilgileri.Add(matches[i+4].Value.ToString()); // 3-Kredi Yasağı
HisseDetayBilgileri.Add(matches[i+5].Value.ToString()); // 4-Açık Satış Yasağı
HisseDetayBilgileri.Add(matches[i+6].Value.ToString()); // 5-İnternet Yasağı
HisseDetayBilgileri.Add(matches[i+7].Value.ToString()); // 6-Tek Fiyat Uygulaması
HisseDetayBilgileri.Add(matches[i+8].Value.ToString()); // 7-Hisse Pazar
BrutTakasList[matches[i].Value.ToString()] = HisseDetayBilgileri;
}
//Örnek Kullanım
string TemizAd= Sistem.Sembol.Replace("IMKBH'","");
if( BrutTakasList.ContainsKey(TemizAd))
Sistem.Mesaj(TemizAd+": Bu Hissede Brüt Takas Uygulaması bulunuyor! Bitiş Tarihi:"+BrutTakasList[TemizAd][1] +" Tek Fiyat Uygulaması: "+BrutTakasList[TemizAd][6] );
else
Sistem.Mesaj(TemizAd+": Alınır abi alınır..");
Teşekkür derim kendime göre uyarladım.Çok işime yarayacak.Ayrıca Sezai beye'de sormuştum.Böyle bir veri varmış.Buraya ekliyorum isteyen olursa kullanabilir.Eğer o sembol brütte ise 1 dönüyor değilse sıfır.
var Sembol = "IMKBH'GARAN";
var Veriler = Sistem.YuzeyselVeriOku(Sembol);
var Bruttakas = Veriler.FI182;
Sistem.Mesaj(Bruttakas.ToString());
https://hizliresim.com/0IAcK4
kolay gelsin, son fiyatın moving average ı yukarı kestiğinde alması ve son fiyatın ma yı aşağı kestiğinde satması için nasıl bir robot kodu yazabilirim şimdiden teşekkür ederim
Sıfırdan başlayanlar için twittırda bir arkadaş kısa videolar serisi çekmiş. Faydalı oldugu için eklemek istedim.
https://twitter.com/MossinNagant/sta...60684564996097
Selam arkadaşlar
Robota göre satış verilen bir sistemde eğer satış fiyatı eğer zarardaysa satmasın kalsın. Eğer karda ise satsın şeklinde bir kodu nasıl ilave edebiliriz?
Saygılar....
Eski topicte çok fazla filtre örnegi paylaşılmış. Bu filtreler fonksiyon olarak idealin içinde olmayan indikatörler.
Ben bu filtreleri kendi sistemimin içinde idealin kendi editöründe (VS studyoda degil) yazarak kullanmak istiyorum.
Ben bu filteleri sistemimin içinde kullanmak istedigimde fikren kullanımı şöyle aklıma geliyor.
Filtrenin açık formülünü( hesaplanmasını) bir degişkene atayıp . Bu degişkeni al-sat sistemimin içinde && bağlayıp öyle mi filtreleme yapacağım.
Sistem icerisine islem basina kar zarar takibi yapmanizi saglayacak bazi basit hesaplamalar ekleyip bunu sinyal sartlarina "&&" ile bir filtre gibi baglayabilirsiniz. Kar zarar hesabi ve buna bagli sinyal uretimine eski forumdan bir ornek:
PHP Code:
//%5 KAR görürse kar al, %2 zarar görürse zarar durdur örneğidir.
// kapanış fiyatlarını oku
var C = Sistem.GrafikFiyatSec("Kapanis");
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(C, "Exp", 50);
var MA2 = Sistem.MA(C, "Exp", 100);
// strateji
var SonYon = "";
double Fiyat = 0;
for (int i = 1; i<Sistem.BarSayisi; i++)
{
if (MA1[i-1] < MA2[i-1] && MA1[i] >= MA2[i] && SonYon != "A") // AL
{
Sistem.Yon[i] = "A"; // alış
SonYon = Sistem.Yon[i];
Fiyat = C[i];
}
else if (MA1[i-1] > MA2[i-1] && MA1[i] <= MA2[i] && SonYon != "S") // SAT
{
Sistem.Yon[i] = "S"; // satış
SonYon = Sistem.Yon[i];
Fiyat = C[i];
}
else if (SonYon == "A" && C[i] > Fiyat * 1.10) // % 5 kar realizasyonu
{
Sistem.Yon[i] = "F"; // flat
SonYon = Sistem.Yon[i];
}
else if (SonYon == "A" && C[i] < Fiyat * 0.94) // % 2 stop
{
Sistem.Yon[i] = "F"; // flat
SonYon = Sistem.Yon[i];
}
else if (SonYon == "S" && C[i] < Fiyat * 0.90) // % 5 kar realizasyonu
{
Sistem.Yon[i] = "F"; // flat
SonYon = Sistem.Yon[i];
}
else if (SonYon == "S" && C[i] > Fiyat * 1.04) // % 2 stop
{
Sistem.Yon[i] = "F"; // flat
SonYon = Sistem.Yon[i];
}
}
// hesaplanan verileri çizgilere aktar ve açıklama ekle
Sistem.Cizgiler[0].Deger = MA1;
Sistem.Cizgiler[1].Deger = MA2;
Evet, sistem kodu icerisinde hesaplama yapip sonuclarini A, B, C vs. gibi degiskenlere atayabilir ve bunlari degisik kombinasyonlarla "&&" veya "||" kullanarak bir araya getirip al/sat/flat sartlarina baglabilirsiniz.
A, B ve C nin sadece 1 veya 0 sonucu urettigini farz edelim.
Tumunun "1" oldugu durum filtrelenmek istenirse:
...A == 1 && B == 1 && C==1..
A'nin 1 ve B veya C den herhangi birininin 1 oldugu durum filtrelenmek istenirse:
....A == 1 && (B ==1 || C ==1)...
Teşekür ederim 3c1a her zamanki gibi yardımcı oldun.
RSI , CCI gibi aşırı alım satım indikatörleri dedigimiz indikatörlerin üstüne MA atarak bir sistem yaptıgımızı düşünelim.
Elliot ,Awasome , RSI 50 seviyesi gibi belli bir seviyeyi kesimine göre sistem yaptıgımızı düşünelim.
Bu sistemler MA kesişimi yada TOMA - MA kesişimi gibi klasik trend sistemi mi olur?
Trende dayanmayan sistem yapılarına örnekler verir misiniz?
"Mean Reversion":
RSI asiri satimdayken AL, asiri alim bolgesindeyken SAT buna ornek olabilir. Ya da MA(100) un XX puan altinda AL, MA(100) un YY puan ustunde SAT gibi.
RSI ustune MA atip klasik bicimde asagi yukari kesisimlerinden sinyal aramak denedigim bir yontem degil. Ancak bu yontemle olusturulan sistemler yine trend katogorisine girer diyebilirim. "Mean Reversion" bir sistem trend takip sistemlerinin aksine MA(30) MA(100) u yukari keserken SAT, asagi keserken AL uretme pesinde olur.
Momentum Trade stratejilerini araştırabilirsin, en basit örneği fiyatın sıkıştığı bbandwithin belli bir seviyenin altına daraldığı koşullarda, momentum indikatörleri aracılığıyla ilk sert kırılım yönüne pozisyona girip momentum indikatörünün düşük yaptığı ilk barda veya daha yavaş olan masını aşağı kestiği anda karını realize edip çıkıyorsun. Scalping diye de geçer. Bu strateji özellikle kripto altcoin piyasasında çok iyi işliyor, bu stratejiyle kurduğu botu binance borsasında çalıştıran bi arkadaşım güzel kar ediyor. Bist tarafında özellikle sosyal medyada pazarlanıp tavana giden sığ hisselerde güzel çalışacağını düşünüyorum. Bu yöntem destek, direnç, trend kırılımlarına da adapte edilebilir.
Pair Trade yöntemine de bakabilirsin. Yüksek korelasyonlu, beraber hareket eden bir hisse çiftini alıp günlükte birbiri cinsinden yaz, örneğin YKBNK/ISCTR. Bu grafiğin üstüne 3 standart sapmalı bollinger at. YKBNK/ISCTR rasyosu üst bantın dışına çıkarsa aynı hacimde YKBNK short, ISCTR long, rasyo bollinger mediana yaklaştığında iki pozisyon da kapanır, alt bantı kırdığında da tam tersi. Bu da bir nevi mean reversion aslında. Farklı varyasyonları da var.
Merhaba,
Öncelikle emek veren, bilgi paylaşan herkese cok tesekkurler.
MACD ve RSI ile bir SORGU yapmak istiyorum.
Sorgumu yazmaya calıstım. Ama calısmadı.,Hatamı bulmamda yardımcı olursanız cok sevınırım. Şimdiden cok tesekkurler.
var RSI = Sistem.RSI(14);
var MACD = Sistem.MACD(12, 26);
var AVR = Sistem.MA(MACD, "Exp", 9);
var SonAVR = AVR[Sistem.BarSayisi-1];
var SonRSI = RSI[Sistem.BarSayisi-1];
var SonMACD = MACD[Sistem.BarSayisi-1];
// filtrele
if (AVR < SonAVR && MACD > SonMACD && AVR <0 && MACD < 0 && RSI > SonRSI && RSI < 65 )
{
if (AVR < SonAVR && MACD > SonMACD && AVR <0 && MACD < 0 && RSI > SonRSI && RSI < 65 )
Sistem.SorguAciklama = "Alım";
Sistem.SorguEkle();
}
var V = Sistem.GrafikVerileri;
var SonBarNo = Sistem.BarSayisi - 1;
float Param = 50;
var RSI = Sistem.RSI(13);
float Sayac = 0f;
for (int i = SonBarNo; i > 0; i--)
{
if ( RSI[i] < 50)
Sayac++;
else
break;
}
if (Sayac > 0)
{
Sistem.SorguAciklama = "RSI " + Sayac.ToString() + " bar " + Param.ToString() + " altında DİKKAT " ;
Sistem.SorguEkle();
}
arkadaşlar merhaba , yukarıdaki sorgu formulu şunu yapıyor
sorgu sonucunda
RSI 23 bardır 50 nin altında
RSI 12 bardır 50 nin altında
RSI 8 bardır 50 nin altında
RSI 5 bardır 50 nin altında GİBİ
yapmak istediğim şey
aynen RSI nın 50 nin üstünde iken sonuçlarını ve sayacınıda görmek istiyorum
bir de
RSI nın 50 seviyesinin üstünde iken gördüğü en yüksek rsi değerini
RSI nın 50 seviyesinin altında iken gördüğü en yüksek rsi değerini
de
sorguda görmek istiyorum
yardımcı olabilecek arkadaşa şimdiden teşekkür ederim
Tarama yapma konusunda eğitim almak mümkün mü bu konuda tavsiyeniz olur mu arkadaşlar
Örnek olması açısından benzerini yazdım, kendinize göre düzenleyebilirsiniz..
https://pbs.twimg.com/media/EW9DYCoX...png&name=smallPHP Code:
var i = Sistem.BarSayisi-1; //son bar
var C = Sistem.GrafikFiyatSec("Kapanis");
var RSI = Sistem.RSI(14); // rsi değeri
var aRSI = Sistem.MA(RSI, "Exp", 9); //rsi ortalaması
var MACD = Sistem.MACD(12, 26);
var aMACD = Sistem.MA(MACD, "Exp", 9);
// filtrele
//macd ve rsi ortalamalarını yukarı kesmiş ve rsi 50 den büyük hisseler
if ( MACD[i] > aMACD[i] && RSI[i] > aRSI[i] && RSI[i]>50 )
{
//BAŞLIKLAR
Sistem.SorguAciklamaGenislik = 100;
Sistem.SorguBaslik[0] = "Kapanış";
Sistem.SorguOndalik[0] = 2;
Sistem.SorguBaslik[1] = "RSI";
Sistem.SorguOndalik[1] = 1;
Sistem.SorguBaslik[2] = "ortRSI";
Sistem.SorguOndalik[2] = 1;
Sistem.SorguBaslik[3] = "MACD";
Sistem.SorguBaslik[4] = "ortMACD";
Sistem.SorguBaslik[5] = "%(son 10 bar)";
Sistem.SorguOndalik[5] = 1;
///DEĞERLER
Sistem.SorguDeger[0] = C[i];
Sistem.SorguDeger[1] = RSI[i];
Sistem.SorguDeger[2] = aRSI[i];
Sistem.SorguDeger[3] = MACD[i];
Sistem.SorguDeger[4] = aMACD[i];
Sistem.SorguDeger[5] = (100*(C[i]-C[i-10])/C[i]);//Sistem.PriceRocPercent(10);
//Açıklama kısmındaki bilgiyi ve renkleri RSI değerine göre değiştirelim
var bilgi = "";
if ( RSI[i]<65 ) {
bilgi = "ALIM";
Sistem.SorguZeminRengi = Color.Green;
Sistem.SorguYaziRengi = Color.White;
} else if ( RSI[i]>70 ) {
bilgi = "AŞIRI ALIM";
Sistem.SorguZeminRengi = Color.Orange;
Sistem.SorguYaziRengi = Color.White;
}
if ( RSI[i]>80 ) {
bilgi = "Çok Aşırı :)) ";
Sistem.SorguZeminRengi = Color.Red;
Sistem.SorguYaziRengi = Color.White;
}
//rsi 65 den küçükse SorguDeger[1] zemini yeşil olsun
if (RSI[i] < 65) Sistem.SorguHucreZeminRengi[1] = Color.Green;
//ama rsi 80 den büyükse SorguDeger[1] zemini yeşil olsun
else if (RSI[i] > 80) Sistem.SorguHucreZeminRengi[1] = Color.Red;
//zemin, sorgu değer 5 > 0 ise yeşil, değilse kırmızı olsun..
if (Sistem.SorguDeger[5] > 0) Sistem.SorguHucreZeminRengi[5] = Color.Green;
else Sistem.SorguHucreZeminRengi[5] = Color.Red;
//sorgu değer 5 yazı rengini değiştirelim
Sistem.SorguHucreYaziRengi[5] = Color.Silver;
Sistem.SorguAciklama = bilgi;
Sistem.SorguEkle();
}
iyi akşamlar arkadaşlar, yardımcı olacak fikirlerini paylaşacak arkadaşlara şimdiden teşekkür ederim. :bravo:
yapmak istediğim şey, yüzeysel verileri kullanarak tahtada gerçekleşen emir sayısı ile ilgili bir gösterge yazmak, basit bir gösterge :vk: günlük işlem adedi bölü gerçekleşen emir sayısı aşağıdaki kodu yazdım ama sonuç alamadım :vk: nerede hata yapıyorum :(
var Veriler = Sistem.YuzeyselVeri();
var E = Sistem.Liste(0);
for (int i=1; i<Sistem.BarSayisi; i++)
E[i] = Veriler.LastSize[i];
var D = Sistem.Liste(0);
for (int i=1; i<Sistem.BarSayisi; i++)
D[i] = E.Count[i];
var K = Sistem.Liste(0);
for (int i=1; i<Sistem.BarSayisi; i++)
K[i] = Veriler.LotGun[i];
var x = Sistem.Liste(0);
for (int i=1; i<Sistem.BarSayisi; i++)
x[i] = K/D;
// hesaplanan verileri çizgilere aktar ve açıklama ekle
Sistem.Cizgiler[0].Deger = x;
Sistem.Cizgiler[0].Aciklama = "x";