http://www.directfn.com.tr/idealsistem/ adresindeki fonksiyon ve örnekler ile sistem tanımları altında hazır gelen indikatör, vs. inceleyerek başlayabilirsiniz..
Geldik, gidiyoruz..
Printable View
http://www.directfn.com.tr/idealsistem/ adresindeki fonksiyon ve örnekler ile sistem tanımları altında hazır gelen indikatör, vs. inceleyerek başlayabilirsiniz..
Geldik, gidiyoruz..
Değerli arkadaşlar ekte gönderdiğim şekilde iz süren stop uygulmasını bir türlü yazamadım
yardımcı olabilirseniz çok makbule geçer
tşk ederim.
[attach=confıg]22588[/attach] grafik
[attach=confıg]22589[/attach] açıklama
https://resmim.net/f/E5ew8I.png
s.a. Böyle bir gösterge yazabilecek var mı acaba? tşk.
Tatilde olduğumdan telefonda yazdım ve test edemedim - koşullar hatalı olabilir- ama aşağıdaki kod son 20 bar için iz sürüyor mu hocam? Arkadaş alım şartı belirtmediği için nerede iz sürmeye başlayacak bilemedim, ya tarih bazlı ya son x bar olabilir gibi geldi? Kod
çalıştıktan sonra son düşükten puan veya yüzde düşümü kolay zaten..
Geldik, gidiyoruz..PHP Code:
//Fiyat bölgesinde göster seçilir, panelden ilk iki çizgi aktif edilir. Panel numaraları 1 dir
var Veriler = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(Veriler,"Kapanis");
var H = Sistem.GrafikFiyatOku(Veriler,"Yuksek");
var L = Sistem.GrafikFiyatOku(Veriler,"Dusuk");
var a = Sistem.Liste(0);
var b = Sistem.Liste(0);
var SonYon = "";
for (int i = Sistem.BarSayisi-20; i < Sistem.BarSayisi; i++)
{
if (H[i] >a[i-1]) {
a[i] =H[i] ;
b[i] =L[i] ;
} else {
a[i] =a[i-1] ;
b[i] =b[i-1] ;
}
if (C[i] < b[i] && SonYon != "F") // SAT
{
Sistem.Yon = SonYon = "F"; // satış
} else {
Sistem.Yon = SonYon = "A"; // alış
}
}
//ekranda çizgi olarak göster
Sistem.Cizgiler[0].Deger = a;
Sistem.Cizgiler[1].Deger = b;
bu sisteme sadece bmk lisansıyla kullana bilirsin
Merhabalar,
Hazırladığım sistemi hafta sonu denemek istiyorum. Bunun için yazdığım emir gönderme kodları çalışmıyor. Sistemi robota/idelgoya bağladığımda yada emir penceresi ile manuel emir gönderdiğimde gidiyor. Ancak kod içinde yazdığımda gönderemiyorum. Acaba nedendir?
Kodun if--else gibi bir bölümü yok. Dolayısı ile emir gönderim bölümüne hatasız geliyor. Hesaba da login çünkü hesaptan kod ile istediğim bilgileri çekiyorum. Aktif viop kontratı için veya herhangi bir sembol için olsa da olur, kod ile emri gönderip portföy de görmek istiyorum.
Aşağıdaki kodlarda bir hata varmı?
Ayrıca Emirİslem, EmirSüresi,EmirTipi,EmirFiyatTipi değişkenleri hangi değerleri alabilirler? Aşağıdaki değerlerden başka değişken alabilirler mi?
Örneğin Emirİslem e "SATIS" veya "Satış" yazmak arasında doğru olanı hangisi?
EmirHesapAdi,EmirAltHesap bilgilerinide girmek gerekiyor mu?
PHP Code:
var Miktar = 1;
Sistem.PozisyonKontrolGuncelle(Sembol, Pozisyon+Miktar);
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Alış";
Sistem.EmirMiktari = Miktar;
Sistem.EmirSuresi = "GUN"; // GUN, SNS, IKG
Sistem.EmirTipi = "KPY"; // KPY, KIE, GIE, SAR
Sistem.EmirFiyatTipi = "PYS"; // PYS, LMT, EIF, KAP
Sistem.EmirGonder();
test olarak gitmesine gerek yok. Haftasonu canlı veri olmasa da sistem çalışıp örneğin gerçek pozisyonu eşitlemek için emir gönderemez mi? Sistemin şuanda veri ihtiyacı yok, sadece bir kez çalışıp emir gönderecek.
viop ve hisse için aşağıdaki emir gönderme kalıplarını kullanabilirsiniz
vadeli için alış
hisse için satış kısımlarını örneği kullanıp yazabilirsiniz.
PHP Code:
///vadeli piyasa satış yap
Rezerv = "SATIŞ işlem";
Sistem.EmirIslem = "SATIS";
Sistem.EmirSembol = sembolV;
Sistem.EmirFiyati = VAFiyat ;
Sistem.EmirMiktari = Lot ;
Sistem.EmirSuresi = "GUN"; // GUN, SNS, IKG
Sistem.EmirTipi = "KPY"; // KPY, KIE, GIE, SAR
Sistem.EmirFiyatTipi = "LMT"; // PYS, LMT, EIF, KAP
Sistem.EmirGonder();
///spot piyasa alım yap
Rezerv = "ALIŞ işlem";
Sistem.EmirSembol = sembolS;
Sistem.EmirIslem = "ALIS";
Sistem.EmirMiktari = Lot;
Sistem.EmirFiyati = SSFiyat; // aktif fiyat
Sistem.EmirSuresi = "GUN"; // GUN
Sistem.EmirTipi = "Limit"; //(“Limitâ€, “Piyasadan Limiteâ€, “Piyasaâ€)
Sistem.EmirGonder();
Wilders MA fonksiyonu belki birine lazım olur:
Sistem İçerisinden Close verisi için aşağıdaki şekilde çağırabilirsiniz.PHP Code:
public float[] Wilders(float[] gelenliste, int periyot)
{
int veriSayisi = gelenliste.Length;
float[] sonuc = new float[veriSayisi];
float[] ma = new float[veriSayisi];
decimal[] toplamlar = new decimal[veriSayisi];
for (int i = 1; i < veriSayisi; i++)
{
toplamlar[i] = toplamlar[i - 1] + (decimal)gelenliste[i];
if (i - periyot >= 0)
ma[i] = (float)Math.Round((toplamlar[i] - toplamlar[i - periyot]) / periyot, 4);
if (i < periyot)
sonuc[i] = 0;
else if (i == periyot)
sonuc[i] = ma[i];
else if (i > periyot)
sonuc[i] = (float)Math.Round(((sonuc[i - 1] * (periyot - 1)) + gelenliste[i]) / periyot, 3);
}
return sonuc;
}
sadece periyot değişkenine istediğiniz rakamı giriniz.
Hesaplatılacak veri Close değilse onu da float array e çevirip atamanız lazım.
PHP Code:
int periyot=10;
var Veriler = Sistem.GrafikVerileriniOku(Sistem.Sembol, Sistem.Periyot);
var C = Sistem.GrafikFiyatOku(Veriler, "Kapanis");
float[] userWilderMA=Wilders(C.ToArray(), Convert.ToInt32(periyot));
var WilderMA=userWilderMA.ToList();
Sistem.Cizgiler[0].Deger=WilderMA;
sanal da çalıştırırsan emir göndermez ama pozisyon günceller , kodun başka tarafında engel yoksa
emir göndersin ben bekleyen emirlerde görüyüm dersen "canlı" çalıştıracaksın (sonra manuel iptal edeceksin sanırım)
ama son yazdığından tüm sorunun "haftasonu çalışsın" checkbox ına tık atmaktan ibaret olduğu izlenimi uyandı bende :)
Herkese merhaba
Uzun bir aradan sonra yeniden borsaya döndük,yeni idealgo da sistem tasarlamak sadece içindeki 300 indikatörün birisini seçerek mi oluyor,birkaç indikatörü birleştirip sistem kuramıyormuyuz,şimdilik Viop düşünmüyorum bu sorum sadece hisse tarafı için
Hepinize bol kaZançlar
Yukarıdaki kod hatalı olmuş! Fiyat bölgesi indikatörü olarak son x bar için iz süren stop (stop= son x bardaki her yeni en yüksek barın düşüğü(önceki stoptan yüksek olmalı)-belirlenen puan)..
https://i.hizliresim.com/yGAJk7.pngPHP Code:
var bars = 100;//son kaç barı takip edecek
var puan = 0.10f;//stop=düşük-puan
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("Yuksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
var a = Sistem.Liste(0);
var b = Sistem.Liste(0);
var SonYon = "";
for (int i = Sistem.BarSayisi-bars; i < Sistem.BarSayisi; i++)
{
if (H[i-1]>a[i-1] ) { //yeni yüksek var mı
a[i] =H[i-1];
if (b[i-1]<(L[i-1]-puan)) b[i] =L[i-1]-puan; //yeni yükseğin düşüğü stoptan yüksek mi
else b[i] =b[i-1] ;
} else { //yeni yüksek yok
a[i] =a[i-1] ;
b[i] =b[i-1] ;
}
if (C[i]<b[i] && SonYon !="S") // Fiyat stop altı, SAT
{
SonYon = Sistem.Yon[i] = "S";
}
}
Sistem.Cizgiler[0].Deger = a;
Sistem.Cizgiler[1].Deger = b;
Abi eğitim istiyoruz
Burada asıl mesele burası : Aldı Stobu belirledi. - - - - Neye göre aldı, stop belirledi?
Her yeni yüksekte ; yeni stop = Eski stop + (yeni yüksek- bir önceki yüksek) - - - bu kısmı yukarıda paylaştığım kodu kurcalayarak siz de yazabilirsiniz.. Yeni yüksek kontrolü içini aşağıdaki gibi uyarlayın sadece..
...........
if (H[i-1]>a[i-1] ) { //yeni yüksek var mı
a[i] =H[i-1];
b[i] =b[i-1]+( H[i-1]-a[i-1]) //yeni stop = Eski stop + (yeni yüksek- bir önceki yüksek)
} else { //yeni yüksek yok
......
Geldik, gidiyoruz..
KAFANIZI TELE VERMEYIN EGITIM ISINI BEN HALLEDERIM. ÖNCE KENDIMI EGITIRSEM.
Şu consol uygulaması 3. if e giriyor bir satır okuyup cıkıyor 4 e hiç girmiyor.
Çıldırmak üzereyim nerede hata oldugunu bulamadım gören işiten duyan varsa bir söyleyiversin.
Visuala consol projesı ıcıne kopyalayın calıstırın acılır ancak 3 ve 4 eğerlerde atlama yapıyor. 3.nün ilk satırını okuyor devamını atlıyor 4. direk atlıyor.
Kod:namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int[] Hesap = { 1500, 2700, 3500, 5800, 9000 };
EnBasadon:
Console.WriteLine("C# Bankasına Hoşgeldiniz.");
Console.WriteLine("Lütfen Yapmak istediğiniz işlemi seçiniz:");
Console.WriteLine("1-Hesap Bilgisi");
Console.WriteLine("2-Hesaplar Arası Havale");
Console.WriteLine("3-Para Çekme");
Console.WriteLine("4-Bakiyesi Bilinen Hesabı Bulma");
int Anamenu = Convert.ToInt32(Console.ReadLine());
if (Anamenu == 1)
{
Console.WriteLine("Hesap bilgisine hoşgeldiniz hesaplarınızdan birini girin");
int HesapNo = Convert.ToInt32(Console.ReadLine());
Console.WriteLine((HesapNo) + " Nolu hesapta " + Hesap[HesapNo] +" TL vardır.");
}
else if (Anamenu==2)
{
Basadon:
Console.WriteLine("Havaleye hoşglediniz. Lütfen gönderen hesabı seçin");
int Gonderen = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Lütfen alıcı hesabı giriniz");
int Alici = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Lütfen Tutar giriniz.");
int Tutar = Convert.ToInt32(Console.ReadLine());
int GondericiTutari = Hesap[Gonderen];
int AliciTutari = Hesap[Alici];
int Sonuc = (GondericiTutari - Tutar);
if (Sonuc<0)
{
Console.WriteLine("Bakiye yetersiz. Tekrar deneyin");
goto Basadon;
}
else
{
Console.WriteLine("Gönderen "+ Gonderen +" nolu hesabın yeni bakiyesi: "+ Sonuc +" TL Alıcı " + Alici + " nolu hesabın yeni bakiyesi: " + (Tutar + AliciTutari ) + " TL");
}
else if (Anamenu==3)
{
Console.WriteLine("Para çekmek için hesap no girin:");
int HesapNo1 = Convert.ToInt32(Console.ReadLine());// BURAYA NİYE ATLIYOR :@@@@@@@@@@@@@@
Console.WriteLine("Çekmek istenen Tutarı Girin");
int CekilecekTutar = Convert.ToInt32(Console.ReadLine());
int Sonuc1 = Hesap[HesapNo1] - CekilecekTutar
if (Sonuc1 < 0)
{
Console.WriteLine("Bakiye yetersiz.");
}
else
{
Console.WriteLine(HesapNo1 + "'den " + CekilecekTutar + " TL Çekilmiş olup Kalan bakiye: " + Sonuc1 " TL dir.");
}
}
else if (Anamenu==4) // BURAYA DA GİRMİYOR :@@@@@@@@@@@@@@
{
Console.WriteLine("Bakiye girin Hesap noyu bulalım:");
int Bakiye = Convert.ToInt32(Console.ReadLine());
for (int Hesap = 0; Hesap < length; Hesap++)
{
if (Hesap==Bakiye)
{
Console.WriteLine(Bakiye + " TL bakiye "+ Hesap + "nolu hesabınıza aittir.");
}
else
{
Console.WriteLine("Hesap Bulunamadı Tekrar Deneyin");
}
}
}
else
{
goto EnBasadon;
}
Console.ReadLine();
}
}
}
C sarp dili buda
evet iki saatir arıyorum :D 2 tarafta problemi çözdüm. noktalı virgul yok ve + eklememişim.
4 if'tede for la hesap dizisini döndürmeye calısmışım. (int i = 0; Hesap.Count() > i; i++) yapınca dizinin içindeki eleman sayısı kadar döndürdü.
yine ekrana yazdırırkende direk dizinin ismini yazmışım hesap[i] yapınca problem kalmadı.
https://hizliresim.com/5NoJAM
Resmi siteye yükleyemedim. 1 dakikalık grafiktir.
Nerede alırsın sen olsan?
Stop aldığı barın açılışı bende.
Al şartı tamam.
Stop şartı sayende deniyeceğim. (tamam)
Kaçış hemen hemen tamam.
Robotçuların bence (kimse lütfen yanlış anlamasın), (borsa tecrübem çok yoktur.)
Ama bir çok şey görmüş ve duymuşumdur.
Robotçuların hatası bence tahta okumayı bilmiyorlar. Bir sürü indikatör kullanırlar. Sadece bar ve mov yeterlidir. Yanına belki iyileştirme maksatlı. Para bir ve beş dakikalıkta. hatta beş dakika bile fazladır. çünki 5x1 dakika var.
Ben bist 30hisselerinde sadece 3 kademe kar al yap çıkan birisinin 10bini bir ayda 150bin yaptığına (aracı kurum teyitli)
tanışan arkadaş var. Ama adam yöntemini söylemiyor. Söylemezde. Herkesin bildiği anda. O iş yatar biliyorsun.
Bir günde %100 yapan kişi var. Ben kendim bir günde Kredili %40 Kredisiz %12 yaptığım (Bu çok olmuştur) olmuştur.
Sabır ve strateji.
Al şartı başka flat başka sat şartım başkadır. "Olmaz dediler oldu)"
Hatta 3 al şartı var 3 sat şartım var. (buna geçemedim henüz))
Kurcaladıkça yeni şeyler yapıyoruz ama c problem İdeal yoğun.(İdealden başkasınıda kullanmam).
GÜn gelecek Bist30 da 30 tane robot çalıştıracağım nasip olursa(Cümlemize nasip olur umarım)
Yapmak istediğim ise tam olarak aşağıda.
Tiberyus üstadın yazdığı çok doğrudur. Geçmişi okurken görmüştüm. Sadece son anlık verileri takip ederek bile çok büyüyk kazançlar elde edilebilir. Ama idealdeki herşeyi excel.e alamıyoruz. Excelde süper şeyler yapılabilir. C den cok daha iyi.
Ancak devamlı ekran başında olamadığımızdan. Olsak bile bazen fırsatlar bir dakikada oluşuyor. 3.dakika sonra eriyor.
Sezai abi ve ideal destek sağolsun. (Yardımları sayesinde 3-5 bir şeyler alabiliyoruz robotla)
Ondan sonra adamların taramasında çıkıyor.
Çok uzun üstadım. Yaz yaz bitmez. Öyle doluyuz.
Fırsatlar gözümüzün önünde gidiyor.
Çok basit bir robotla(çok basit ama inan bana). yüzde 10 yakalıyorsun. Kaçısın robotta hızlı olamıyor. Kötü tarafı bu.
Konu neydi kafa gitti. Çok şey var kafada.
Misal toma gibi çalışsın, Kırdığında yukarı atmasın son iki tepe birbirinden küçükse o zaman atsın (Yada %1 misal)
Matriks tarafında soru olarak sordum.(maalesef).
Birde bir şey sormak istiyorum
https://i.hizliresim.com/004MLB.jpg
Bu yapılabilinirmi.
Yada bir örnek paylaşmanız mümkünmü.
Misalen mov 5 takip edecek yükseldikçe yükselecek düşerken stabil kalacak. Fiyatın altına düştügünde Düştüğü kademennin 2 katı kadar kendini yukarı atacak.
Bunu nasıl çizdirebiliriz. Buradan yürürrüm sanıyorum.
Bir örnek vereyim. Netaşta direnci kıran arkadaşım 10 kademe karda kaçtı.
Halbuki kırmızı bar yok. 60 kademe gitti. Psikoloji çok sağlam ve duygusuz olacak.
Robot şart.
Eğitim istiyoruz. Youtube eğitm videoları.
Belki çok basittir. Aşağıdaki. Ama bilmeyince (( olmuyor.
Alıp başımızı yürüyeceğiz.
Ben programcı olmayacağım.
Basit şeyleri bilsem yeter. Bazen burada paylaşılanları görüyorum ürtütücü.
A>b ise alsın. birde bunu cizdirebilirsem yeterli.
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V,"Kapanis");
var H = Sistem.GrafikFiyatOku(V,"Yuksek");
var L = Sistem.GrafikFiyatOku(V,"Dusuk");
var AA = Sistem.Liste(0) ;
for (int i = 100; i < Sistem.BarSayisi; i++)
{
Sonuc[i] = ( H[i] + L[i] + C[i] ) / 3;
}
Sistem.Cizgiler[0].Deger = AA;
Bunu sitenizdeki örnekten aldım ama ekranda çizgi oluşturamadım.
bunun çizdirebilmek için 5 mail yazışması yaptım. Yazık karşı tarafa. Kim bilir kaç mail geliyordur.
Saygılar, sağlıcakla.
Misalen mov 5 takip edecek yükseldikçe yükselecek düşerken stabil kalacak. Fiyatın altına düştügünde Düştüğü kademennin 2 katı kadar kendini yukarı atacak.
Çizeyim ustad. 10 dakikaya(Patron bir evrak bekliyor) (( Şart robot şart
Yukarıdaki örnek c bilmeyenler için olan zorluktu. Yukarıdaki örneği çizdirebilmek için 5 kere idealle yazıştık.
Onalrın zamanından çaldığımı hissettim Cidden. Utanıyorum artık mail atmaktan. Samimi söylüyorum.
Örneğin mov 10 açılış;
Fiyat mov 10 nun üstündeyse ;
her yeni yükseklik kadar mov10 u yukarı çekecek düşüşlerde stabil kalacak.
https://i.hizliresim.com/QP4rqj.jpg
Saygılar sağlıcakla
Başta orionx sonra size sağ olun.
https://hizliresim.com/gP4mA2
Stop ve şatış şartı yanlış çalıştığı halde ve bir dakikalıkta en az 6 ayda %300ü var bunun
Bitmez geceler beni bekliyor.
İstediğin böyle birşey değil mi ?
https://i.hizliresim.com/dLW10Q.png
Gözlerim açıldı. Kafam patlamıştı. Cin gibi oldum.
Evettttttttttttttttttt. Süpersin
Kod:
var V = Sistem.GrafikVerileri ;
// hesapla
var Veriler = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.HHV(30);// 30 barlık yüksek hesaplanır
var P = Sistem.TOMA(H,1, 0.5);// 30 barlık yükseğin içine 1 lik ma atılır bu 30 barlık yükseğin %0,5 altına çizgi çekilir.
var x1 = Sistem.Liste(V.Count, 0);//x1 boş listesi oluşturulur
for (int i = 1; i < V.Count; i++) //döngü
x1[i] =
Veriler[i] > P[i] ? 1 : //fiyatlar P den yani 30 barlık yükseğin %0,5 altındakı çizgiden büyükse x1 i 1 yapar
Veriler[i] < P[i] ? -1 :// Tam tersi x1 -1 atar
x1[i-1] ;
// sistem
var SonYon = "";
for (int i = 1; i<V.Count; i++)
{
if ( x1[i] == 1 && SonYon != "A" ) // AL
{
Sistem.Yon[i] = "A";
SonYon = Sistem.Yon[i];
}
else if ( x1[i] == -1 && SonYon != "S" ) // SAT
{
Sistem.Yon[i] = "S";
SonYon = Sistem.Yon[i];
}
else if ( x1[i] == 0 && (SonYon == "A" || SonYon == "S") ) // FLAT
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
}
Sistem.GetiriHesapla("31/12/2004", 0.0 );
var KarZarar = Sistem.GetiriKZ;
Sistem.Cizgiler[0].Deger = P;
Sistem.Cizgiler[1].Deger = H;
Sistem.Cizgiler[2].Deger = KarZarar;