Oğlum sağlam yaz kodları çocuum :rules:
https://i.hizliresim.com/kg6rqif.png
OYAK'ın tötünü gördüm.. :kahkah:
Printable View
Oğlum sağlam yaz kodları çocuum :rules:
https://i.hizliresim.com/kg6rqif.png
OYAK'ın tötünü gördüm.. :kahkah:
275'e dayandık, o iş tamam.. :ok: Sırada 270 var. Orayı da kırdık mı.. Uuuu Uçtuk :wave:
https://i.hizliresim.com/1yxy0ow.png
Forumda grafiklerimi sevmiyolar.. alay konusu ediyolar. İyi yoldayım demek. :one:
Buradan ayrılmayayım.
Şimdi okullu olduk.. :ok: gece gece kaptırdık paraları.
İlk deneyim ve ilk izlenim: olacak.. gibi..
Uğraşılmış, emek harcanmış tamam.
Ben amatörüm, istediğim gibi boyar çizerim, fakat
iDeal UI daha kullanışlı - daha profesyonel olabilirdi..
Kod yazma modülü ise berbat ötesi..
Yani bi VS2022 olmasını beklemiyorum ama tab tuşunun fonksiyonu olsaydı hiç olmazsa.
Bildiğiniz mundar işte.. :oleyo:
https://i.hizliresim.com/45x2xlp.png
Derme çatma ilk sistem görüntüsü:
https://i.hizliresim.com/1mx76oa.png
https://i.hizliresim.com/l06iwme.png
PHP Code:
var PeriyotHMA = Sistem.Parametreler[0];//18
var PeriyotWMAL = Sistem.Parametreler[1];//21
var PeriyotWMAH = Sistem.Parametreler[2];//9
var BarKapanis = Sistem.GrafikFiyatSec("Kapanis");
var BarYuksek = Sistem.GrafikFiyatSec("Yuksek");
var BarDusuk = Sistem.GrafikFiyatSec("Dusuk");
var BarAcilis = Sistem.GrafikFiyatSec("Acilis");
var HMA = Sistem.HullMA(BarKapanis, PeriyotHMA);
var WMAH = Sistem.MA(BarYuksek,"Weighted", PeriyotWMAH);
var WMAL = Sistem.MA(BarDusuk,"Weighted", PeriyotWMAL);
Sistem.Cizgiler[0].Deger = HMA;
//Sistem.Cizgiler[1].Deger = WMAH;
Sistem.Cizgiler[2].Deger = WMAL;
var YON = "";
for (int i = 0; i<Sistem.BarSayisi; i++)
{
if (YON != "A")
{
if (BarKapanis[i] >= HMA[i] && BarYuksek[i] >= WMAH[i] && YON != "A")
{
if (BarKapanis[i] >= BarAcilis[i])
{
Sistem.Yon[i] = "A";
YON="A";
}
}
}
else if (YON != "S")
{
if (BarKapanis[i] < HMA[i] || (BarYuksek[i] < WMAH[i] && BarDusuk[i]< HMA[i]))
{
Sistem.Yon[i] = "S";
YON="S";
}
}
}
Bugün seans sırasında denedim, aldım sattım.
Anlık veri ve masaüstü uygulama olunca kuenbinin web tabanlı uygulamasından daha verimli oldu.
Masaüstü uygulama olmasına rağmen pencereleri monitörlere dağıtamıyorum ama.. eksikleri çok.
https://i.hizliresim.com/mlo2yc8.png
Dün gece sabaha kadar uğraştım.. ense köküme vurdu, ağrıyo.. Bu akşam erken yatıp bütün hafta sonu biraz uğraşayım kodlarla.
Pazartesi salı günü seans sırasında denemeler yaparım.. sonra bas bas paraları robota, bi daha mı gelecek.. gömsün paraları..
Kaç zamandır tatlı kaşığıyla biriktirdiğimi hanımın Ayaş domatesi kaynattığı o 20 litrelik aluminyum tencereyle geri verip duruyorum elalemin kodlarına.. çabalarım çok da işe yaramıyor yani.
Belki yeni robot kızım benden daha iyi sonuç alır.
https://i.hizliresim.com/ekxwdug.png
Hele ki bi harvesting yapan kodoğlusu var azrailin tırpanıyla dolaşıp duruyo hisseleri
https://i.hizliresim.com/a3iww17.png
https://i.hizliresim.com/a3562jn.png
Bist için
https://i.hizliresim.com/74bjvd2.png
yön tayini
https://i.hizliresim.com/4slrn35.png
yapılmadı henüz..
https://i.hizliresim.com/5slffjh.png
Benim için 275 USD stop elzem.
https://i.hizliresim.com/jaxxc7w.png
Yükselemiyor bir türlü.. YÜKSELMİYOR.
https://i.hizliresim.com/11zj7nz.png
Aşağı doğru gitmeye başlarsa; ki artık yavaş yavaş yukarıdaki 500 USD bölgesi hedefine inancım azalmaya başladı; nereye kadar gideceğini kestirmek.. şu an için erken.. gibi..
Başımı ağrıtacak, anladım.
Zamanında çok balonlar görüldü..
https://i.hizliresim.com/5q55ejg.png
Bu da bebelere balon..
https://i.hizliresim.com/qpe2cbm.pngPHP Code:
var Increment = 0.065; // Sistem.Parametreler[0];
var AccelerationFactor = 0.43; // = Sistem.Parametreler[1];
var SonYon = string.Empty;
var Sinyal = string.Empty;
var C = Sistem.GrafikFiyatSec("Kapanis");
var PSAR = Sistem.Parabolic(C, Increment, AccelerationFactor);
for (int i = 1; i < Sistem.BarSayisi; i++)
{
if (PSAR[i] > C[i]) Sinyal = "S";
if (PSAR[i] < C[i]) Sinyal = "A";
if (SonYon != "A" && Sinyal == "A")
{
Sistem.Yon[i] = "A";
SonYon = "A";
}
if (SonYon != "S" && Sinyal == "S")
{
Sistem.Yon[i] = "S";
SonYon = "S";
}
}
Sistem.Cizgiler[0].Deger = PSAR;
https://i.hizliresim.com/5csxi88.png
PHP Code:
var C = Sistem.GrafikFiyatSec("Kapanis");
var SonYon = string.Empty;
var Sinyal = string.Empty;
for (float AF = 0.05f; AF <= 1.0f; AF += 0.001f)
{
for (float INC = 0.001f; INC <= 0.5f; INC += 0.01f)
{
var PSAR = Sistem.Parabolic(C, INC, AF);
for (int i = 0; i < Sistem.BarSayisi; i++)
Sistem.Yon[i] = string.Empty;
for (int i = 1; i < Sistem.BarSayisi; i++)
{
if (PSAR[i] > C[i]) Sinyal = "S";
if (PSAR[i] < C[i]) Sinyal = "A";
//YÖN KALIBI
if (SonYon != "A" && Sinyal == "A")
{
Sistem.Yon[i] = "A";
SonYon = "A";
}
if (SonYon != "S" && Sinyal == "S")
{
Sistem.Yon[i] = "S";
SonYon = "S";
}
}
Sistem.Optimizasyon("Acceleration Factor, Increment", AF, INC);
}
}
https://i.hizliresim.com/5t4jbri.png
https://i.hizliresim.com/s5io79w.png
Böyle hesaplanır..
Böyle kazandırır.PHP Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
namespace INVENTOR_Analiz_CS
{
public class clsCalculate_PSar
{
// CurrentSAR = PriorSAR + Prior AF * ( PriorEP - PriorSAR)
List<clsBar> Barlar = new List<clsBar>();
int barID;
bool isUpTrend;
int upTrendStartBarID;
int downTrendStartBarID;
double priorAF;//Acceleration Factor
double priorEP;//Extreme Point
double priorSAR;
double maxOfInitialBars;
double minOfInitialBars;
int searchCount;
public void CalculatePSAR_PIVOT(int cloudId, strIndicatorPeriods_PSAR periods, List<clsBar> BARLAR)
{
enuGrafikDovizTipi DOVIZ = enuGrafikDovizTipi.GrafikDovizTipi_TL;
if (!App.BIST.boolShowTLGraph)
DOVIZ = enuGrafikDovizTipi.GrafikDovizTipi_USD;
List<clsBar> xBarlar = new List<clsBar>();
clsBar virtualBar = new clsBar(null)
{
};
xBarlar.Add(virtualBar);
for (int i = 0; i <= 2 * periods.SearchCount + 1; i++)
{
clsBar xbar = new clsBar(null)
{
GercekKapanis = BARLAR[i].GercekKapanis,
GercekAcilis = BARLAR[i].GercekAcilis
};
xbar.PSAR.ParSar = BARLAR[i].PSAR.ParSar;
xBarlar.Add(xbar);
}
double barOneRealClose = xBarlar[1].GercekKapanis;
double barOnePSarValue= xBarlar[1].PSAR.ParSar;
//Son gün kapanış değeri virtual bara ( 0 numaralı bar) aktarılıyor
//Eğer son gün kapanış >= açılış ise kapanış - 2 * PriceStep kadar aşağıdan kapanış ver
//Eğer son gün kapanış < açılış ise kapanış + 2 * PriceStep kadar aşağıdan kapanış ver
if (xBarlar[1].GercekKapanis >= xBarlar[1].GercekAcilis)
xBarlar[0].GercekKapanis = xBarlar[1].GercekKapanis - 2 * App.BIST.GraphTool.PriceStep(xBarlar[1].GercekKapanis, DOVIZ);
else
xBarlar[0].GercekKapanis = xBarlar[1].GercekKapanis + 2 * App.BIST.GraphTool.PriceStep(xBarlar[1].GercekKapanis, DOVIZ);
//Açılış değeri olarak son gün kapanış değerini kullan
xBarlar[0].GercekAcilis = xBarlar[1].GercekKapanis;
CalculatePSAR(periods, xBarlar, true, 1);
BARLAR[0].PSAR_Cloud[cloudId].VirtualNextDayPivotValue = xBarlar[0].PSAR.ParSar;
//YUKARIDAKİ İKİ SATIR PİVOT DEĞERİN HESAPLANMASI İÇİN YETERLİ
BARLAR[0].PSAR_Cloud[cloudId].VirtualNextDayPivotValue =
App.BIST.GraphTool.RegulatePriceToNearestPriceValue(BARLAR[0].PSAR_Cloud[cloudId].VirtualNextDayPivotValue, DOVIZ);
}
public void CalculatePSAR(strIndicatorPeriods_PSAR periods, List<clsBar> BARLAR, bool useTraderSettings, int customBarCountForCalculations = 0)
{
this.Barlar = BARLAR;
this.searchCount = periods.SearchCount;
if (Barlar.Count < this.searchCount) return;
if (customBarCountForCalculations == 0)
if (useTraderSettings)
customBarCountForCalculations = App.BIST.TradingGraph.BarCountForCalculations;
else
customBarCountForCalculations = App.BIST.IA_Constants.BarCountForCalculations;
barID = customBarCountForCalculations + periods.SearchCount;
if (Barlar.Count < barID) return;
//İlk searchCount adet bardaki en yüksek değer
maxOfInitialBars = getHIGHofOpenClose(barID, this.searchCount);
//İlk searchCount adet bardaki en düşük değer
minOfInitialBars = getLOWofOpenClose(barID, this.searchCount);
//ilk searchCount adet bardaki en yüksek ve en düşük değerlerin oluşturduğu yatay kanalın dışına çıkmış ilk barı tespit et
barID = getFirstBarIDForCalculation(barID);
int iterationBarCount = customBarCountForCalculations;
//if (useTraderSettings)
// iterationBarCount = App.BIST.TradingGraph.BarCountForCalculations;
//else
// iterationBarCount = App.BIST.IA_Constants.BarCountForCalculations;
if (Barlar[barID].GetPrice(enuUseForCalculation.RealHighOf_OpenClose) >= maxOfInitialBars)
{//UPTREND
for (int i = barID; i < iterationBarCount; i++)
Barlar[i].PSAR.ParSar = minOfInitialBars;
isUpTrend = true;
upTrendStartBarID = barID;
priorEP = maxOfInitialBars;
}
else if (Barlar[barID].GetPrice(enuUseForCalculation.RealLowOf_OpenClose) <= minOfInitialBars)
{//DOWNTREND
for (int i = barID; i < iterationBarCount; i++)
Barlar[i].PSAR.ParSar = maxOfInitialBars;
isUpTrend = false;
downTrendStartBarID = barID;
priorEP = minOfInitialBars;
}
else
{
return;
}
priorSAR = Barlar[barID].PSAR.ParSar;
priorAF = periods.Increment;
this.searchCount--;
while (barID > 0)
{
barID--;
double currentSAR = priorSAR + priorAF * (priorEP - priorSAR);
if (isUpTrend)
{
if (Barlar[barID].GetPrice(enuUseForCalculation.RealLowOf_OpenClose) >= currentSAR)
{
maxOfInitialBars = priorEP;
for (int i = barID; i <= upTrendStartBarID; i++)
maxOfInitialBars = Math.Max(maxOfInitialBars, Barlar[i].GetPrice(enuUseForCalculation.RealHighOf_OpenClose));
if (maxOfInitialBars > priorEP)
{
priorEP = maxOfInitialBars;
priorAF += periods.Increment;
if (priorAF > periods.AccelerationFactor)
priorAF = periods.AccelerationFactor;
}
}
else
{
priorAF = periods.Increment;
isUpTrend = false;
currentSAR = getHIGHofOpenClose(barID, searchCount);
priorEP = Barlar[barID].GetPrice(enuUseForCalculation.RealLowOf_OpenClose);
downTrendStartBarID = barID;
}
Barlar[barID].PSAR.ParSar = currentSAR;
priorSAR = currentSAR;
}
else
{
if (Barlar[barID].GetPrice(enuUseForCalculation.RealHighOf_OpenClose) <= currentSAR)
{
minOfInitialBars = priorEP;
for (int i = barID; i <= downTrendStartBarID; i++)
minOfInitialBars = Math.Min(minOfInitialBars, Barlar[i].GetPrice(enuUseForCalculation.RealLowOf_OpenClose));
if (minOfInitialBars < priorEP)
{
priorEP = minOfInitialBars;
priorAF += periods.Increment;
if (priorAF > periods.AccelerationFactor) priorAF = periods.AccelerationFactor;
}
}
else
{
priorAF = periods.Increment;
isUpTrend = true;
currentSAR = getLOWofOpenClose(barID, searchCount);
priorEP = Barlar[barID].GetPrice(enuUseForCalculation.RealHighOf_OpenClose);
upTrendStartBarID = barID;
}
Barlar[barID].PSAR.ParSar = currentSAR;
priorSAR = currentSAR;
}
}
}
private double getLOWofOpenClose(int barID, int pastBarsCount)
{
//barID numaralı bar ile birlikte
//geçmişteki pastBarsCount adet bar içindeki
//en düşük değeri döndürür.
double minOfBars;
minOfBars = Barlar[barID].GetPrice(enuUseForCalculation.RealLowOf_OpenClose);
for (int i = 1; i < pastBarsCount; i++)
minOfBars = Math.Min(minOfBars, Barlar[barID + i].GetPrice(enuUseForCalculation.RealLowOf_OpenClose));
return minOfBars;
}
private double getHIGHofOpenClose(int barID, int pastBarsCount)
{
//barID numaralı bar ile birlikte
//geçmişteki pastBarsCount adet bar içindeki
//en yüksek değeri döndürür.
double maxOfBars;
maxOfBars = Barlar[barID].GetPrice(enuUseForCalculation.RealHighOf_OpenClose);
for (int i = 1; i < pastBarsCount; i++)
maxOfBars = Math.Max(maxOfBars, Barlar[barID + i].GetPrice(enuUseForCalculation.RealHighOf_OpenClose));
return maxOfBars;
}
private int getFirstBarIDForCalculation(int _barID)
{//Recursive method
if(_barID == 0) return 0;
_barID--;
while (
Barlar[_barID].GetPrice(enuUseForCalculation.RealHighOf_OpenClose) < maxOfInitialBars
&
Barlar[_barID].GetPrice(enuUseForCalculation.RealLowOf_OpenClose) > minOfInitialBars
)
{
_barID--;
if (_barID == 0) return 0;
}
if (
Barlar[_barID].GetPrice(enuUseForCalculation.RealLowOf_OpenClose) > maxOfInitialBars
&
Barlar[_barID].GetPrice(enuUseForCalculation.RealLowOf_OpenClose) < minOfInitialBars
)
{
// bar.YUKSEK > maxof ve bar.DUSUK < minof olması durumunda değerleri güncelle
searchCount++;
maxOfInitialBars = getHIGHofOpenClose(_barID, searchCount);
minOfInitialBars = getLOWofOpenClose(_barID, searchCount);
_barID = getFirstBarIDForCalculation(_barID);
}
return _barID;
}
}
}
https://i.hizliresim.com/r0omnex.png
https://i.hizliresim.com/qdchz6y.png
Anlayan anlar.
PHP Code:
private void btnPerformPSAR_Click(object sender, RoutedEventArgs e)
{
double ratio=App.BIST.TradingGraph.GunlukBarlar[0].GercekKapanis / App.BIST.TradingGraph.GunlukBarlar[520].GercekKapanis;
var retStr = System.Windows.MessageBox.Show("Oran 520 -> 0 : " + Math.Round(ratio * 100, 0) + " Hesaplama uzun sürecek. Devam etmek?", "Onay", MessageBoxButton.YesNo);
if (retStr != MessageBoxResult.Yes)
{
return;
}
PSarSonuclari tabloSatirlari = new PSarSonuclari();
int id = 1;
int daysCountForPerformanceTest = 520;
//using (System.IO.StreamWriter file = new System.IO.StreamWriter(App.BIST.Klasor_INVENTOR_Sinyaller + "\\PSAR Performance.txt", false))
//{
//file.WriteLine("PSAR AL-SAT Hesabı : Son " + daysCountForPerformanceTest.ToString() + " günde 100 birim para kaç birim oldu ");
for (int search_count = 2; search_count <= 49; search_count++) //Minimum="2" Maximum="50" SmallChange="1"
{
int PSar_SearchCount = Convert.ToInt16(search_count);
//GÜNCELLEME ACCELERATION FACTOR DEĞERİ INIMUM 0.05 OLACAK ŞEKİLDE HESAPLAMA YAPILACAK
for (int acceleration_factor = 5; acceleration_factor <= 50; acceleration_factor++) //Minimum="0.05" OLACAK Maximum="0.50" SmallChange="0.01"
{
double PSar_AccelerationFactor = Math.Round((double)acceleration_factor / 100, 2);
for (int increment = 1; increment <= 200; increment++) // Minimum = "0.001" Maximum = "0.2" SmallChange = "0.001"
{
double PSar_Increment = Math.Round((double)increment / 1000, 3);
App.BIST.TradingGraph.Menkul.ResetPSAR_Period(PSar_AccelerationFactor, PSar_Increment, PSar_SearchCount);
clsCalculate_PSar pSar = new clsCalculate_PSar();
pSar.CalculatePSAR(App.BIST.TradingGraph.Menkul.indicatorPeriods.PSAR, App.BIST.TradingGraph.GunlukBarlar, true, daysCountForPerformanceTest);
//file.WriteLine("____________________________________________________________________________________________________");
//file.WriteLine("SearchCount:" + PSar_SearchCount.ToString() + " / " + "AccelerationFactor:" + PSar_AccelerationFactor.ToString() + " / " + "Increment:" + PSar_Increment.ToString());
//string methodOutput = AlSat_Performans_Hesapla_PSAR(hesaplanacakGunSayisi: daysCountForPerformanceTest);
//file.WriteLine(methodOutput);
//file.WriteLine("********");
int islemSayisi = 0;
double gainLoss = AlSat_Performans_Hesapla_PSAR(hesaplanacakGunSayisi: daysCountForPerformanceTest, ref islemSayisi);
PSarSonucu psonuc = new PSarSonucu
{
ID = id,
PSar_SearchCount = PSar_SearchCount,
PSar_Increment = PSar_Increment,
PSar_AccelerationFactor = PSar_AccelerationFactor,
GainWeight = Math.Round(gainLoss, 1),
islemSayisi = islemSayisi
};
id++;
tabloSatirlari.Add(psonuc);
//Console.WriteLine(id.ToString());
}
//Console.WriteLine(id.ToString());
}
Console.WriteLine(id.ToString());
}
//}
clsExportToExcel<PSarSonucu, PSarSonuclari> Tablo = new clsExportToExcel<PSarSonucu, PSarSonuclari>
{
dataToPrint = tabloSatirlari
};
Tablo.GenerateReport();
System.Windows.MessageBox.Show("Tamamlandı");
}
PHP Code:
private double AlSat_Performans_Hesapla_PSAR(int hesaplanacakGunSayisi, ref int _alisIslemiSayisi)
{
int alisIslemiSayisi = 0;
int satisIslemiSayisi = 0;
double birikmisPara = 100.0;
bool boolPozisyonda = false;
double lotBakiyesi = 0.0;
int hesaplamayaBaslanacakBarNumarasi = 0;
for (int i = hesaplamayaBaslanacakBarNumarasi + hesaplanacakGunSayisi; i >= hesaplamayaBaslanacakBarNumarasi; i--)
{
if (boolPozisyonda)
{
//pozisyonda: PSAR altında kapanış olduysa SAT
if (App.BIST.TradingGraph.GunlukBarlar[i].GercekKapanis < App.BIST.TradingGraph.GunlukBarlar[i].PSAR.ParSar)
{
birikmisPara = lotBakiyesi * App.BIST.TradingGraph.GunlukBarlar[i].GercekKapanis;
lotBakiyesi = 0;
satisIslemiSayisi++;
boolPozisyonda = false;
}
}
else
{
//pozisyonda değil: PSAR üzerinde kapanış olduysa AL
if (App.BIST.TradingGraph.GunlukBarlar[i].GercekKapanis >= App.BIST.TradingGraph.GunlukBarlar[i].PSAR.ParSar)
{
lotBakiyesi = birikmisPara / App.BIST.TradingGraph.GunlukBarlar[i].GercekKapanis;
birikmisPara = 0.0;
alisIslemiSayisi++;
boolPozisyonda = true;
}
}
}
//Son gün lotları paraya çevir
if (boolPozisyonda)
{
birikmisPara = lotBakiyesi * App.BIST.TradingGraph.GunlukBarlar[0].GercekKapanis;
satisIslemiSayisi++;
}
//return (birikmisPara.ToString("0") + " birim oldu. " + "Alış işlemi sayısı: " + alisIslemiSayisi);
_alisIslemiSayisi = alisIslemiSayisi;
return birikmisPara;
}
https://i.hizliresim.com/gbmo9hh.png
80 adet farklı lokasyonda bulunan; PEAK kazanç değeri gösteren; PSAR hesaplaması sonucu ağırlıklara göre AL-SAT sinyali üreten mızraklar. !!
Her bir satır için 480.000, hesaplama yapıldı..
Seksen satır x dört yüz seksen bin :oleyo: bir mızrağa karşılık geliyor.
Hindistan'da balon satışları yerlerdeymiş.. :one: git orada sat bakalım satabilecek misin?