Hepinize iyi günler! Tırnakları özel bir şekilde hesaplayan ve gerekli katsayılara sahip bir dosya oluşturan harici bir DLL'den gelen çağrıları kullanan bir komut dosyası var, komut dosyasını bir zamanlamaya göre çalıştırmanın bir yolu var mı? Her gün belirli bir saatte çalışmasına ihtiyacım var mı?
İlk pencere Hacim göstergesidir, Para Akışı Endeksini (10) en üste koyun.
Ayrı bir gösterge yaptım, yine Hacim aldığım, Hacim'den hareket etmeyi yeniden hesapladığım ve ilk penceredeki gibi yapmaya çalıştığım - %25, %50, %75.
Ama bunu yapma şekli pek iyi değildi.
Bu sorunla karşılaşan varsa lütfen paylaşsın.
teşekkürler
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_minimum 0
#property indicator_width1 2
#property indicator_width2 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Yellow
extern int MAPeriod = 30;
double volum[],ma[];
//+------------------------------------------------------------------+
int init(){
int bars_count=WindowBarsPerChart(),volh;
int bar=WindowFirstVisibleBar();
volh = Volume[iHighest(Symbol(),0,MODE_VOLUME,bar,0)];
SetIndexBuffer(0,volum);
SetIndexBuffer(1,ma);
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
SetLevelValue (0, volh*1.05);
SetLevelValue (1, ((volh*1.05)/100)*75.0);
SetLevelValue (2, ((volh*1.05)/100)*50.0);
SetLevelValue (3, ((volh*1.05)/100)*25.0);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
/*int start(){
int limit;
limit = Bars-IndicatorCounted()-1;
for(int i=limit;i>=0;i--){
volum[i] = NormalizeDouble(Volume[i],0);
ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0);
}
return(0);
}*/
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int i=rates_total-prev_calculated-1;
if(i<0)
i=0;
while(i>=0){
if(i<rates_total-1)
volum[i] = NormalizeDouble(Volume[i],0);
ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0);
i--;
}
return(rates_total);
}
tara : Eksi ikinci çubuktan bahsetti. Ve kısıtlamaların ortalama değeri hakkında. Alay etmek istiyor, imhenko. Ben gönderirdim ve sen - bildiğin gibi :)
Hala böyle bir ülke olmadığını bilmeyen bir tekrarlayıcı yedinci sınıf öğrencisi - Belarus, birinci sınıf öğrencilerine gitti ve etrafta dolaştı. Ve herhangi bir soruya sadece gönderir veya öğretir: derler ki, çalışmanız gerekir. Hangi şubedeyseniz kapının üstünü dikkatlice okuyunuz. Ben sadece alfabeyi öğreniyorum, bu yüzden fazla şişme, hala anlamıyorum.
Ve kötüllive ve artmedia70 çok teşekkürler. Sabrınız ve zamanınız için. Eminim bu sadece senin hakkındaki düşüncem değildir. Bu konuya yönelen herkes yardım ister ve esas olarak sizden alır. Teşekkürler\
Bu böyle yapılmaz. 3 tamponun tümü için iCustom çağrılır, her değer kendi değişkenine yazılır ve ardından bu değerlerle ihtiyacınız olanı yapın.
Bollinger bantları için, ikinci çubukta, referanstaki örneğe göre tıkaç gerekmez:
Teşekkür ederim.
Ancak, okuma yazma bilmediğim için, ders kitabını sürekli karıştırmam gerekiyor ve ortaya çıkardığım şey şu: özel bir gösterge bir programdır ... yazarın algoritmasına göre yazılmıştır. Kılavuz, iCustom'un belirtilen özel göstergenin değerini döndürdüğünü söylüyor.
Ancak herhangi bir özel (yani, anladığım kadarıyla, benim tarafımdan geliştirilen) göstergeler kullanmıyorum.
Standart, yani indikatör diyebilirsem değerleri, belirttiğim parametrelerle Hareketli Ortalama, Bollinger Bantları ve Stokastik Osilatör değerlerini çıkarmam gerekiyor. Tabii ki "dürtme yöntemi" ile yapıyorum - önce bulduğumu sonra uyguluyorum. Ancak önerdiğiniz seçenek bana da doğru gelmiyor.
Herhangi bir arabellek, dizi, döngü kullanmadan gerçekten bir çözüm yok mu? İçlerinde denizdeki bir parke taşı gibiyim - hemen boğuluyorum.
yani, mesafenin bir kesişimi varsa, bir sipariş açın
Deyim yerindeyse son kavşağın zamanını bulabilecek bir koda ihtiyacım var..
şu anki andan geçmişte belirlenen zamana kadar, dönemin altına giren emirleri arardım ve bulamazsam bir emir açardım.
bu amaçlar için, izleyici göstergelerinin kodunu parçaladım, orada her şey açık görünüyor
ama eğrilerin kesişmesinden sonraki ilk çubuğun zamanını nasıl tespit edeceğimiz burada ve aşırı sağ olmasına rağmen net değil
Bir operatöre ihtiyacım olduğunu hissediyorum, ancak formüle edemiyorum
Bu Uzman Danışman kavşaklarda çalışmaz. Burada kriter şudur: Hızlı MA yavaş olandan X pip daha yüksekse ve açık pozisyon yoksa piyasaya göre açın.
Bir kavşak aramak için, her zaman bir çift değer almanız gerekir - kavşaktan ÖNCE "hızlı / yavaş MA" ve kavşaktan SONRA "hızlı / yavaş MA", ne zaman yer değiştirdiklerini algılamak için tabiri caizse . yani
if(FastMA_2<SlowMA_2 && FastMA_1>SlowMA_1) - hızlı MA, yavaş MA'yı 1. ve 2. çubuklar arasında aşağıdan yukarıya geçti.
Sonsuz bir döngüde, kesişim bulunana kadar sıfır çubuğundan arama yapın, bu X + 1 çubuk olacaktır ve X çubuğunun, yani kesişmeden sonraki en son çubuğun zamanına ihtiyacınız vardır.
Ancak, okuma yazma bilmediğim için, ders kitabını sürekli karıştırmam gerekiyor ve ortaya çıkardığım şey şu: özel bir gösterge bir programdır ... yazarın algoritmasına göre yazılmıştır. Kılavuz, iCustom'un belirtilen özel göstergenin değerini döndürdüğünü söylüyor.
Ancak herhangi bir özel (yani, anladığım kadarıyla, benim tarafımdan geliştirilen) göstergeler kullanmıyorum.
Standart, yani indikatör diyebilirsem değerleri, belirttiğim parametrelerle Hareketli Ortalama, Bollinger Bantları ve Stokastik Osilatör değerlerini çıkarmam gerekiyor. Tabii ki "dürtme yöntemi" ile yapıyorum - önce bulduğumu sonra uyguluyorum. Ancak önerdiğiniz seçenek bana da doğru gelmiyor.
Tampon, dizi, döngü kullanmadan gerçekten bir çözüm yok mu? İçlerinde denizdeki bir parke taşı gibiyim - hemen boğuluyorum.
Bu doğru, Bollinger Bantlarını kullanırken iCustom'u aramanız gerekmez, ancak her gösterge satırı için ayrı ayrı iBands'i aramanız gerekir. Alternatif olarak, göstergeyi çağırmadan ("herhangi bir arabellek, dizi, döngü kullanmadan") - bu göstergeyi hesaplamak için algoritmayı Expert Advisor'da uygulayın ve gerektiğinde gerekli değeri okuyun (yalnızca istenen değeri okuyabilirsiniz, örneğin, sadece alt satırda). Ama yine de döngüler ve diziler olmadan çalışmaz.
Dizinin boyutu sıfırdır. ArrayResize()'ı unutmayınız veya hemen istenen dizi boyutunu ayarlayınız.
Merhaba,
Resimde gösterilen:
İlk pencere Hacim göstergesidir, Para Akışı Endeksini (10) en üste koyun.
Ayrı bir gösterge yaptım, yine Hacim aldığım, Hacim'den hareket etmeyi yeniden hesapladığım ve ilk penceredeki gibi yapmaya çalıştığım - %25, %50, %75.
Ama bunu yapma şekli pek iyi değildi.
Bu sorunla karşılaşan varsa lütfen paylaşsın.
teşekkürler
#property indicator_separate_window #property indicator_buffers 2 #property indicator_minimum 0 #property indicator_width1 2 #property indicator_width2 2 #property indicator_color1 DodgerBlue #property indicator_color2 Yellow extern int MAPeriod = 30; double volum[],ma[]; //+------------------------------------------------------------------+ int init(){ int bars_count=WindowBarsPerChart(),volh; int bar=WindowFirstVisibleBar(); volh = Volume[iHighest(Symbol(),0,MODE_VOLUME,bar,0)]; SetIndexBuffer(0,volum); SetIndexBuffer(1,ma); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_LINE); SetLevelValue (0, volh*1.05); SetLevelValue (1, ((volh*1.05)/100)*75.0); SetLevelValue (2, ((volh*1.05)/100)*50.0); SetLevelValue (3, ((volh*1.05)/100)*25.0); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ /*int start(){ int limit; limit = Bars-IndicatorCounted()-1; for(int i=limit;i>=0;i--){ volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); } return(0); }*/ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int i=rates_total-prev_calculated-1; if(i<0) i=0; while(i>=0){ if(i<rates_total-1) volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); i--; } return(rates_total); }Eksi ikinci çubuktan bahsetti. Ve kısıtlamaların ortalama değeri hakkında. Alay etmek istiyor, imhenko. Ben gönderirdim ve sen - bildiğin gibi :)
Ve kötüllive ve artmedia70 çok teşekkürler. Sabrınız ve zamanınız için. Eminim bu sadece senin hakkındaki düşüncem değildir. Bu konuya yönelen herkes yardım ister ve esas olarak sizden alır. Teşekkürler\
merhaba sevgili profesyoneller uzun zamandır sizinle iletişim kurmuyoruz
Sonuç olarak, bir emrin açılmasıyla 2 hamlenin kesiştiği bir danışman var, orada rahatsız olmadılar
geçersizTicaret()
{ double ma_fast=ma( Period_ ,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt)))
{
if(sumSO>0 && !ClosePos(OP_SELL)) dönüş;
if(MO(OP_BUY,GetLot(),GetComment())==-1) dönüş;
if(!ModifyByTicket(T)) dönüşü;
NumbUp=0; NumbDn=0;
}
başka
vb..
yani, mesafenin bir kesişimi varsa, bir sipariş açın
Deyim yerindeyse son kavşağın zamanını bulabilecek bir koda ihtiyacım var..
şu anki andan geçmişte belirlenen zamana kadar, dönemin altına giren emirleri arardım ve bulamazsam bir emir açardım.
bu amaçlar için izleyici göstergelerinin kodunu yırttım, orada her şey açık görünüyor
ama eğrilerin kesişmesinden sonraki ilk çubuğun zamanını nasıl tespit edeceğimiz burada ve aşırı sağ olmasına rağmen net değil
Bir operatöre ihtiyacım olduğunu hissediyorum, ancak formüle edemiyorum
Bu böyle yapılmaz. 3 tamponun tümü için iCustom çağrılır, her değer kendi değişkenine yazılır ve ardından bu değerlerle ihtiyacınız olanı yapın.
Bollinger bantları için, ikinci çubukta, referanstaki örneğe göre tıkaç gerekmez:
Teşekkür ederim.
Ancak, okuma yazma bilmediğim için, ders kitabını sürekli karıştırmam gerekiyor ve ortaya çıkardığım şey şu: özel bir gösterge bir programdır ... yazarın algoritmasına göre yazılmıştır. Kılavuz, iCustom'un belirtilen özel göstergenin değerini döndürdüğünü söylüyor.
Ancak herhangi bir özel (yani, anladığım kadarıyla, benim tarafımdan geliştirilen) göstergeler kullanmıyorum.
Standart, yani indikatör diyebilirsem değerleri, belirttiğim parametrelerle Hareketli Ortalama, Bollinger Bantları ve Stokastik Osilatör değerlerini çıkarmam gerekiyor. Tabii ki "dürtme yöntemi" ile yapıyorum - önce bulduğumu sonra uyguluyorum. Ancak önerdiğiniz seçenek bana da doğru gelmiyor.
Herhangi bir arabellek, dizi, döngü kullanmadan gerçekten bir çözüm yok mu? İçlerinde denizdeki bir parke taşı gibiyim - hemen boğuluyorum.
merhaba sevgili profesyoneller uzun zamandır sizinle iletişim kurmuyoruz
Sonuç olarak, bir emrin açılmasıyla 2 hamlenin kesiştiği bir danışman var, orada rahatsız olmadılar
geçersizTicaret()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt)))
{
if(sumSO>0 && !ClosePos(OP_SELL)) dönüş;
if(MO(OP_BUY,GetLot(),GetComment())==-1) dönüş;
if(!ModifyByTicket(T)) dönüşü;
NumbUp=0; NumbDn=0;
}
başka
vb..
yani, mesafenin bir kesişimi varsa, bir sipariş açın
Deyim yerindeyse son kavşağın zamanını bulabilecek bir koda ihtiyacım var..
şu anki andan geçmişte belirlenen zamana kadar, dönemin altına giren emirleri arardım ve bulamazsam bir emir açardım.
bu amaçlar için, izleyici göstergelerinin kodunu parçaladım, orada her şey açık görünüyor
ama eğrilerin kesişmesinden sonraki ilk çubuğun zamanını nasıl tespit edeceğimiz burada ve aşırı sağ olmasına rağmen net değil
Bir operatöre ihtiyacım olduğunu hissediyorum, ancak formüle edemiyorum
Bu Uzman Danışman kavşaklarda çalışmaz. Burada kriter şudur: Hızlı MA yavaş olandan X pip daha yüksekse ve açık pozisyon yoksa piyasaya göre açın.
Bir kavşak aramak için, her zaman bir çift değer almanız gerekir - kavşaktan ÖNCE "hızlı / yavaş MA" ve kavşaktan SONRA "hızlı / yavaş MA", ne zaman yer değiştirdiklerini algılamak için tabiri caizse . yani
if(FastMA_2<SlowMA_2 && FastMA_1>SlowMA_1) - hızlı MA, yavaş MA'yı 1. ve 2. çubuklar arasında aşağıdan yukarıya geçti.
Sonsuz bir döngüde, kesişim bulunana kadar sıfır çubuğundan arama yapın, bu X + 1 çubuk olacaktır ve X çubuğunun, yani kesişmeden sonraki en son çubuğun zamanına ihtiyacınız vardır.
Teşekkür ederim.
Ancak, okuma yazma bilmediğim için, ders kitabını sürekli karıştırmam gerekiyor ve ortaya çıkardığım şey şu: özel bir gösterge bir programdır ... yazarın algoritmasına göre yazılmıştır. Kılavuz, iCustom'un belirtilen özel göstergenin değerini döndürdüğünü söylüyor.
Ancak herhangi bir özel (yani, anladığım kadarıyla, benim tarafımdan geliştirilen) göstergeler kullanmıyorum.
Standart, yani indikatör diyebilirsem değerleri, belirttiğim parametrelerle Hareketli Ortalama, Bollinger Bantları ve Stokastik Osilatör değerlerini çıkarmam gerekiyor. Tabii ki "dürtme yöntemi" ile yapıyorum - önce bulduğumu sonra uyguluyorum. Ancak önerdiğiniz seçenek bana da doğru gelmiyor.
Tampon, dizi, döngü kullanmadan gerçekten bir çözüm yok mu? İçlerinde denizdeki bir parke taşı gibiyim - hemen boğuluyorum.
merhaba sevgili profesyoneller uzun zamandır sizinle iletişim kurmuyoruz
Sonuç olarak, bir emrin açılmasıyla 2 hamlenin kesiştiği bir danışman var, orada rahatsız olmadılar
geçersizTicaret()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt)))
{
if(sumSO>0 && !ClosePos(OP_SELL)) dönüş;
if(MO(OP_BUY,GetLot(),GetComment())==-1) dönüş;
if(!ModifyByTicket(T)) dönüşü;
NumbUp=0; NumbDn=0;
}
başka
vb..
yani, mesafenin bir kesişimi varsa, bir sipariş açın
Deyim yerindeyse son kavşağın zamanını bulabilecek bir koda ihtiyacım var..
şu anki andan geçmişte belirlenen zamana kadar, dönemin altına giren emirleri arardım ve bulamazsam bir emir açardım.
bu amaçlar için izleyici göstergelerinin kodunu yırttım, orada her şey açık görünüyor
ama eğrilerin kesişmesinden sonraki ilk çubuğun zamanını nasıl tespit edeceğimiz burada ve aşırı sağ olmasına rağmen net değil
Bir operatöre ihtiyacım olduğunu hissediyorum, ancak formüle edemiyorum