iyidi bu haftada anlımızın akıyla bıtırdık 2018 i bitirdik ya dahada bırsey cıkmaz bu grafiklerden bu yıl.
Printable View
elinde hazırda uyumsuzlukları gösteren bir algorıtması olan varmı tarama seklınde degıl.
viop için mantık uyduramadım nasıl birşey yazılabılırle ilgili hazır olan varsa onun uzerınden gıdeyım.
Arkadaşlar forumda daha önce paylaşılan günlük belirtilen miktardan fazla emir gönderen robotu, belli bir süre durdurun robot kod örneği paylaşılmıştı yanlış hatırlamıyorsam
Arşivine alan varsa burada tekrar paylaşabilirmi?
Bugün Şans eseri robotu 14. al-satı yaparken yakaladım
Robotu sanala alıp ne oluyor falan derken longta kalmışım sonra verdiler piyasaya
kar edeceğimiz günde zarar yazdık neyseki zarar fazla degil
PHP Code:
var LotSize = 1.0;
var Periyot = "5";
var KullanilanSistem = "SistemAdi";
var DefaLimiti = 3;
// VIOP - Canlı Barda Emir Gönderim Kalıbı
var MySistem = Sistem.SistemGetir(KullanilanSistem, "VIP'VIP-X030", Periyot);
if (MySistem != null)
{
var V = MySistem.GrafikVerileri;
var Saat = V[V.Count - 1].Date;
if (Sistem.SaatAraligi("09:30", "18:14") && V[V.Count - 1].Date.Day == DateTime.Now.Day)
{
var DefaAnahtar = Sistem.Name + " , " + "Defa" + " , " + Saat.ToString("yyyyMMddHHmm");
var DefaSayisi = Sistem.SayiTablosunuOku(DefaAnahtar);
if (DefaSayisi < DefaLimiti)
{
var EmirSembol = Sistem.AktifViopKontrat;
var Pozisyon = Sistem.PozisyonKontrolOku(Sistem.Name + " , " + EmirSembol);
var SonYon = "";
for (int i = 0; i < MySistem.Yon.Count; i++)
{
if (MySistem.Yon[i] != "")
SonYon = MySistem.Yon[i];
}
// Emir Miktarını Hesapla
var Miktar = 0.0;
if (SonYon == "F" && Pozisyon != 0) // Flata Geç
Miktar = -Pozisyon;
else if (SonYon == "A" && Pozisyon != LotSize) // Al
Miktar = LotSize - Pozisyon;
else if (SonYon == "S" && Pozisyon != -LotSize) // Sat
Miktar = -LotSize - Pozisyon;
// Emir Gönder
if (Miktar != 0)
{
Sistem.PozisyonKontrolGuncelle(Sistem.Name + " , " + EmirSembol, Miktar + Pozisyon);
Sistem.EmirSembol = Sistem.AktifViopKontrat;
Sistem.EmirIslem = Miktar > 0 ? "ALIS" : "SATIS";
Sistem.EmirMiktari = Math.Abs(Miktar);
Sistem.EmirSuresi = "GUN";
Sistem.EmirTipi = "KPY";
Sistem.EmirFiyatTipi = "PYS";
Sistem.EmirGonder();
DefaSayisi++;
Sistem.SayiTablosunuGuncelle(DefaAnahtar, DefaSayisi);
}
}
}
}
olağandışılık yüzünden (çok fazla emir mesela ) sistemi durduracaksınız son pozisyonu açık bırakmak yerine sıfırlamak daha mantıklı.
sayın ideal yetkilileri
grafik verisi indir seçeneğinde
imkbh seçeneğini seçtiğimiz zaman bütün hisse senetlerinin grafik verisini indirmeye çalışıyor
piyasada öyle gereksiz senetler varki hiç bir zaman grafik verisine ihtiyacımız olmaz
acaba o bolümede u30 senetler veya u100 senetleri gibi seçenekler konulabilirmi ?
sorgu bölümünden ister kendi istediğiniz (kaydettiğiniz liste varsa) hazır listeleri tamamlatabilirsiniz.
PHP Code:
var Sembol = Sistem.Sembol;
var yuzeysel = Sistem.YuzeyselVeriOku(Sembol);
Sistem.SorguBaslik[0] = "SON";
Sistem.SorguBaslik[1] = "5 dk";
Sistem.SorguBaslik[2] = "60 dk";
Sistem.SorguBaslik[3] = "Gün";
Sistem.SorguBaslik[4] = "1 DK";
var son = Sistem.SonFiyat(Sembol);
if ( son > 0 ) {
Sistem.GrafikVerisiIndir(Sembol, "1" );
Sistem.GrafikVerisiIndir(Sembol, "5" );
Sistem.GrafikVerisiIndir(Sembol, "60" );
Sistem.GrafikVerisiIndir(Sembol, "G" );
Sistem.SorguAciklama = "Data Tamamlandı " + Sembol ;
Sistem.SorguDeger[0] = son;
Sistem.SorguDeger[1] = son;
Sistem.SorguDeger[2] = son;
Sistem.SorguDeger[3] = son;
Sistem.SorguDeger[4] = son;
Sistem.SorguOndalik[0] = 5;
Sistem.SorguOndalik[1] = 5;
Sistem.SorguOndalik[2] = 5;
Sistem.SorguOndalik[3] = 5;
Sistem.SorguOndalik[4] = 5;
}
else
{
Sistem.SorguAciklama = "*** Data YOK ***";
Sistem.SorguDeger[0] = son;
}
Sistem.SorguEkle();
editorde yazdım , pozisyon atmasın diye idealde denemedim."kk" lar benim notum
Kod:var LotSize = 1.0;
var Periyot = "5";
var KullanilanSistem = "SistemAdi";
var DefaLimiti = 3;
// VIOP - Canlı Barda Emir Gönderim Kalıbı
var MySistem = Sistem.SistemGetir(KullanilanSistem, "VIP'VIP-X030", Periyot);
if (MySistem != null)
{
var V = MySistem.GrafikVerileri;
var Saat = V[V.Count - 1].Date;
if (Sistem.SaatAraligi("09:30", "18:14") && V[V.Count - 1].Date.Day == DateTime.Now.Day)
{
var DefaAnahtar = Sistem.Name + " , " + "Defa" + " , " + Saat.ToString("yyyyMMddHHmm");
var DefaSayisi = Sistem.SayiTablosunuOku(DefaAnahtar);
if (DefaSayisi <= DefaLimiti )// limitte ise dahil kk
{
var EmirSembol = Sistem.AktifViopKontrat;
var Pozisyon = Sistem.PozisyonKontrolOku(Sistem.Name + " , " + EmirSembol);
var SonYon = "";
for (int i = 0; i < MySistem.Yon.Count; i++)
{
if (MySistem.Yon[i] != "")
SonYon = MySistem.Yon[i];
}
// Emir Miktarını Hesapla
var Miktar = 0.0;
if (DefaSayisi == DefaLimiti){Miktar=Pozisyon==0?0:-Pozisyon;}// flate kk
else if (SonYon == "F" && Pozisyon != 0) // Flata Geç
Miktar = -Pozisyon;
else if (SonYon == "A" && Pozisyon != LotSize) // Al
Miktar = LotSize - Pozisyon;
else if (SonYon == "S" && Pozisyon != -LotSize) // Sat
Miktar = -LotSize - Pozisyon;
// Emir Gönder
if (Miktar != 0)
{
Sistem.PozisyonKontrolGuncelle(Sistem.Name + " , " + EmirSembol, Miktar + Pozisyon);
Sistem.EmirSembol = Sistem.AktifViopKontrat;
Sistem.EmirIslem = Miktar > 0 ? "ALIS" : "SATIS";
Sistem.EmirMiktari = Math.Abs(Miktar);
Sistem.EmirSuresi = "GUN";
Sistem.EmirTipi = "KPY";
Sistem.EmirFiyatTipi = "PYS";
Sistem.EmirGonder();
DefaSayisi++;
Sistem.SayiTablosunuGuncelle(DefaAnahtar, DefaSayisi);
}
}
}
}
Birkaç denemem olmuştu. Uyumsuzluklar genelde hızlı yükseliş ve düşüş sonrası aşırı alım/satım bölgelerinin zorlanmasıyla oluşuyor. Genelde bilinenin aksini yapmak daha iyi getiri sağlıyor (örn: pozitif uyumsuzluk varsa alma sat). Ama şu olabilir 1000 bar içerisinde mesela 3 defa negatif uyumsuzluk olursa alış sinyaline girme denebilir (denemedim). Çünkü 3 4 defa uyumsuzluk olduktan sonra ancak fiyatlar dönüyor.
Kullanıcağın indikatörün hhv llv sini alıp fiyat ile indikatörü karşılaştırıp uyumsuzluk tespiti yapılabilir.
Hazır robotlar açılmışken soru sorayım. İşlem yapacağımız lot miktarını hesaplamak için hesaptaki teminat +- son pozisyon kar zarar diyerek overall u bulabilir miyiz?
defasayısını güncellemeyi ihmal etmişim
Kod:var LotSize = 1.0;
var Periyot = "5";
var KullanilanSistem = "SistemAdi";
var DefaLimiti = 3;
// VIOP - Canlı Barda Emir Gönderim Kalıbı
var MySistem = Sistem.SistemGetir(KullanilanSistem, "VIP'VIP-X030", Periyot);
if (MySistem != null)
{
var V = MySistem.GrafikVerileri;
var Saat = V[V.Count - 1].Date;
if (Sistem.SaatAraligi("09:30", "18:14") && V[V.Count - 1].Date.Day == DateTime.Now.Day)
{
var DefaAnahtar = Sistem.Name + " , " + "Defa" + " , " + Saat.ToString("yyyyMMddHHmm");
var DefaSayisi = Sistem.SayiTablosunuOku(DefaAnahtar);
if (DefaSayisi <= DefaLimiti )// limitte ise dahil kk
{
var EmirSembol = Sistem.AktifViopKontrat;
var Pozisyon = Sistem.PozisyonKontrolOku(Sistem.Name + " , " + EmirSembol);
var SonYon = "";
for (int i = 0; i < MySistem.Yon.Count; i++)
{
if (MySistem.Yon[i] != "")
SonYon = MySistem.Yon[i];
}
// Emir Miktarını Hesapla
var Miktar = 0.0;
if (DefaSayisi == DefaLimiti){Miktar=Pozisyon==0?0:-Pozisyon;}// flate kk
else if (SonYon == "F" && Pozisyon != 0) // Flata Geç
Miktar = -Pozisyon;
else if (SonYon == "A" && Pozisyon != LotSize) // Al
Miktar = LotSize - Pozisyon;
else if (SonYon == "S" && Pozisyon != -LotSize) // Sat
Miktar = -LotSize - Pozisyon;
// Emir Gönder
if (Miktar != 0)
{
Sistem.PozisyonKontrolGuncelle(Sistem.Name + " , " + EmirSembol, Miktar + Pozisyon);
Sistem.EmirSembol = Sistem.AktifViopKontrat;
Sistem.EmirIslem = Miktar > 0 ? "ALIS" : "SATIS";
Sistem.EmirMiktari = Math.Abs(Miktar);
Sistem.EmirSuresi = "GUN";
Sistem.EmirTipi = "KPY";
Sistem.EmirFiyatTipi = "PYS";
Sistem.EmirGonder();
}
DefaSayisi++;
Sistem.SayiTablosunuGuncelle(DefaAnahtar, DefaSayisi);
}
}
}
Sn. Kenten hata vermedi ama her dakika emir gönderip flatlıyor https://uploads.tapatalk-cdn.com/201...b5ac8cf0b3.jpg
hocam orjinal kodun mantığı 1 dakika içinde x den fazla emir verirse son emri göndermemeye kurulu.
robotu durdurmuyor yada pozisyonu kapatmıyor
benim eklediğim aynı dakikada örnekteki gibi mesela limitte 3. emir gönderirse bu emri pozisyon kapama şeklinde yollasın
bir sonraki dakika geldiğinde defa kontrolü sıfırlanıyor robot sistemde varolan son duruma yine pozisyon alarak geçiyor. senin örnekte 3ile 5 saniye sonrasında bu emri kapatmış . defalimitini 1 yaptıysan bu durum olabilir , onun dışında anlayamadım açıkcası
if (DefaSayisi <= DefaLimiti )// limitte ise dahil kk
= işaretini kaldırdım
if (DefaSayisi < DefaLimiti )
Bu şekilde mantığı bozmuyorsa çalıştı ,
sistemin yeni sinyal vermesini bekliyorum
defalimitini kaç yaptın , mesela 3 den fazla yapmasın diyosan limiti 4 yap, 4. işlem poz kapatma olacak
Bu konuyu bende merak ediyorum....bu yük ihtimal yapılır ama overoll hesabı yaparken kayma olabilir....çünkü idealini emri gönderdiği anda borsada fiyat değişebiliyor. ...birde tavan olayı var yani (teminat +- overoll )*0.80 olması lazım diye duşünüyorum...tabii bu sözler bi acemilik düsünceleridir...ustalar mutlaka yardımcı olacaktır
SM-N910C cihazımdan hisse.net mobile app kullanarak gönderildi.
%20 büyük bir pay. limitsiz emir göndermek yerine Sonfiyat * %3 limitli emir gönderirseniz, %20 pay bırakmaktan kurtulursunuz.
PHP Code:
var BistHesap = Sistem.BistHesapOku();
if (BistHesap != null)
{
var Limit = BistHesap.IslemLimit;
var PozisyonList = BistHesap.Pozisyonlar;
Sistem.Mesaj(Limit.ToString());
}
else
{
Sistem.Mesaj("yok");
}
Bu daha mantıklıymış orhan hocam..tesekkürler..ben robotun kullanacağı parayı belirliyorum robot kendi alacağı pay miktarını kendi belirliyor....bu durumda benim belirlediğim paraya +- overoll yaptırabilecek bi yol gösterir misiniz
SM-N910C cihazımdan hisse.net mobile app kullanarak gönderildi.
robot portföyün Yüzde 50 sini kullanacaksa
overell * %50 / birim fiyat yaparak lot bulabilirsiniz.
Günde bir kere overall okuyup her akşam robot ayarlarındaki parametreiyi güncelleyen bir robot da yapılablir.
if (Sistem.ZamanKontrolSaniye("RobotPortfoy") >= 3600) //1 saat
{
//Kronometre Sıfırla
Sistem.ZamanKontrolGuncelle("RobotPortfoy");
//overall oku - hesap yap, lot bul.
...
lot =...;
//lot guncelle
var Sistemim1 = Sistem.SistemGetir("MA2", "IMKBH'GARAN", "G");
Sistemim1.Parametreler[0]=lot;
}
Teşekkürler hocam eve geçince hemen deneyeceğim
SM-N910C cihazımdan hisse.net mobile app kullanarak gönderildi.
orhan bey benim emir gönderme satırlarım böyle. son fiyat *%3 şeklinde nasıl yapabilirim?
if (Islem != "")
{ if (Islem == "ALIS")
Sistem.PozisyonKontrolGuncelle(Sistem.Name + " , " +Sembol, Pozisyon+Miktar);
else if (Islem == "SATIS")
Sistem.PozisyonKontrolGuncelle(Sistem.Name + " , " +Sembol, Pozisyon-Miktar);
if (Islem != "")
Sistem.EmirSembol = Sembol1;
Sistem.EmirIslem = Islem;
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();
sadece viop işlemi yapıyorsanız uğraşmayın bununla.
Alış emrinde;
var limitfiyat = Sistem.SatisFiyat(Sembol) *0.97f;
satış emrinde;
var limitfiyat = Sistem.AlisFiyat(Sembol) *1.03f;
Sistem.EmirTipi = "Limit";
Sistem.EmirFiyati = limitfiyat;
böyle birşey olmalı.
kaldıraçlı piyasalarda gerek yok hocam.
bunun kullanılma sebebi şu. limitsiz emir gönderildiğinde emir fiyatı tavan fiyatıdır. haliyle tavan fiyatı x lot kadar overall olması beklenir, olmaz ise bakiye yetersiz hatası döner. bakiye kontrolü aşmak için daha makul bir yüzdeye indiriliyor bu şekilde.
kaldıraçlı piyasalar da gereksiz yani bu.
https://resmim.net/f/HElQJ2.png
geçen hafta ve bu hafta 1000 er lira para kazanmam gerekirken 1500 tl zarar
bu durumu ancak salak birisi başarabilir
ben başardım :)
http://www.hisse.net/topluluk/showth...=30654&page=14
bu adresteki açık kodlu strateji aralıkta %3.79 kazanmış..
bu strateji + da ise sistemciler çok iyidir. nötr ise sistemciler iyidir. Eksi ise sistemciler nötr dür. çok eksi ise sistemcilerin de kötü gidiyordur. Klasik sistemcilerin genel durumunu ölçme gibi bir özelliği vardır bu strateji kodunun :)
https://image.prntscr.com/image/f_IV...5HaskXU86Q.png
http://prntscr.com/lv0aec
https://image.prntscr.com/image/eqnq...ANChbphfNg.png
https://prnt.sc/lv0r9w
Lib.cs Dosyası:
http://orhan.ws/download/code/ideal/Lib.cs
(iDeal dizinine atıp S menüsünden Lib.cs derle tıklanmalıdır.)
güzel metot üstat bende genel durumu ölçmek için 3 adet ortalama kullanıyorum. bu ayın sıkıntısı ne diye sorarsan gap ler oldu. yeni overall yapanda var sistemde ama bugünle birlikte nötr oldu diyebilirim durum. birtanesi -3 binde . ortalama hafif eksi genel durum.
http://666kb.com/i/dzirazmrhh07d7ycd.png
aşşağıdaki ise dünki kapanış stratejisi.
http://666kb.com/i/dzirbkawtzue89rbx.png
ayın birinden buyana zarar eden olmamış. ama zirvesine göre eğilim aşşağı devam ediyor veya yatayda.
aynı sistem xbank: vadelisini 4 gözle bekliyorum :oleyo:
http://666kb.com/i/dzirnszv6d73vix0d.png
garan :
http://666kb.com/i/dziroxkbxcud4m9p9.png
var BeklemeSayisi = 5;
var KarMarj = 1.0; // yüzde
var StopMarj = 1.0; // yüzde
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatSec("kapanis");
var XX = Sistem.RSI(100);
var X1 = Sistem.MA(XX, "Exp", 2);
var X2 = Sistem.MA(XX, "Exp", 500);
var IZLEYENSTOP = Sistem.Liste(0);
var KARAL = Sistem.Liste(0);
var SonYon = "";
var Fiyat = 0.0f;
var FlatBarNo = 0;
for (int i = 1; i < V.Count; i++)
{
var AlisSinyal = X1[i] >= X2[i];
var SatisSinyal = X1[i] <= X2[i];
IZLEYENSTOP[i] = Sistem.İzleyenStopYuzde(StopMarj, i);
if (IZLEYENSTOP[i] == 0) İZLEYENSTOP[i] = C[i];
KARAL[i] = Sistem.KarAlYuzde(KarMarj, i);
if (KARAL[i] == 0) KARAL[i] = C[i];
if (AlisSinyal && SonYon != "A" i >= FlatBarNo + BeklemeSayısı) // alış
{
SonYon = "A";
Sistem.Yon[i] = SonYon;
Fiyat = C[i];
}
else if (SatisSinyal && SonYon != "S" && i >= FlatBarNo + BeklemeSayısı) // satış
{
SonYon = "S";
Sistem.Yon[i] = SonYon;
Fiyat = C[i];
}
else if ((C[i] < IZLEYENSTOP[i] || C[i] > KARAL[i]) && SonYon == "A") // alıştan flate
{
SonYon = "F";
Sistem.Yon[i] = SonYon;
Fiyat = C[i];
FlatBarNo = İ;
}
else if ((C[i] > IZLEYENSTOP[i] || C[i] < KARAL[i]) && SonYon == "S") // satıştan flate
}
SonYon = "F";
Sistem.Yon[i] = SonYon;
Fiyat = C[i];
FlatBarNo = İ;
}
}
Sistem.Cizgiler[0].Deger = X1;
Sistem.Cizgiler[1].Deger = X2;
Sistem.Cizgiler[2].Deger = IZLEYENSTOP;
Sistem.Cizgiler[3].Deger = KARAL;
eski bir sistem hata veriyor düzeltemedim yardımcı olabilir misiniz
tesekkür ederim
Aralik ayi kabiz ama sorun yok bende şimdilik.
Biz devre disiyiz 2018 kapandi bizde