Hocam 0 - 1 yazmayacaksınız. "0 ve 1 numaralı göstergeleri" işaretleyerek aktive edeceksiniz.
https://i.ibb.co/x5wt5NS/ideal.jpg
Printable View
Hocam 0 - 1 yazmayacaksınız. "0 ve 1 numaralı göstergeleri" işaretleyerek aktive edeceksiniz.
https://i.ibb.co/x5wt5NS/ideal.jpg
bu ikinci mesajım yardımcı olabilecek var mı acaba???????????????merhabalar ideal kullanmaya yeni basladım ,matrikste kullandıgım bir indikatoru burada indikator olarak yazabilmek mumkun mu ve kapanıs fiyatının son 5 barda bu indikatoru yukarı kestiği senetlerin sorgusu için yardımcı olabilirmisiniz? indikatorun formulunu asagıda paylaşıyorum
P:=input("Period", 5, 100, 10);
Pds:=P+1;
Long:=2/(2+1);
Short:=2/(30+1);
Dir:=Abs(C-Ref(C,-P));
Voli:=Sum(Abs(ROC(C,1,%)),P);
DV:=Dir/Voli;
LS:=DV*(Long-Short)+Short;
Cnst:= POWER(LS,2);
SRI:=If(Cum(1) = Pds,Ref(C,-1)+Cnst*(C-Ref(C,-1)),PREV+Cnst*(C-PREV));
SRI
şimdiden teşekkürler....
Mrb,, kz grafini karlı ise yeşil zararlı ise kırmızı nasıl çizdiriyoruz.
selamlar, aracı kurum hareketleriyle yönlenen bir sistem örneği olan var mı ? kendi yazdığım ma adx vb. indikatörlere filtre olarak eklemek istiyordum, ancak hangi var seçenekleriyle çalıştığını bilmiyorum :)
Merhaba
İdelde kod ile Tek işlem gören hisse senetlerini nasıl buluruz. ?
İyi akşamlar ;
Twitter' da arkadaşlardan bir talepte bulunmam üzerine daha önce bu forumda yazılmış olan bir Darvas Box kodu gönderildi. Kodu istediğim periyotta yani ölçekte ( 5 bar için değil de Örn : 20 bar için ) kullanılabilecek hale getirmek istedim. Ancak kodda yer alan periyot değerini ve for döngüsü içindeki i değerini değiştirdiğimde alt bantın istediğim şekilde değer aldığını ancak üst bantın (fiyatla yukarıya kayma) istediğim gibi değer almadığını gördüm. Bu konu da yardımcı olabilecek bir arkadaş varsa çok sevinirim. Şimdiden emekleriniz için çok teşekkür ederim.
var LOW = Sistem.GrafikFiyatSec("Dusuk");
var HIGH = Sistem.GrafikFiyatSec("Yuksek");
var boxp = 5;
var LLV = Sistem.LLV(boxp, LOW);
var HHV = Sistem.HHV(boxp, HIGH);
var HHV3 = Sistem.HHV(boxp-2, HIGH);
var HHV4 = Sistem.HHV(boxp-1, HIGH);
var LowL = Sistem.Liste(0);
var NewH = Sistem.Liste(0);
var box1 = Sistem.Liste(0);
var box2 = Sistem.Liste(0);
var box3 = Sistem.Liste(0);
var bt15 = Sistem.Liste(0);
var bt25 = Sistem.Liste(0);
var bsince = 0 ;
for (int i=5; i< Sistem.BarSayisi; i++)
{
if (LOW [i] == LLV[i]) LowL[i] = LOW[i] ;
if (LOW[i-1] == LLV[i]) LowL[i] = LOW[i-1] ;
if (LOW[i-2] == LLV[i]) LowL[i] = LOW[i-2] ;
if (LOW[i-3] == LLV[i]) LowL[i] = LOW[i-3] ;
if (LOW[i-4] == LLV[i]) LowL[i] = LOW[i-4] ;
else LowL[i] = LLV[i]; //LowL:=If(L=LLV(L,5),L,
//If(Ref(L,-1)=LLV(L,5),Ref(L,-1),
//If(Ref(L,-2)=LLV(L,5),Ref(L,-2),
//If(Ref(L,-3)=LLV(L,5),Ref(L,-3),
//If(Ref(L,-4)=LLV(L,5),Ref(L,-4), 0)))));
if ( HIGH[i] > HHV[i-1] ) NewH[i] = HIGH[i];
else NewH[i] = NewH[i-1]; //NewH:=ValueWhen(1,H>Ref(HHV (H,5),-1),H);
if( HHV3[i] < HHV4[i] ) box1[i] = 1;
else box1[i] = -1; //box1:=HHV(H,3)<HHV(H,4);
if ( HIGH[i] > HHV[i-1] && box1[i] == -1 ) bsince = i ;
if ( i-bsince == 3 )
{
bsince = 0 ;
box2 [i] = NewH[i] ;
box3 [i] = LowL[i] ;
}
else
{
box2 [i] = box2 [i-1] ; //box2:=ValueWhen(1,BarsSince(H>Ref(HHV(H,5),-1))=3 AND box1=true,NewH);
box3 [i] = box3 [i-1] ; //box3:=ValueWhen(1,BarsSince(H>Ref(HHV(H,5),-1))=3 AND box1=true,LowL);
}
bt15 [i] = box3[i] - ( box3[i] * 1.5f ) /100 ; //BottomBox-(BottomBox*1.5)/100;
bt25 [i] = box3[i] - ( box3[i] * 2.5f ) /100 ; //BottomBox-(BottomBox*2.5)/100
}
Sistem.Cizgiler[0].Deger = box2 ;
Sistem.Cizgiler[0].Aciklama = "TopBox";
Sistem.Cizgiler[1].Deger = box3 ;
Sistem.Cizgiler[1].Aciklama = "BottomBox";
Sistem.Cizgiler[2].Deger = bt15 ;
Sistem.Cizgiler[2].Aciklama = "1.5f-";
Sistem.Cizgiler[3].Deger = bt25 ;
Sistem.Cizgiler[3].Aciklama = "2.5f-";
////
Sistem örneği değil ama...
Örnek bir kod var var İdeal kütüphanesinde.
Bu haliyle bile belli açılardan en başarılı veri terminali olsa da,
kütüphane vb. konularında biraz sıkıntı var İdeal' de de.
Bazı değişkenler orijinal ismiyle, bazısı yarı İngilizce yarı Türkçe, bazıları Türkçe vb...
Bu da tahmin edilebilirliği sınırlıyor. Kolay erişilebilir, kullanılabilir bir kütüphane de olmayınca...
Neyse. Kullanabileceğiniz bir takım fonksiyon, değişken vb. lere örnek olabilir belki:
www.directfn.com.tr - /sistemler/KurumTradeTakip
var Senet = "ASELS";
var Miktar = 1;
var Anahtar = Sistem.Name + DateTime.Now.Date.ToString("yyyyMMdd");
var TradeID = Sistem.SayiTablosunuOku(Anahtar);
var Emirler = Sistem.HisseIslemleriniOku(TradeID);
var Pozisyon = Sistem.PozisyonKontrolOku(Anahtar+Senet);
if (TradeID > 0 && Emirler.Count > 0)
{
foreach (var item in Emirler)
{
if (item.Symbol == Senet && (item.BuyerCode == "YKR"))
{
Sistem.PozisyonKontrolGuncelle(Anahtar+Senet, Pozisyon+Miktar);
Sistem.EmirSembol = "IMKBH'"+Senet;
Sistem.EmirIslem = "Alış";
Sistem.EmirMiktari = (int)Miktar;
Sistem.EmirSuresi = "KIE";
Sistem.EmirTipi = "Piyasa";
Sistem.EmirGonder();
}
}
}
TradeID = Emirler[Emirler.Count - 1].TradeID;
Sistem.SayiTablosunuGuncelle(Anahtar, TradeID);
.............
Darvas Box' a yabancıyım.
Bu göstergeyi hangi periyotta açarsanız(örneğin Aylık, Haftalık, Günlük... 5 Dk...) ona göre değerlerin değişeceğinin farkındasınız değil mi?
Ayrıca "boxp" ye 5 değeri atanmış ama...
For döngüsü (i=5 olan değil. O sadece i' nin "-" eksi değer almasını engellemek için ....) değerleri "boxp" değerinin değişmeyeceği öngörülerek yazılmış.
DönemÇevir fonksiyonu da kullanılmadığı için her periyotda farklı değerler üretilir.
LIB.CS
twitte sorulmuş uraya atayım.
daha önce yine buradan almış olduğum kodlar.
kendim kullanmadım.
bu örnek sanırım Sn.Tiberius'tandı.
PHP Code:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace ideal
{
public class Lib
{
public List<float> CCI(dynamic SistemX, dynamic VerilerX, int sayiX)
{
var C = SistemX.GrafikFiyatOku(VerilerX, "Kapanis");
var H = SistemX.GrafikFiyatOku(VerilerX, "Yuksek");
var L = SistemX.GrafikFiyatOku(VerilerX, "Dusuk");
var O = SistemX.GrafikFiyatOku(VerilerX, "Open");
var tipikfiyat = SistemX.GrafikFiyatOku(VerilerX, "Tipik");
var list = new List<float>(new float[C.Count]);
try
{
if (C.Count > sayiX)
{
List<float> orttipikfiyat = new List<float>(SistemX.MA(tipikfiyat, "Simple", sayiX));
var ortsapma = new List<float>(new float[C.Count]);
for (int i = 0; i < C.Count; i++)
{
if (i >= sayiX)
{
float sapma = 0f;
for (int j = i - sayiX + 1; j <= i; j++)
sapma += Math.Abs(orttipikfiyat[i] - tipikfiyat[j]);
ortsapma[i] = sapma / sayiX;
list[i] = (tipikfiyat[i] - orttipikfiyat[i]) / (0.015f * ortsapma[i]);
}
}
}
return list;
}
catch { return list; }
}
public List<float> RSI(dynamic SistemX, dynamic V, int sayiX)
{
var list = new List<float>(new float[V.Count]);
var x = new List<float>(new float[V.Count]);
var y = new List<float>(new float[V.Count]);
try
{
var RSI = SistemX.RSI(V, sayiX);
var HHV = SistemX.HHV(sayiX, RSI);
var LLV = SistemX.LLV(sayiX, RSI);
for (int i = 1; i < SistemX.BarSayisi; i++)
{
x[i] = RSI[i] - LLV[i];
y[i] = HHV[i] - LLV[i];
}
var sum1 = SistemX.Sum(x, 3);
var sum2 = SistemX.Sum(y, 3);
for (int i = 1; i < SistemX.BarSayisi; i++)
{
list[i] = (sum1[i] / sum2[i]) * 100;
}
return list;
}
catch { return list; }
}
public List<float> MyHHV(dynamic SistemX, dynamic V, int sayiX)
{
// HHV(H,Mov(C,3,E))
var list = new List<float>(new float[V.Count]);
try
{
var C = SistemX.GrafikFiyatOku(V, "Kapanis");
var H = SistemX.GrafikFiyatOku(V, "Yuksek");
var L = SistemX.GrafikFiyatOku(V, "Dusuk");
var Mov = SistemX.MA(C, "Exp", sayiX);
for (int i = 100; i < SistemX.BarSayisi; i++)
{
var listx = SistemX.HHV((int)Mov[i], H);
list[i] = listx[i];
}
return list;
}
catch (Exception e) { MessageBox.Show(e.ToString()); return list; }
}
public List<float> FxSniper(dynamic SistemX, dynamic V, int sayi1, int sayi2)
{
var list = new List<float>(new float[V.Count]);
try
{
var C = SistemX.GrafikFiyatOku(V, "Kapanis");
int barCount = SistemX.BarSayisi;
var mtm = new List<float>(new float[V.Count]);
var absmtm = new List<float>(new float[V.Count]);
var ErgoCCI = new List<float>(new float[V.Count]);
var var1 = new List<float>(new float[V.Count]);
var var2 = new List<float>(new float[V.Count]);
var var2a = new List<float>(new float[V.Count]);
var var2b = new List<float>(new float[V.Count]);
for (int i = sayi2; i < barCount; i++)
mtm[i] = C[i] - C[i - 1];
for (int i = sayi2; i < barCount; i++)
absmtm[i] = Math.Abs(mtm[i]);
var1 = SistemX.MA(mtm, "Exp", sayi1);
var2 = SistemX.MA(var1, "Exp", sayi2);
var2a = SistemX.MA(absmtm, "Exp", sayi1);
var2b = SistemX.MA(var2a, "Exp", sayi2);
for (int i = sayi2; i < barCount; i++)
{
if (var2b[i] != 0)
list[i] = (500 * var2[i]) / (var2b[i]);
}
return list;
}
catch (Exception e) { MessageBox.Show(e.ToString()); return list; }
}
}
}
Cağlar beyden
vade sonları Terorik fiyat farklarını devre dışı bırakan örnek kod, yeniş tarihler ilave edilmesi lazım.
PHP Code:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ideal
{
public class Lib
{
private const int FutureMinExpireDay = 24;
public readonly List<DateTime> FutureExpireDates = new List<DateTime>
{
new DateTime(2018, 10, 31, 18, 15, 0),
new DateTime(2018, 08, 31, 18, 15, 0),
new DateTime(2018, 06, 29, 18, 15, 0),
new DateTime(2018, 04, 30, 18, 15, 0),
new DateTime(2018, 02, 28, 18, 15, 0),
new DateTime(2017, 12, 29, 18, 15, 0),
new DateTime(2017, 10, 31, 18, 15, 0),
new DateTime(2017, 08, 29, 18, 15, 0),
new DateTime(2017, 06, 30, 18, 15, 0),
new DateTime(2017, 04, 28, 18, 15, 0),
new DateTime(2017, 02, 28, 18, 15, 0),
new DateTime(2016, 12, 30, 18, 15, 0),
new DateTime(2016, 10, 31, 17, 45, 0),
new DateTime(2016, 08, 31, 17, 45, 0),
new DateTime(2016, 06, 30, 17, 45, 0),
new DateTime(2016, 04, 29, 17, 45, 0),
new DateTime(2016, 02, 29, 17, 45, 0),
new DateTime(2015, 12, 31, 17, 45, 0),
new DateTime(2015, 10, 30, 17, 45, 0),
new DateTime(2015, 08, 31, 17, 45, 0),
new DateTime(2015, 06, 30, 17, 45, 0),
new DateTime(2015, 04, 30, 17, 45, 0),
new DateTime(2015, 02, 27, 17, 45, 0),
new DateTime(2014, 12, 31, 17, 45, 0),
new DateTime(2014, 10, 31, 17, 45, 0),
new DateTime(2014, 08, 29, 17, 45, 0),
new DateTime(2014, 06, 30, 17, 45, 0),
new DateTime(2014, 04, 30, 17, 45, 0),
new DateTime(2014, 02, 28, 17, 45, 0),
new DateTime(2013, 12, 31, 17, 45, 0),
new DateTime(2013, 10, 31, 17, 45, 0),
new DateTime(2013, 08, 29, 17, 45, 0),
new DateTime(2013, 06, 28, 17, 45, 0),
new DateTime(2013, 04, 30, 17, 45, 0),
new DateTime(2013, 02, 28, 17, 45, 0),
new DateTime(2012, 12, 31, 17, 45, 0),
new DateTime(2012, 10, 31, 17, 45, 0),
new DateTime(2012, 08, 31, 17, 45, 0),
new DateTime(2012, 06, 29, 17, 35, 0),
new DateTime(2012, 04, 30, 17, 35, 0),
new DateTime(2012, 02, 29, 17, 35, 0),
new DateTime(2011, 12, 30, 17, 35, 0),
new DateTime(2011, 10, 31, 17, 35, 0),
new DateTime(2011, 08, 29, 12, 35, 0),
new DateTime(2011, 06, 30, 17, 35, 0),
new DateTime(2011, 04, 29, 17, 35, 0),
new DateTime(2011, 02, 28, 17, 35, 0),
new DateTime(2010, 12, 31, 17, 35, 0),
new DateTime(2010, 10, 27, 17, 35, 0),
new DateTime(2010, 08, 31, 17, 35, 0),
new DateTime(2010, 06, 30, 17, 35, 0),
new DateTime(2010, 04, 30, 17, 35, 0),
new DateTime(2010, 02, 26, 17, 35, 0),
new DateTime(2009, 12, 31, 17, 35, 0),
new DateTime(2009, 10, 30, 17, 35, 0),
new DateTime(2009, 08, 31, 17, 15, 0),
new DateTime(2009, 06, 30, 17, 15, 0),
new DateTime(2009, 04, 30, 17, 15, 0),
new DateTime(2009, 02, 27, 17, 15, 0),
new DateTime(2008, 12, 31, 17, 15, 0),
new DateTime(2008, 10, 31, 17, 15, 0),
new DateTime(2008, 08, 29, 17, 10, 0),
new DateTime(2008, 06, 30, 17, 10, 0),
new DateTime(2008, 04, 30, 17, 10, 0),
new DateTime(2008, 02, 29, 17, 10, 0),
new DateTime(2007, 12, 31, 17, 10, 0),
new DateTime(2007, 10, 31, 17, 10, 0),
new DateTime(2007, 08, 31, 16, 40, 0),
new DateTime(2007, 06, 29, 16, 40, 0)
};
public bool FutureExpires(DateTime date, string period)
{
if (FutureExpireDates == null || FutureExpireDates.Any() == false) return false;
if (date.Day < FutureMinExpireDay) return false;
var fed = DateTime.MinValue;
for (int i = 0; i < FutureExpireDates.Count; i++)
{
var expDate = FutureExpireDates[i];
if (date > expDate) break;
if (date.Date == expDate.Date) fed = expDate;
}
if (fed == DateTime.MinValue) return false;
switch (period)
{
case "B": return date >= fed.AddSeconds(-30);
case "1": return date >= fed.AddMinutes(-2);
case "2": return date >= fed.AddMinutes(-4);
case "3": return date >= fed.AddMinutes(-6);
case "4": return date >= fed.AddMinutes(-8);
case "5": return date >= fed.AddMinutes(-10);
case "8": return date >= fed.AddMinutes(-20); // Gecmise yonelik hesaplamasi zaman alacagindan direk 20 cikardim.
case "10": return date >= fed.AddMinutes(-(fed.Minute % 10 == 0 ? 20 : fed.Minute % 10 + 10));
case "15": return date >= fed.AddMinutes(-(fed.Minute % 15 == 0 ? 30 : fed.Minute % 15 + 15));
case "20": return date >= fed.AddMinutes(-(fed.Minute % 20 == 0 ? 40 : fed.Minute % 20 + 20));
case "30": return date >= fed.AddMinutes(-(fed.Minute % 30 == 0 ? 60 : fed.Minute % 30 + 30));
case "60": return date >= fed.AddMinutes(-(fed.Minute % 60 == 0 ? 120 : fed.Minute % 60 + 60));
case "120": return date >= fed.AddMinutes(-(fed.Minute % 60 == 0 ? 240 : fed.Minute % 60 + 120));
case "240": return date.TimeOfDay >= TimeSpan.FromHours(12);
case "S": return date.TimeOfDay >= TimeSpan.FromHours(10);
case "G": return true;
}
return false;
}
}
}
1 örnek daha. kimden almışım bilmiyorum.
PHP Code:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace ideal
{
public class Lib
{
public List<float> CCI(dynamic SistemX, dynamic VerilerX, int sayiX)
{
var C = SistemX.GrafikFiyatOku(VerilerX, "Kapanis");
var H = SistemX.GrafikFiyatOku(VerilerX, "Yuksek");
var L = SistemX.GrafikFiyatOku(VerilerX, "Dusuk");
var O = SistemX.GrafikFiyatOku(VerilerX, "Open");
var tipikfiyat = SistemX.GrafikFiyatOku(VerilerX, "Tipik");
var list = new List<float>(new float[C.Count]);
try
{
if (C.Count > sayiX)
{
List<float> orttipikfiyat = new List<float>(SistemX.MA(tipikfiyat, "Simple", sayiX));
var ortsapma = new List<float>(new float[C.Count]);
for (int i = 0; i < C.Count; i++)
{
if (i >= sayiX)
{
float sapma = 0f;
for (int j = i - sayiX + 1; j <= i; j++)
sapma += Math.Abs(orttipikfiyat[i] - tipikfiyat[j]);
ortsapma[i] = sapma / sayiX;
list[i] = (tipikfiyat[i] - orttipikfiyat[i]) / (0.015f * ortsapma[i]);
}
}
}
return list;
}
catch { return list; }
}
public List<float> RSI(dynamic SistemX, dynamic V, int sayiX)
{
var list = new List<float>(new float[V.Count]);
var x = new List<float>(new float[V.Count]);
var y = new List<float>(new float[V.Count]);
try
{
var RSI = SistemX.RSI(V, sayiX);
var HHV = SistemX.HHV(sayiX, RSI);
var LLV = SistemX.LLV(sayiX, RSI);
for (int i = 1; i < SistemX.BarSayisi; i++)
{
x[i] = RSI[i] - LLV[i];
y[i] = HHV[i] - LLV[i];
}
var sum1 = SistemX.Sum(x, 3);
var sum2 = SistemX.Sum(y, 3);
for (int i = 1; i < SistemX.BarSayisi; i++)
{
list[i] = (sum1[i] / sum2[i]) * 100;
}
return list;
}
catch { return list; }
}
public List<float> MyHHV(dynamic SistemX, dynamic V, int sayiX)
{
// HHV(H,Mov(C,3,E))
var list = new List<float>(new float[V.Count]);
try
{
var C = SistemX.GrafikFiyatOku(V, "Kapanis");
var H = SistemX.GrafikFiyatOku(V, "Yuksek");
var L = SistemX.GrafikFiyatOku(V, "Dusuk");
var Mov = SistemX.MA(C, "Exp", sayiX);
for (int i = 100; i < SistemX.BarSayisi; i++)
{
var listx = SistemX.HHV((int)Mov[i], H);
list[i] = listx[i];
}
return list;
}
catch (Exception e) { MessageBox.Show(e.ToString()); return list; }
}
public List<float> FxSniper(dynamic SistemX, dynamic V, int sayi1, int sayi2)
{
var list = new List<float>(new float[V.Count]);
try
{
var C = SistemX.GrafikFiyatOku(V, "Kapanis");
int barCount = SistemX.BarSayisi;
var mtm = new List<float>(new float[V.Count]);
var absmtm = new List<float>(new float[V.Count]);
var ErgoCCI = new List<float>(new float[V.Count]);
var var1 = new List<float>(new float[V.Count]);
var var2 = new List<float>(new float[V.Count]);
var var2a = new List<float>(new float[V.Count]);
var var2b = new List<float>(new float[V.Count]);
for (int i = sayi2; i < barCount; i++)
mtm[i] = C[i] - C[i - 1];
for (int i = sayi2; i < barCount; i++)
absmtm[i] = Math.Abs(mtm[i]);
var1 = SistemX.MA(mtm, "Exp", sayi1);
var2 = SistemX.MA(var1, "Exp", sayi2);
var2a = SistemX.MA(absmtm, "Exp", sayi1);
var2b = SistemX.MA(var2a, "Exp", sayi2);
for (int i = sayi2; i < barCount; i++)
{
if (var2b[i] != 0)
list[i] = (500 * var2[i]) / (var2b[i]);
}
return list;
}
catch (Exception e) { MessageBox.Show(e.ToString()); return list; }
}
}
}
bende 3 tane çıktı.
kullanımı nasıldır.
bilen arkadaşlar yazarsa faydalanan olur.
Konusu açılmışken;
İdealde sistem modülünden örneğin Sistem.HullMA(Liste, 20) yazarak herhangi bir listeyi kullanarak indikatör hesaplatıyoruz.
Peki ben Lib.Benimindikatörüm(Sistem,Liste,periyot1, periyot2) şeklinde kendi indikatörlerimde de herhangi bir listeyi okuyabilir miyim ? Basit bir örneği olup paylaşan olursa sevinirim.
İyi günler. Kapanış 1500'ü geçtiğinde alsın, 1450yi aşağı kırdığında satsın. 1450 ile 1500 arası flat kalsın. Kodlamada yardımcı olan arkadaşa teşekkür ederim.
Değerli Forum Üyeleri,
bir konuda yardımınıza ihtiyacım var, ne kadar uğraştıysam da beceremedim maalesef.
Aşağıdaki kodun içinde robot olduğu için idealgoda çalışmıyor. robotsuz haline ne yaptıysam çeviremedim. Lot sayısı olmadan ve robot olmadan nasıl yapılabilir? çok teşekkür ederim.
var EmirSembol = "x";
var EmirSembol1 = "x";
var Lot = 1;
var Sembol = EmirSembol ;
var basicitem = Sistem.YuzeyselVeriOku(EmirSembol);
double SonFiyat = basicitem.LastPrice;
var HaftaYuzdeFark = basicitem.NetPerWeek; //hafta % FARK
var Endeks = Sistem.YuzeyselVeriOku("IMKBX'XU030");
var HaftaYuzdeFarkEndeks = Endeks.NetPerWeek; //hafta% FARK endeks
var Anahtar = Sistem.Name + "," + EmirSembol;
double IslemFiyat = 0;
DateTime IslemTarih;
var Miktar = 0.0;
var Rezerv = "";
var Pozisyon = Sistem.PozisyonKontrolOku(Anahtar, out IslemFiyat, out IslemTarih);
if (Pozisyon == 0 && HaftaYuzdeFark > HaftaYuzdeFarkEndeks && Rezerv == "")
{
Miktar = Lot;
Rezerv = "ALIŞ";
}
else if (Pozisyon < 0 && HaftaYuzdeFark > HaftaYuzdeFarkEndeks && Rezerv == "")
{
Miktar = -2*Pozisyon;
Rezerv = "ALIŞ";
}
else if (Pozisyon == 0 && HaftaYuzdeFark < HaftaYuzdeFarkEndeks && Rezerv == "")
{
Miktar = -Lot;
Rezerv = "SATIŞ";
}
else if (Pozisyon > 0 && HaftaYuzdeFark < HaftaYuzdeFarkEndeks && Rezerv == "")
{
Miktar = -2*Pozisyon;
Rezerv = "SATIŞ";
}
// Emir Gönder
var Islem = "";
if (Sistem.ZamanKontrolDakika(Sistem.Name) >= 60 )
{ // ZamanKontrolSaniye
Sistem.ZamanKontrolGuncelle(Sistem.Name);
if (Miktar > 0) Islem = "ALIS";
if (Miktar < 0) Islem = "SATIS";
if (Islem != "")
{
Sistem.PozisyonKontrolGuncelle(Anahtar, Miktar + Pozisyon, SonFiyat, Rezerv);
Sistem.EmirIslem = Islem;
Sistem.EmirSembol = EmirSembol1;
Sistem.EmirSuresi = "KIE"; // GUN, KIE, IKG
Sistem.EmirTipi = "Piyasa"; // Piyasa, Limitli, Piyasadan Limite
Sistem.EmirMiktari = Math.Abs(Miktar);
Sistem.EmirGonder();
}}
merhabalar şu kodu ideale nasıl yazabiliriz
MACD(260,120,30)+10;
MOST(MACD(260,120,30)+10,1,0.3)
macd ye +10 nasıl eklenir
Arkadaşlar Merhaba bir sorum olacaktı yukarıdaki kodda hullmanın 14-50 kesişiminden bir sistem var. Buna ben fiyatın 100 günlük hullmanın üstündeyken 14-50 kesişimde al sinyali verdirmek istiyorum. 100 günlük ma yı nasıl eklerim.Kod:// parametreleri al
var Yontem = Sistem.Parametreler[0];
var Periyot1 = Sistem.Parametreler[1];
var Periyot2 = Sistem.Parametreler[2];
var Periyot3 = Sistem.Parametreler[3];
// kapanış fiyatlarını oku
var Veriler = Sistem.GrafikFiyatSec("Kapanis");
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(Veriler, Yontem, Periyot1);
var MA2 = Sistem.MA(Veriler, Yontem, Periyot2);
var MA3 = Sistem.MA(Veriler, Yontem, Periyot3);
// hesaplanan verileri çizgilere aktar ve açıklama ekle
Sistem.Cizgiler[0].Deger = MA1;
Sistem.Cizgiler[0].Aciklama = "MA " + Periyot1;
Sistem.Cizgiler[1].Deger = MA2;
Sistem.Cizgiler[1].Aciklama = "MA " + Periyot2;
Sistem.Cizgiler[2].Deger = MA3;
Sistem.Cizgiler[2].Aciklama = "MA " + Periyot3;
// strateji
Sistem.KesismeTara(MA1, MA2);
https://twitter.com/Algoyardim
Buradan yardım alabilirsinz
İÇİNDEN robot silinmiş hali
var EmirSembol = "x";
var EmirSembol1 = "x";
var Lot = 1;
var Sembol = EmirSembol ;
var basicitem = Sistem.YuzeyselVeriOku(EmirSembol);
double SonFiyat = basicitem.LastPrice;
var HaftaYuzdeFark = basicitem.NetPerWeek; //hafta % FARK
var Endeks = Sistem.YuzeyselVeriOku("IMKBX'XU030");
var HaftaYuzdeFarkEndeks = Endeks.NetPerWeek; //hafta% FARK endeks
var Anahtar = Sistem.Name + "," + EmirSembol;
double IslemFiyat = 0;
DateTime IslemTarih;
var Miktar = 0.0;
var Rezerv = "";
var Pozisyon = Sistem.PozisyonKontrolOku(Anahtar, out IslemFiyat, out IslemTarih);
if (Pozisyon == 0 && HaftaYuzdeFark > HaftaYuzdeFarkEndeks && Rezerv == "")
{
Miktar = Lot;
Rezerv = "ALIŞ";
}
else if (Pozisyon < 0 && HaftaYuzdeFark > HaftaYuzdeFarkEndeks && Rezerv == "")
{
Miktar = -2*Pozisyon;
Rezerv = "ALIŞ";
}
else if (Pozisyon == 0 && HaftaYuzdeFark < HaftaYuzdeFarkEndeks && Rezerv == "")
{
Miktar = -Lot;
Rezerv = "SATIŞ";
}
else if (Pozisyon > 0 && HaftaYuzdeFark < HaftaYuzdeFarkEndeks && Rezerv == "")
{
Miktar = -2*Pozisyon;
Rezerv = "SATIŞ";
}
// Emir Gönder
var Islem = "";
if (Sistem.ZamanKontrolDakika(Sistem.Name) >= 60 )
{ // ZamanKontrolSaniye
Sistem.ZamanKontrolGuncelle(Sistem.Name);
if (Miktar > 0) Islem = "ALIS";
if (Miktar < 0) Islem = "SATIS";
if (Islem != "")
{
Sistem.PozisyonKontrolGuncelle(Anahtar, Miktar + Pozisyon, SonFiyat, Rezerv);
}
}
içinde kullandığınız değişkenler indikatör gibi geçmişte iz bırakan (grafik olarak çizilebilen) değişkenler değil sadece son andaki değerleri okutulabilen değişkenler.
o yüzden idealgo da çalışmıyor olabilir.
dikkat formül 60 dk da bir çalışıyor. anında tepki vermesini beklemeyin.
Merhaba,
X sistemin son işleminden sonra x bar beklesin işlem yapmasın senaryosu için nasıl bir parça eklenmeli?
Merhabalar,
aşağıdaki kod ideale uyarlanabilir mi? Algo yardım'a mail attım olumsuz dönüş yaptılar. Çok kullanışlı bir kod bloğudur. dinamik olarak destek ve dirençleri işaretliyor.
Kod:// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/// © LonesomeTheBlue
//@version=4
study("Support Resistance - Dynamic v2", "SRv2", overlay = true)
prd = input(defval = 10, title="Pivot Period", minval = 4, maxval = 30)
ppsrc = input(defval = 'High/Low', title="Source", options = ['High/Low', 'Close/Open'])
maxnumpp = input(defval = 20, title =" Maximum Number of Pivot", minval = 5, maxval = 100)
ChannelW = input(10, title = "Maximum Channel Width %", minval = 1)
maxnumsr = input(5, title =" Maximum Number of S/R", minval = 1, maxval = 10)
min_strength = input(2, title =" Minimum Strength", minval = 1, maxval = 10)
linestyle = input(defval = 'Dashed', title = "Line Style", options = ['Solid', 'Dotted', 'Dashed'])
linewidth = input(defval = 2, title = "Line Width", minval = 1, maxval = 4)
resistancecolor = input(defval = color.red, title = "Resistance Color", type = input.color)
supportcolor = input(defval = color.lime, title = "Support Color", type = input.color)
showpp = input(false, title = "Show Point Points")
float ph = na, float pl = na
float src1 = ppsrc == 'High/Low' ? high : max(close, open)
float src2 = ppsrc == 'High/Low' ? low: min(close, open)
ph := pivothigh(src1, prd, prd)
pl := pivotlow(src2, prd, prd)
plotshape(ph and showpp, text = "H", style = shape.labeldown, color = na, textcolor = color.red, location = location.abovebar, transp = 0, offset = -prd)
plotshape(pl and showpp, text = "L", style = shape.labelup, color = na, textcolor = color.lime, location = location.belowbar, transp = 0, offset = -prd)
//calculate maximum S/R channel zone width
prdhighest = highest(300)
prdlowest = lowest(300)
cwidth = (prdhighest - prdlowest) * ChannelW / 100
var pivotvals= array.new_float(0)
if ph or pl
array.unshift(pivotvals, ph ? ph : pl)
if array.size(pivotvals) > maxnumpp // limit the array size
array.pop(pivotvals)
get_sr_vals(ind)=>
float lo = array.get(pivotvals, ind)
float hi = lo
int numpp = 0
for y = 0 to array.size(pivotvals) - 1
float cpp = array.get(pivotvals, y)
float wdth = cpp <= lo ? hi - cpp : cpp - lo
if wdth <= cwidth // fits the max channel width?
lo := cpp <= lo ? cpp : lo
hi := cpp > lo ? cpp : hi
numpp := numpp + 1
[hi, lo, numpp]
var sr_up_level = array.new_float(0)
var sr_dn_level = array.new_float(0)
sr_strength = array.new_float(0)
find_loc(strength)=>
ret = array.size(sr_strength)
if ret > 0
for i = array.size(sr_strength) - 1 to 0
if strength <= array.get(sr_strength, i)
break
ret := i
ret
check_sr(hi, lo, strength)=>
ret = true
if array.size(sr_up_level) > 0
for i = 0 to array.size(sr_up_level) - 1
//included?
if array.get(sr_up_level, i) >= lo and array.get(sr_up_level, i) <= hi or
array.get(sr_dn_level, i) >= lo and array.get(sr_dn_level, i) <= hi
if strength >= array.get(sr_strength, i)
array.remove(sr_strength, i)
array.remove(sr_up_level, i)
array.remove(sr_dn_level, i)
ret
else
ret := false
break
ret
//get min time
var int btime = time
btime := na(time[1]) ? btime : min(btime, time - time[1])
round_it(value)=>
round(value / syminfo.mintick) * syminfo.mintick
draw_line(ycoor, Lstyle)=>
line.new(x1 = bar_index,
y1 = ycoor,
x2 = bar_index - 1,
y2 = ycoor,
extend = extend.both,
color = ycoor >= close ? resistancecolor : supportcolor,
style = Lstyle,
width = linewidth)
st = security(syminfo.tickerid, 'D', time)
cl = security(syminfo.tickerid, 'D', time_close)
opened = timenow > st and timenow < cl
draw_label(ycoor)=>
label.new(x = opened ? time + btime * 30 : time[100],
y = ycoor, text = tostring(ycoor),
color = ycoor >= close ? color.red : color.lime,
textcolor = ycoor >= close ? color.white : color.black,
style = label.style_labeldown,
xloc = xloc.bar_time,
yloc = yloc.price)
set_lx(lab, lin)=>
label.set_x(lab, x = opened ? time + btime * 30 : time[100])
label.set_color(lab, color = label.get_y(lab) >= close ? color.red : color.lime)
label.set_textcolor(lab, textcolor = label.get_y(lab) >= close ? color.white : color.black)
line.set_color(lin, color = line.get_y1(lin) >= close ? resistancecolor : supportcolor)
var line l1 = na, var line l2 = na, var line l3 = na, var line l4 = na, var line l5 = na, var line l6 = na, var line l7 = na, var line l8 = na, var line l9 = na, var line l10 = na
var label lb1 = na, var label lb2 = na, var label lb3 = na, var label lb4 = na, var label lb5 = na, var label lb6 = na, var label lb7 = na, var label lb8 = na, var label lb9 = na, var label lb10 = na
set_lx(lb1, l1), set_lx(lb2, l2), set_lx(lb3, l3), set_lx(lb4, l4), set_lx(lb5, l5), set_lx(lb6, l6), set_lx(lb7, l7), set_lx(lb8, l8), set_lx(lb9, l9), set_lx(lb10, l10)
if ph or pl
//because of new calculation, remove old S/R levels
array.clear(sr_up_level)
array.clear(sr_dn_level)
array.clear(sr_strength)
//find S/R zones
for x = 0 to array.size(pivotvals) - 1
[hi, lo, strength] = get_sr_vals(x)
if check_sr(hi, lo, strength)
loc = find_loc(strength)
// if strength is in first maxnumsr sr then insert it to the arrays
if loc < maxnumsr and strength >= min_strength
array.insert(sr_strength, loc, strength)
array.insert(sr_up_level, loc, hi)
array.insert(sr_dn_level, loc, lo)
// keep size of the arrays = 5
if array.size(sr_strength) > maxnumsr
array.pop(sr_strength)
array.pop(sr_up_level)
array.pop(sr_dn_level)
line.delete(l1), line.delete(l2), line.delete(l3), line.delete(l4), line.delete(l5), line.delete(l6), line.delete(l7), line.delete(l8), line.delete(l9), line.delete(l10)
label.delete(lb1), label.delete(lb2), label.delete(lb3), label.delete(lb4), label.delete(lb5), label.delete(lb6), label.delete(lb7), label.delete(lb8), label.delete(lb9), label.delete(lb10)
if array.size(sr_up_level)
Lstyle = linestyle == 'Dashed' ? line.style_dashed :
linestyle == 'Solid' ? line.style_solid :
line.style_dotted
for x = 0 to array.size(sr_up_level) - 1
float mid = round_it((array.get(sr_up_level, x) + array.get(sr_dn_level, x)) / 2)
if x == 0
l1 := draw_line(mid, Lstyle)
lb1 := draw_label(mid)
if x == 1
l2 := draw_line(mid, Lstyle)
lb2 := draw_label(mid)
if x == 2
l3 := draw_line(mid, Lstyle)
lb3 := draw_label(mid)
if x == 3
l4 := draw_line(mid, Lstyle)
lb4 := draw_label(mid)
if x == 4
l5 := draw_line(mid, Lstyle)
lb5 := draw_label(mid)
if x == 5
l6 := draw_line(mid, Lstyle)
lb6 := draw_label(mid)
if x == 6
l7 := draw_line(mid, Lstyle)
lb7 := draw_label(mid)
if x == 7
l8 := draw_line(mid, Lstyle)
lb8 := draw_label(mid)
if x == 8
l9 := draw_line(mid, Lstyle)
lb9 := draw_label(mid)
if x == 9
l10 := draw_line(mid, Lstyle)
lb10 := draw_label(mid)
f_crossed_over()=>
ret = false
if array.size(sr_up_level) > 0
for x = 0 to array.size(sr_up_level) - 1
float mid = round_it((array.get(sr_up_level, x) + array.get(sr_dn_level, x)) / 2)
if close[1] <= mid and close > mid
ret := true
ret
f_crossed_under()=>
ret = false
if array.size(sr_up_level) > 0
for x = 0 to array.size(sr_up_level) - 1
float mid = round_it((array.get(sr_up_level, x) + array.get(sr_dn_level, x)) / 2)
if close[1] >= mid and close < mid
ret := true
ret
alertcondition(f_crossed_over(), title='Resistance Broken', message='Resistance Broken')
alertcondition(f_crossed_under(), title='Support Broken', message='Support Broken')
merhaba ideale bu kodu nasıl yazabiliriz.
100*(RSI(14)-Mov(RSI(14),14,S))/Mov(RSI(14),14,S);
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V, "Kapanis" ) ;
var H = Sistem.GrafikFiyatOku(V, "Yuksek" ) ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk" ) ;
var O = Sistem.GrafikFiyatOku(V,"Acilis") ;
var RSI = Sistem.RSI(14);
var RSIMA = Sistem.MA(RSI, "simple", 14);
var MA = Sistem.Liste(0);
for(int i =1; i<V.Count; i++)
{
MA[i] = ((RSI[i] - RSIMA[i])/ RSIMA[i])*100;
}
Sistem.Cizgiler[0].Deger = MA;
Tunca Bey, kod bu şekilde çalışıyor ama koda iki tane ma eklemek istediğimde hata alıyorum.
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V, "Kapanis" ) ;
var H = Sistem.GrafikFiyatOku(V, "Yuksek" ) ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk" ) ;
var O = Sistem.GrafikFiyatOku(V,"Acilis") ;
var RSI = Sistem.RSI(14);
var RSIMA = Sistem.MA(RSI, "simple", 14);
var MA = Sistem.Liste(0);
for(int i =1; i<V.Count; i++)
{
MA[i] = ((RSI[i] - RSIMA[i])/ RSIMA[i])*100;
}
Sistem.Cizgiler[0].Deger = MA ;
var ma3=Sistem.MA(MA , "Exp", 3);
var ma5=Sistem.MA(MA , "Exp", 5);
Sistem.Cizgiler[1].Deger = ma3;
Sistem.Cizgiler[2].Deger = ma5;
[QUOTE=berlys;5015000]Tunca Bey, kod bu şekilde çalışıyor ama koda iki tane ma eklemek istediğimde hata alıyorum.
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V, "Kapanis" ) ;
var H = Sistem.GrafikFiyatOku(V, "Yuksek" ) ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk" ) ;
var O = Sistem.GrafikFiyatOku(V,"Acilis") ;
var RSI = Sistem.RSI(14);
var RSIMA = Sistem.MA(RSI, "simple", 14);
var MA = Sistem.Liste(0);
for(int i =100; i<V.Count; i++)
{
MA[i] = ((RSI[i] - RSIMA[i])/ RSIMA[i])*100;
}
Sistem.Cizgiler[0].Deger = MA ;
var ma3=Sistem.MA(MA , "Exp", 3);
var ma5=Sistem.MA(MA , "Exp", 5);
Sistem.Cizgiler[1].Deger = ma3;
Sistem.Cizgiler[2].Deger = ma5;
Arkadaşlar ücreti karsılıgında robot yazılımı yapabılecek var mıdır? Yanı ufak bır sorguya robot alışı ve satışı eklenicektir.
var Veri = Sistem.GrafikVerileri;
var Y = Sistem.GrafikFiyatOku(Veri,"Yuksek");
var D = Sistem.GrafikFiyatOku(Veri,"Dusuk");
//*** Kullanıcı Parametreleri ***//
var CizgiSayisi = 8; //Çizdirilecek destek direnç sayısı
var Periyot = 100; //ilk olarak kaç bar geriye bakacak yazıyoruz.
var Carpan = 1.5; //ilk periyottan sonra kullanılacak çarpanı giriyoruz.
var Destekler = new Dictionary<int,List<float>>();
var Direncler = new Dictionary<int,List<float>>();
for(int i=0;i<CizgiSayisi;i++)
{
Destekler[i] = new List<float>(new float[Veri.Count]);
Direncler[i] = new List<float>(new float[Veri.Count]);
var Destek = Sistem.LLV(Veri, Periyot, "Dusuk");
var Direnc = Sistem.HHV(Veri, Periyot, "Yuksek");
for(int j=Veri.Count-1;j>Veri.Count-Periyot;j--)
{
Destekler[i][j] = Destek[Veri.Count-1];
Direncler[i][j] = Direnc[Veri.Count-1];
}
Periyot = (int)(Periyot * Carpan);
Sistem.Cizgiler[i].Deger = Destekler[i];
Sistem.Cizgiler[i].Aciklama = "Destek " + i.ToString();
Sistem.Cizgiler[i].Stil = 4;
Sistem.Cizgiler[i].Renk = Color.Red;
Sistem.Cizgiler[i].ActiveBool = true;
Sistem.Cizgiler[i+CizgiSayisi].Deger = Direncler[i];
Sistem.Cizgiler[i+CizgiSayisi].Aciklama = "Direnç " + i.ToString();
Sistem.Cizgiler[i+CizgiSayisi].Stil = 4;
Sistem.Cizgiler[i+CizgiSayisi].Renk = Color.Green;
Sistem.Cizgiler[i+CizgiSayisi].ActiveBool = true;
}
otomatik destek direnç çizen
belki işinize yarar
Sn. Bear_Bull desteğiniz için teşekkürler. Kod çalışmadı, ideal ile görüştüm, idealgo yerine eski yerinde çalıştırmaya karar verdim. İDealgonun en büyük avantajı sanal ve gerçek aynı anda çalıştırmasıydı. Normal tarafta bu imkan yok. ama yapacak bir şey yok.
Normal robot bölümünde (idealgo değil ) emir listesi var, orda herhangi bir sistem çalışırken fiyat bölümü BOŞ geliyor. Fiyat bölümünün ( emir gönderdiği andaki işlem yapılacak enstruman fiyatı ) dolu gelmesi için kodun içine ne yazmak gerekiyor ? ayrıca işlem yapılacak enstrumandan bağımsız açıklama bölümüne daimi vip-xu030 fiyatını getirmek mümkün mü?
cevap verenlere şimdiden teşekkür ederim.
aldığınız alıntılarla ilgili olmayan sorular sormayın.
işten eve , evden işe uzaktan bağlantı yapmadığım için bilgim yok.
win pro vs temote.