.......KEÇİ olabilir mi?....
Printable View
Melek Şentürk kim bilen var mı?
Arzu Melek miydi diğer adı?
Orhan bey elinize sağlık.
KZ eğrisi flat olduğunda renksiz(gri) işlemde açık mavi.
KZ eğrisinde açık mavi kısımları birleştiren yeni bir KZ eğrisi çizgisi oluşturulabilirmi?
yani bu filtrenin yaptığı yeni KZ ı net görebilsek. örneğin sistem KZ eğrisi 90bini aşağı kırınca flat olmuş, 80bini yeniden yukarı kırınca sistem pozuna geçmiş. aradaki 10bin kazancı eski getirinin üzerine ekleyerek giden bir eğri. mümkünmü?
Bu yeni yapıyla ilgili uyarıda bulunmak istiyorum. Sn. Matador38 eğer nick benzerliği yoksa Saraylı'nın nalıncı keseri uygulamasını hatırlayacaktır.
Geçmişte k/z eğrisi ile etkileşimli sistemler üzerinde çalıştığımda bu yapının max dd ile beraber sistem getirisini de düşürdüğüne tanık oldum. Yapı öncesi 10 getiri ve 5 max dd ise, yapı sonrası 5 getiri 2,5 max dd gibi kabaca bir durum ortaya çıkıyordu. Yapı öncesi getiriyi yakalamak için önceki kaldıracı x 2 - x 3 gibi uygulamak gerekiyor ve bu durumda sonuç yapı öncesi ile aynı duruma geliyordu. Tecrübe ettiğim duruma göre; bu yapı sonrası getiri eğrisinin salınımının azalmasına bakıp kaldıracı çok yüksek kullanmamanızı öneriyorum. Yapı sonrası salınımın azaldığı yüzde kadar kaldıracı ayarlamak gerekiyor.
sn. flexy nalıncı keserini hatırlıyorum ama ben onu tam olarak uygulayamadım. sonuçları dediğiniz gibi olabilir. bu mantığında sonuçları ne olacak diye merak ediyorum. örneğin sistemin getiri performansı iki durumda şöyle oldu. max DD KZ eğrisinin işlemi durdurduğu dönemde de hesaplanmaya devam etmiş.
http://666kb.com/i/dy7p6oyoqi4zx0019.png
http://666kb.com/i/dy7p6qcocjfm52t65.png
http://666kb.com/i/dy7pvm0z5vuxw9vsd.png
sn orhan bey, kz değişmesin diye verdiğiniz 2. sistemde yatay çizgiler etkin değil , çalışmıyor. emeğinize teşekkür ederim.
kz eğrisi ile ilgili sistemi sn anonim daha önceki senelerde, belki önceki forumda vermişti. bende kazanınca kumar masasından kalkan sistem adıyla bir sistem önerisinde bulunmuştum. o zaman kimsenin pek dikkatini çekmemişti. lakin elimizde sn ümit in elindeki sistemler olmadığından bir şekilde zarardan kaçınmamız gerekiyordu. buna karşın forumdada değinildi, nedenini bilmediğim bir nedenle(kz eğrisi ile ilgili) robot zaman zaman al-sat yada sat- al yapıyordu. bu nedenle tam kullanamadım. manuel olarak olabildiğince uygulamaya çalıştım, devamlı ekran başında da olmadığından tam uyamadım.
bu nedenle değişmeyen kz eğrisi önemli.
benim sistem performansım salt performans yani sistemin kz eğrisine hiçbirşey eklenmeden elde edilen getiri.
kz eğrisiyle ilgili tam olarak aynı yapıyı kullanmasamda benzer mantıkta başka bir yapı kullanıyorum buda son bir yıldır sonuçlarını gördünüz.
mevcut kodlarla ilgili şunu belirteyim her sisteme uyum sağlamaz işlem sayısını arttırıp sık sık al satlara yol açabilir. getiri eğriniz az yataya sarmalı ki sık sık kesişim türetilmesin.
Farklı seçeneklerle özelliştirilmeli sık kesişimlerin oldugu bölgeler malarla yumuşatılabilir veya tek çizgi yerine çift çizgi kullanılabilir.
tamamen farklı bir çizgi türetilebilir vesaire.
ancak dedğim gibi sistemin kz çizgiside çok önemli daha oynak bir kz de kullanılabılır yada işlem maliyetlerini daha yükske girerek oynak bir kz elde edebilirsiniz. ancak dikkat edin girdiğiniz kayma maliyetlerini yeni kz eğrisinede yansıtmakta. çıkan yeni kz eğrisinede kayma girerseniz kaymanız 2 kat fazla hesaplanmakta.
gibi gibi kısacası ortada bir fikir var geliştirmek size kalmış.
Geçenlerde aklıma geldi acemiler için bir kaç örnek vereyım.
Sadece hhv llv ile bile bir sürü mantık geliştirilebilir.
HHV LLV arasındakı fark şu kadarsa işlem ac değilse işlem mevcut işlemde devam et (işlem filitresi).
HHV LLV arasındakı fark şu kadar açılmışsa flata geç. kar al yap. piyasanın bir tarafa güçlü patlaması sonucu kar al yapmak gibi.
bir önceki HHV değeri ile şimdiki HHV arasındakı fark atıyorum >400 puansa al.
Bir önceki LLV değeri ile şimdi LLV değeri arasındakı fark >400 puansa sat.
HHV nin %0,8 altındakı seviyeye bir çizgi oluştur bu listeye x de
kapanıslar bir önceki bar x den büyük şimdiki bar küçükse flata geç. buda takip eden stoploss koymanızı saglar tam tersini llv ye yazarak şort içinde takıp eden stoploss yaptırılır.
bir önceki llv ile şimdiki llv arasındakı fark 0 ise ve kapanıslar ile llv arasındakı fark <=150 ise al
LLV desteğinde sisteminize al yaktırır bir nevi ters calısma mantıgı. aynı durum hhv içinde geçerli.
150 lik 100 luk 50 lık 25 lık llv topla 4 e bol çıkan fark 1000 den küçükse piyasada bu seviye artık destektır.
Erhan hoca'nın piyasalara uyarladığı geri besleme konseptinin teknik izahını biri yapmış.
Geri besleme, sistem çıktısının (kar zarar eğrisi) sisteme tekrar girdi olarak verilmesidir.
Geri besleme ne işe yarar diyerek konuya başlamak istiyorum.
Bunu da basit bir örnekle açıklayacağım.
Şimdi ayarlı bir adaptör yaptığınızı düşünün.
Bu adaptörün ucuna da bir DC motor bağladığımızı varsayalım. Ne olur?
Motor dönmeye başlar.
Şimdi motorun milini elimizle yavaşça tutalım.
Motor yavaşlayacaktır.
Motorun devrinin aynı kalmasını istersek adaptörün voltajını yükseltmemiz gerekir.
Motorun milini daha da sıkarsak voltajı daha da arttırmamız gerekir.
Mili bıraktığımız zaman motor çok yüksek hıza çıkacaktır.
Bu kez adaptörün voltajını hemen düşürmemiz gerekecektir.
Bu örnekteki davranışımızı düşünecek olursak motorun devrini sabit tutmamız için sanki biz devrenin bir parçasıymış gibi davranıp adaptörün voltajını ayarlıyoruz.
Bir geri besleme devresi de aynı işi yapar.
Bu tür geri besleme devrelerine NEGATİF geri beslemeli devreler denir.
Negatif sözcüğünün anlamı çıkıştaki azaltmak için girişi azaltan anlamındadır.
Buradaki azaltma işlemi aslında zararlı bir şey değildir.
Örnekte de gördüğünüz gibi devrede bir takım kararlılıklar sağlar.
Bu sonucu elde etmek içinde bir şeyler kaybederiz.
Kaybettiğimiz kazancın bir kısmıdır.
Negatif geri beslemenin faydalarını elektronik için özetleyecek olursak;
1- Doğrusal bir çalışma
2- Az gürültü
3- Kararlı kazanç
4- Doğrusal frekans tepkisi
5- Yüksek giriş empedansı ve düşük çıkış empedansıdır.
Bende de Sn. matador38'deki gibi sonuç verdi. İşlem sayısı artıyor, getiri azalıyor ve maxdd benzer seviyede kalıyor. Formül bana ağır geldiği için çok uyarlama imkanım henüz yok :) Çalışan bir örnek görsek daha iyi oturacak sanırım :)
Sn. Tiberius elektrik elektronik tarafındaki kitapları okusam sistem konusunda faydası olur mu ? Olursa nereden başlamalıyım konular biraz ağır :) Borsayla ilgili bir bölüm bitirdim yüksek lisansı da benzer.. :wu:
Faydası olmaz üstat, zaman kaybı olur.
Lisansda
Sinyaller ve Sistemler (Signals & Systems)
Olasılık (Probability & Random Variables)
Kontrol (Control Theory)
Lisansüstünde
Bilgi (Information Theory)
Aktif Filtreler (Active Filters)
Tespit Etme, Belirleme (Detection, Estimation, Modulation Theory)
gibi dersler almış biri olarak bana faydası olmamış, sana nasıl olsun :)
Internette surf edip filtre formulleri bulup onları denemek zamanı daha anlamlı kullanmak olur.
Metatrader sayfasında sonsuz sistem var, onları bizim yerli piyasaya uyarlamak da iyi bir çalışma olur.
mesela bir örnek
https://i.imgyukle.com/2018/10/29/xHD8p.png
idealin kod örneği.
bu örnek sadece bu sayede birşeyler elde edemeyebilirsiniz. Geliştirmeniz lazım.
Kod:var SistemAdi = "sistemmmmmmmadı";
var Seviyeler = new List<float>();
Seviyeler.Add(65);
Seviyeler.Add(60);
Seviyeler.Add(55);
Seviyeler.Add(50);
Seviyeler.Add(45);
Seviyeler.Add(40);
Seviyeler.Add(35);
Seviyeler.Add(30);
Seviyeler.Add(25);
Seviyeler.Add(20);
Seviyeler.Add(15);
Seviyeler.Add(10);
Seviyeler.Add(05);
var V = Sistem.GrafikVerileri;
var OrjinalSistem = Sistem.SistemGetir(SistemAdi, Sistem.Sembol, Sistem.Periyot);
var GetiriList = OrjinalSistem.GetiriKZ;
Sistem.Cizgiler[0].Deger = GetiriList;
for (int i = 0; i < Seviyeler.Count; i++)
{
Sistem.Cizgiler[i + 10].ActiveBool = true;
Sistem.Cizgiler[i + 10].Deger = Sistem.Liste(Seviyeler[i]);
Sistem.Cizgiler[i + 10].Panel = 2;
Sistem.Cizgiler[i + 10].Renk = Color.IndianRed;
Sistem.Cizgiler[i + 10].Stil = 2;
}
var StatuListesi = Sistem.Liste(0);
var SonStatu = 0;
for (int i = 1; i < V.Count; i++)
{
for (int j = 0; j < Seviyeler.Count; j++)
{
if (GetiriList[i - 1] > Seviyeler[j] && GetiriList[i] <= Seviyeler[j])
{
SonStatu = 0;
break;
}
if (GetiriList[i - 1] < Seviyeler[j] && GetiriList[i] >= Seviyeler[j])
{
SonStatu = 1;
break;
}
}
StatuListesi[i] = SonStatu;
}
var RenkListesi = new List<Color>();
for (int i = 0; i < Sistem.BarSayisi; i++)
RenkListesi.Add(Color.Gray);
for (int i = 1; i < V.Count; i++)
{
if (StatuListesi[i] == 0)
RenkListesi[i] = Color.Gray;
else if (StatuListesi[i] == 1)
RenkListesi[i] = Color.Cyan;
}
Sistem.Cizgiler[0].RenkListesi = RenkListesi;
var OrjinalPozisyonList = Sistem.Liste(0);
var Yon = "";
for (int i = 0; i < V.Count; i++)
{
if (OrjinalSistem.Yon[i] == "A")
Yon = "A";
else if (OrjinalSistem.Yon[i] == "S")
Yon = "S";
else if (OrjinalSistem.Yon[i] == "F")
Yon = "F";
if (Yon == "A")
OrjinalPozisyonList[i] = 1;
else if (Yon == "S")
OrjinalPozisyonList[i] = -1;
else if (Yon == "F")
OrjinalPozisyonList[i] = 0;
}
var YeniPozisyonList = Sistem.Liste(0);
var SonYon = "";
for (int i = 0; i < V.Count; i++)
{
if (StatuListesi[i] == 0)
{
if (SonYon != "F")
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
}
else
{
if (SonYon != "A" && OrjinalPozisyonList[i] == 1)
{
Sistem.Yon[i] = "A";
SonYon = Sistem.Yon[i];
}
if (SonYon != "S" && OrjinalPozisyonList[i] == -1)
{
Sistem.Yon[i] = "S";
SonYon = Sistem.Yon[i];
}
if (SonYon != "F" && OrjinalPozisyonList[i] == 0)
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
}
}
Sistem.GetiriHesapla("01/01/2007", 0.0);
Sistem.Cizgiler[7].Deger = Sistem.GetiriKZ;
Düşen Kar Maskesi: KZ belirlenen dilimi aşağı keserse Flat, yukarı keserse sisteminizin sinyali.
Detaylı kontrol edilmedi. Test etmelisiniz.
Seviye yöntemine toma da eklendi.
PHP Code:
//Ayarlar
bool MaskeVar = true; // false ise sizin sistem, true ise Düşen Kar Maskesi Aktif.
var GrafikSistemAd= "K2"; // Sisteminizin adını yazın.GetiriHesapla içermelidir.
var MaskeYontem="S"; //S veya T (S ise Seviye Kesişimi T ise TOMA.)
int KzSeviyeMod=5; //KZ al-sat çizgisi adımı. Sadece Seviye Yönteminde kullanılır.
bool SeviCizgileriniGoster=false;
var TomaParam1=30; //Sadece TOMA Yönteminde kullanılır.
var TomaParam2=5; //Sadece TOMA Yönteminde kullanılır.
var KZDevirVar=false; // true ise KZ değişmez ve Param9 a yazılan Devir Rakamına her yeni bar eklendiğinde
// kaybolan barın Kz si de eklenerek biriktirme yapılır.
// false ise KZ değişmez. lokal testlerde false serverda robot true kullanılabilir.
var KarBiriktirenSembolPeriyot = "VIP'VIP-X030"+"1"; //Sistem başka sembollerde açıldığında robotun takip ettiği kar değerleri bozulmasın diye gerekli.
bool MaskeliKZGoster=true;
//Veriler
var V = Sistem.GrafikVerileri;
var O = Sistem.GrafikFiyatSec("Açılış");
//Sistem Getir
var GrafikSistem = Sistem.SistemGetir(GrafikSistemAd, Sistem.Sembol, Sistem.Periyot);
var Yonler = GrafikSistem.Yon;
var Seviyeler = GrafikSistem.Seviye;
var GetiriList = GrafikSistem.GetiriKZ; //var GetiriList =GrafikSistem.Cizgiler[5].Deger;
//Değişkenler
string SonYon="F";
string GercekSonYon="";
bool AksamFlatIslemde=false;
float MaxKZ=0;
double DevirKZ=0;
//Devreden Kar Hesaplamaları
var YeniGetiriList = Sistem.Liste(0);
if(KZDevirVar)
{
var RefGetiri1000= GetiriList[1000];
var RefGetiri999= GetiriList[999];
if(Sistem.Parametreler[8]=="") //Kaydedilmiş İlk Bar Tarihi Boş ise
{
Sistem.Parametreler[9] = "0"; //Devir KZ 0 kabul et. Elle değiştirebilir devir rakamı.
Sistem.Parametreler[10] = RefGetiri1000.ToString("0.####"); //Referans Getiriyi Yaz
}
if( V[0].Date.ToString("dd.MM.yyyy HH:mm") != Sistem.Parametreler[10]
&& (Sistem.Sembol + Sistem.Periyot)==KarBiriktirenSembolPeriyot
) //Robotun Sembolünde ise ve İlkBar Değişti ise
{
Sistem.Parametreler[8] = V[0].Date.ToString("dd.MM.yyyy HH:mm"); //Yeni ilk barın Tarihini yaz.
DevirKZ = Convert.ToDouble(Sistem.Parametreler[9]) + // DevirKZ
+Convert.ToDouble( Sistem.Parametreler[10] ) - RefGetiri999;
Sistem.Parametreler[9] = DevirKZ.ToString("0.####");
Sistem.Parametreler[10] = RefGetiri1000.ToString("0.####");
}
}
for (int i = 0; i < GetiriList.Count; i++){YeniGetiriList[i] = (float)DevirKZ + GetiriList[i];}
//İndikatörler
var TomaKZ= Sistem.TOMA(YeniGetiriList, TomaParam1, TomaParam2);
if(MaskeVar && MaskeYontem.ToUpper()=="T" && SeviCizgileriniGoster)
{
Sistem.Cizgiler[2].Deger = TomaKZ;
Sistem.Cizgiler[2].Panel = 2;
Sistem.Cizgiler[2].ActiveBool = true;
Sistem.Cizgiler[2].Aciklama="TomaKZ";
Sistem.Cizgiler[2].Renk = Color.Red;
}
//Maske Listesi
var MaskeList = Sistem.Liste(0);
var Maske = 1;
for (int i = 1; i < V.Count; i++)
{
var SonGetiri=YeniGetiriList[i];
var OncekiGetiri=YeniGetiriList[i-1];
MaxKZ = Math.Max(MaxKZ,SonGetiri);
if(MaskeYontem.ToUpper()=="S")
for (int j = 0; j < Math.Round(SonGetiri /KzSeviyeMod)+3; j++)
{
var jSeviye=j*KzSeviyeMod;
if (OncekiGetiri > jSeviye && SonGetiri <= jSeviye )
{
Maske = 0;
break;
}
if (OncekiGetiri < jSeviye && SonGetiri >= jSeviye )
{
Maske = 1;
break;
}
}
else {
if (OncekiGetiri > TomaKZ[i-1] && SonGetiri <= TomaKZ[i-1]) Maske = 0;
else if (OncekiGetiri < TomaKZ[i-1] && SonGetiri >= TomaKZ[i-1]) Maske = 1;
}
MaskeList[i] = Maske;
}
//Çizgiler
Sistem.Cizgiler[0].Deger = YeniGetiriList;
Sistem.Cizgiler[0].Panel = 2;
Sistem.Cizgiler[0].ActiveBool = true;
Sistem.Cizgiler[0].Aciklama="KZ";
var RenkListesi = new List<Color>();
for (int i = 0; i < V.Count; i++) RenkListesi.Add(Color.Gray);
for (int i = 0; i < V.Count; i++)
{
if (MaskeList[i] == 0) RenkListesi[i] = Color.Gray;
else if (MaskeList[i] == 1) RenkListesi[i] = Color.Cyan;
}
Sistem.Cizgiler[0].RenkListesi = RenkListesi;
//KZ Seviye Çizgileri(Sadece görsellik için, algoyu etkilemez, son Kz ye yakın 10 çizgi.)
if(MaskeVar && MaskeYontem.ToUpper()=="S" && SeviCizgileriniGoster)
{
var SeviyeCizgiCounter=10;
for (var i =Math.Round(MaxKZ/KzSeviyeMod)+3 -10 ; i < Math.Round(MaxKZ/KzSeviyeMod)+3 ; i++)
{
SeviyeCizgiCounter+=1;
Sistem.Cizgiler[SeviyeCizgiCounter].ActiveBool = true;
Sistem.Cizgiler[SeviyeCizgiCounter].Deger = Sistem.Liste(i*KzSeviyeMod);
Sistem.Cizgiler[SeviyeCizgiCounter].Panel = 2;
Sistem.Cizgiler[SeviyeCizgiCounter].Renk = Color.IndianRed;
Sistem.Cizgiler[SeviyeCizgiCounter].Stil = 2;
}
}
//Yön Kalıbı
for (int i = 1 ; i < Yonler.Count; i++)
{
//Sistemde Yön var ise GercekSonYon'e ata.
if( Yonler[i] != "") GercekSonYon=Yonler[i];
//Maske Flat: Maske aktif ise ve bir KZ dilimini aşağı kesti ise
if ( MaskeVar && MaskeList[i]==0 )
{
//Zaten Flat'da ise İşlem Yok.
if(SonYon != "F")
{
SonYon = "F";
Sistem.Yon[i] = "F";
}
}
//Gerçek Sinyal: SonYon ile GercekSonYon aynı değil ise
else if( SonYon != GercekSonYon )
{
SonYon = GercekSonYon;
Sistem.Yon[i] = GercekSonYon;
if(Seviyeler[i]!=null) Sistem.Seviye[i] = Seviyeler[i];
}
}
//Maskeli KZ Göster
if(MaskeliKZGoster){
var MaskeliYeniGetiriList = Sistem.Liste(0);
Sistem.GetiriHesapla("01.01.2000", 0);
for (int i = 0; i < Sistem.GetiriKZ.Count; i++){MaskeliYeniGetiriList[i] = (float)DevirKZ + Sistem.GetiriKZ[i];}
Sistem.Cizgiler[1].Deger = Sistem.GetiriKZ;
Sistem.Cizgiler[1].Panel = 2;
Sistem.Cizgiler[1].Renk = Color.Yellow;
Sistem.Cizgiler[1].ActiveBool = true;
Sistem.Cizgiler[1].Aciklama="Maskeli KZ";
}
//Test Kodu Bar Sayısını 1 eksilttiğinizde KZ değişmiyorsa olmuş demektir.
//Sistem.Mesaj("SonKZ: "+ YeniGetiriList[YeniGetiriList.Count-1].ToString("0.####"));
Para yönetimi çok önemli bir husus.
ve bence üzerinde en cok durumlası gerken şey.
nasılkı sıstemlerımız endeks getirisinin üzerinde yaratabilioysak
para yönetimiyle ilgili yazacagımız modeller getirilerimizi inanılmaz arttırıcı etkiler yaratacaktır sadece 1 kaldıraç değişiklik bile çok farklar açıyor.
en basitinden longa farklı şorta farklı bır kaldıraç üzerinden ilerlemek.
mesela şöyle birşey modellenebılırmı ideal üzerinde.
bir adet ma koyalım grafiğe 200 300 luk yada 500 luk bu manın altında ıken açılan şortlar 2 lot üzerinde. longlar 1 lot uzerınden hesaplansın.
üstündeykende longlara 2 şortlara 1 lot verelım.
getirimiz ne çıkardı
farklı yazılımlarda Performans kriterleri Long ve short bazında ayrı ayrı görülebiliyor. kodla yapmasıda kolay ama önce idealden performans ekranına eklemeler rica etmek daha iyi olurdu. aslında farklı çıkan değerler ya piyasanın yönelimi ile yada sizin o piyasa türünde iyi/kötü kodlamızla ilgili olacak. bundan dolayı short/longa göre kaldıraç yapmak yerine kodun hangisinde neden başarısız olduğunu irdelemek daha doğru olurdu.
Orhan Hocam; paylaşımlarınız için teşekkürler,sizden rica etsem Açıklama- Panel-Stil ve no kısımlarına düzgün yerleştiremedim sanırım hata verip açolmadı görüntü.Bu kısım ile ilgili doldurulmuş görsel paylaşırsanız sevinirim.Ya da diğer arkadaşlar Sn. Erhan Bey VE diğer arkadaşlarda yardımcı olabilirler.Sağolun şimdiden...
sifir bir sistem olarak kaydedip çalıştırdığınızda hata veriyorsa 2 nedeni olabilir sadece.
1-ayarlar blokundaki sistem adı hatalı yazılmıştır.
2- ayarlar blokundaki yazılan sistemin içerisinde getirihesapla kullanılmamıştır.
çizgiler görünmüyorsa ilk 2 cizginin checkini işaretlemek yeterli olur.
Arkadaşlar, lot arttırmalı sistemden bahsetmişsiniz. Bunu sisteme göre performansını görebilir miyim ? elinde kodu olan var mı ?
FxSnipper ile Trend Maskesi
bununla güçlü trendlerde sistemlerin saçmalama oranını düşürmeyi amaçladık.
işlem ve puanlarınızı ne derece etkileyecek bakalım.
benzer bir yöntem ise sistemlerim de olmamasına rağmen bende işe yaramadı yine.
özelden gelen talep üzerine yazılmıştır.
denememi şuradaki sistem ile 1 dk için yaptım.
http://www.directfn.com.tr/sistemler...MA_TRIX_SD.001
1 dk kullanmıyorsanız uygun değerleri girmeli yada ikinci sistem ile optimize yapmayı denemelisiniz.
Aşağıdaki ise buna ait Optimizasyon Sistemidir.PHP Code:
//Ayarlar
bool MaskeVar = false; // false ise sizin sistem, true ise Güçlü Trend Yönü
var GrafikSistemAd="SYS_TOMA_TRIX_SD"; // Sisteminizin adını yazın.
//1 DK Ayarları
var Periyot1 = 210; // FXSnipper Periyodu.
var Periyot2 = 20; // FXSnipper Periyodu.
var Fark= 40; // FXSnipper > Değeri
//Veriler
var V = Sistem.GrafikVerileri;
var O = Sistem.GrafikFiyatSec("Açılış");
//Sistem Getir
var GrafikSistem = Sistem.SistemGetir(GrafikSistemAd, Sistem.Sembol, Sistem.Periyot);
var Yonler = GrafikSistem.Yon;
var Seviyeler = GrafikSistem.Seviye;
//Değişkenler
string SonYon="F";
string GercekSonYon="";
bool AksamFlatIslemde=false;
var MaskeList = Sistem.Liste(0);
var Maske = 0;
var MaskeYon = "F";
//Indikatörler
var FX = Sistem.FxSniper(Periyot1 , Periyot2 );
//Maske Listesi
for (int i = 1; i < V.Count; i++)
{
if ( FX[i-1] >= Fark ) Maske = 1; // Güçlü AL
else if ( FX[i-1] <= Fark*-1 ) Maske = -1; // Güçlü SAT
else Maske = 0;
MaskeList[i] = Maske ;
}
//Çizgiler
Sistem.Cizgiler[0].Deger = FX ;
Sistem.Cizgiler[0].Panel = 2;
Sistem.Cizgiler[0].ActiveBool = true;
Sistem.Cizgiler[0].Aciklama="FX";
var RenkListesi = new List<Color>();
for (int i = 0; i < V.Count; i++) RenkListesi.Add(Color.Gray);
for (int i = 0; i < V.Count; i++)
{
if (MaskeList[i] == 0) RenkListesi[i] = Color.Yellow;
else if (MaskeList[i] == 1) RenkListesi[i] = Color.Green;
else if (MaskeList[i] == -1) RenkListesi[i] = Color.Red;
}
Sistem.Cizgiler[0].RenkListesi = RenkListesi;
//Yön Kalıbı
for (int i = 1 ; i < Yonler.Count; i++)
{
if(MaskeVar ) MaskeYon = (MaskeList[i]==0 ? "F": (MaskeList[i]==1 ? "A":"S") );
//Sistemde Yön var ise GercekSonYon'e ata.
if( Yonler[i] != "") GercekSonYon=Yonler[i];
//Maske aktif ise ve Flat saati içerisinde ise
if ( MaskeVar && MaskeYon!="F" && MaskeYon != SonYon )
{
SonYon = MaskeYon;
Sistem.Yon[i] = MaskeYon;
}
//Gerçek Sinyal: SonYon ile GercekSonYon aynı değil ise
else if( MaskeYon=="F" && SonYon != GercekSonYon )
{
SonYon = GercekSonYon;
Sistem.Yon[i] = GercekSonYon;
if(Seviyeler[i]!=null) Sistem.Seviye[i] = Seviyeler[i];
}
}
S menüsünden -> Optimizasyon ile açıp periyodunuzu seçerek
kendi periyodunuz ve Sisteminize göre optimize edebilirsiniz.
optimize değer aralıkalırınızı periyoda göre olası aralığa çekerseniz daha kısa sürecektir.
PHP Code:
//Ayarlar
bool MaskeVar = true; // false ise sizin sistem, true ise Güçlü Trend Yönü
var GrafikSistemAd="SYS_TOMA_TRIX_SD"; // Sisteminizin adını yazın.
//Veriler
var V = Sistem.GrafikVerileri;
var O = Sistem.GrafikFiyatSec("Açılış");
//Sistem Getir
var GrafikSistem = Sistem.SistemGetir(GrafikSistemAd, Sistem.Sembol, Sistem.Periyot);
var Yonler = GrafikSistem.Yon;
var Seviyeler = GrafikSistem.Seviye;
//Optimizasyon-----------------------------------------------------------------------------------------
for (int p1 = 600; p1 > 1; p1-=10) {
for (int p2 = 600; p2 > 1; p2-=10) {
for (int p3 = 50; p3 > 1; p3-=10) {
//1 DK Ayarları
var Periyot1 = p1; // FXSnipper Periyodu.
var Periyot2 = p2; // FXSnipper Periyodu.
var Fark= p3; // FXSnipper > Değeri
//Optimizasyon-----------------------------------------------------------------------------------------
//Değişkenler
string SonYon="F";
string GercekSonYon="";
bool AksamFlatIslemde=false;
var MaskeList = Sistem.Liste(0);
var Maske = 0;
var MaskeYon = "F";
//Indikatörler
var FX = Sistem.FxSniper(Periyot1 , Periyot2 );
//Maske Listesi
for (int i = 1; i < V.Count; i++)
{
if ( FX[i-1] >= Fark ) Maske = 1; // Güçlü AL
else if ( FX[i-1] <= Fark*-1 ) Maske = -1; // Güçlü SAT
else Maske = 0;
MaskeList[i] = Maske ;
}
//Çizgiler
Sistem.Cizgiler[0].Deger = FX ;
Sistem.Cizgiler[0].Panel = 2;
Sistem.Cizgiler[0].ActiveBool = true;
Sistem.Cizgiler[0].Aciklama="FX";
var RenkListesi = new List<Color>();
for (int i = 0; i < V.Count; i++) RenkListesi.Add(Color.Gray);
for (int i = 0; i < V.Count; i++)
{
if (MaskeList[i] == 0) RenkListesi[i] = Color.Yellow;
else if (MaskeList[i] == 1) RenkListesi[i] = Color.Green;
else if (MaskeList[i] == -1) RenkListesi[i] = Color.Red;
}
Sistem.Cizgiler[0].RenkListesi = RenkListesi;
//Optimizasyon-----------------------------------------------------------------------------------------
for (int i = 0; i < V.Count; i++) Sistem.Yon[i] = "";
//Optimizasyon-----------------------------------------------------------------------------------------
//Yön Kalıbı
for (int i = 1 ; i < Yonler.Count; i++)
{
if(MaskeVar ) MaskeYon = (MaskeList[i]==0 ? "F": (MaskeList[i]==1 ? "A":"S") );
//Sistemde Yön var ise GercekSonYon'e ata.
if( Yonler[i] != "") GercekSonYon=Yonler[i];
//Maske aktif ise ve Flat saati içerisinde ise
if ( MaskeVar && MaskeYon!="F" && MaskeYon != SonYon )
{
SonYon = MaskeYon;
Sistem.Yon[i] = MaskeYon;
}
//Gerçek Sinyal: SonYon ile GercekSonYon aynı değil ise
else if( MaskeYon=="F" && SonYon != GercekSonYon )
{
SonYon = GercekSonYon;
Sistem.Yon[i] = GercekSonYon;
if(Seviyeler[i]!=null) Sistem.Seviye[i] = Seviyeler[i];
}
}
//Optimizasyon-----------------------------------------------------------------------------------------
Sistem.Optimizasyon(p1,p2,p3);
}
}
}
//Optimizasyon-----------------------------------------------------------------------------------------