Kodlama yardımı - sayfa 239

 

Merhaba,

standart stepMA 9 göstergesini histogram olarak ayrı bir pencerede buna değiştirdim ama satın alma sinyallerinin neden standart göstergeyle senkronize edilmediğini bilmiyorum (satış sinyalleri). Yenisiyle, orijinal göstergeden bir çubuk geride oluşurlar. Niye ya? Göstergenin grafik yönünü belirleyen kodun yalnızca bir kısmını değiştirdim.

stepma_9_histo_mtf.mq4

stepma_9.0.mq4

Dosyalar:
 
thefxpros:
Merhaba,

standart stepMA 9 göstergesini histogram olarak ayrı bir pencerede buna değiştirdim ama satın alma sinyallerinin neden standart göstergeyle senkronize edilmediğini bilmiyorum (satış sinyalleri). Yenisiyle, orijinal göstergeden bir çubuk geride oluşurlar. Niye ya? Göstergenin grafik yönünü belirleyen kodun yalnızca bir kısmını değiştirdim.

stepma_9_histo_mtf.mq4

stepma_9.0.mq4

thefxpros

Bu, çizgilerin nasıl çizildiğinin bir sonucudur.

Bir çizgi çizdiğinizde, çizgiyi görünür hale getirmek için 1 çubuk geri çizmeye başlamanız gerekir (aksi takdirde bir nokta olurdu ve grafikte hiç görünmezdi). Bu ikisini deneyin ve şimdi karşılaştırın

Dosyalar:
 

Merhaba,

Takip eden bir durdurmanın işe yarayacağı gibi bir ticaret açacak bir EA arıyordum.

Diyelim ki bir enstrümanda düzeltme bekliyorum. İşlemimi mümkün olduğunca yüksek (veya düşük) fiyat üzerinden açmak isterim. Yani böyle bir EA ile, ticaret parametrelerimi belirleyebilirim ve bu EA, fiyatı takip eden bir durdurmaya benzer şekilde takip etmeye devam edecek. Bir geri dönüş olduğunda, ticaret vurulur ve açılır.

Hiç böyle bir EA gördünüz mü?

teşekkürler

 

Herkese selam

kod yapmaya çalışıyorum ama neden ticaret açamıyorum

int varCurrentTime = TimeCurrent();

for (int iTS = 0; iTS < 2000; iTS++) {

int varZonStart = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "00:00");

int varZonEnd = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "10:00");

int JamStart=TimeHour(varZonStart);

int JamEnd=TimeHour(varZonEnd);

if (JamStart>JamEnd) {

varCurrentTime = decDateTradeDay(varCurrentTime);

//if (TimeDayOfWeek(varCurTime) < 1) varCurTime = decDateTradeDay(varCurTime);

if (TimeDayOfWeek(varCurrentTime) > 5) varCurrentTime = decDateTradeDay(varCurrentTime);

}

varZonStart = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "00:00");

int varShiftStart = iBarShift(NULL, 0, varZonStart - 60 * Period());

int varShiftEnd = iBarShift(NULL, 0, varZonEnd);

varHighest = High;

varLowest = Low;

varCurrentTime = decDateTradeDay(varCurrentTime); //set 1 hari kebelakang

if (TimeDayOfWeek(varCurrentTime) < 1) varCurrentTime = decDateTradeDay(varCurrentTime); //jika minggu mundur lagi

if (TimeDayOfWeek(varCurrentTime) > 5) varCurrentTime = decDateTradeDay(varCurrentTime); //jika sabtu mundur lagi

}

for (int iTSh = 0; iTSh < 2000; iTSh++) {

for (int iTSl = 0; iTSl < 2000; iTSl++) {

if(((varHighest-varLowest)/Pip)<=5) varHL=(varHighest+varLowest)/2;

}

}

double isg10a = iOpen(Symbol(),PERIOD_M15,1);

double isg10b = iClose(Symbol(),PERIOD_M15,1);

int static isg10c = -1;

for (iTS = 0; iTS < 2000; iTS++) {

if(isg10avarHL)isg10c =0;

if(isg10a>varHL&&isg10b<varHL)isg10c =1;

}

if (isg10c==0) To code Buy

else if (isg10c==1) To code Sel

else no trade

 
mladen:
Jim Her şeyi yeniden yazmak yerine, çubukları hesaplamak için bir sınır ekledi ve ardından tüm bu çubuklar yeniden hesaplandı. Bu, yenileme sorununu çözmelidir (jutlar, BarsTocalculate'i makul bir seviyede tutar - çok büyük değil, çok küçük bir değerde tutar. Varsayılan olarak 1000 kullandım ve bu şekilde sorun yok gibi görünüyor). Denemek

sevgili mladen,

Çabalarınız ve çok hızlı yardımınız için çok teşekkürler.

deneyeceğim.

Münih'ten çok şey

 

Lütfen bu ses göstergesini mt4 cihazıma eklemek için yükseltmeme yardım edin

Merhaba gurular lütfen bu ses göstergesindeki hataları düzeltmeme yardım edin. Son zamanlarda mt4 grafiğime eklenemediğini fark ettim. Dosyadaki hataları düzeltmek için mümkün olan her şeyi yaptım ama boşuna. Büyük mt4 yükseltmesi nedeniyle olduğundan şüpheleniyorum. Mt4 klasörümdeki diğer tüm göstergeler, hem eski hem de daha yeni sürümlerin tümü iyi çalışıyor. Bir yıl önce çalışıyordu, en son kullandım. Henüz bir programcı değilim.

Lütfen ekteki dosyaya bakınız

 

Merhaba MLaden ve Mrtools,

umarım iyisindir

RSX hakkında bir onayınıza ihtiyacım var.

RSX'i hesaplamak için daha basit bir formül kullandığınızı görüyorum:

__________________________

double Kg = (3.0)/(2.0+Uzunluk);

çift Hg = 1.0-Kg;

if (eğim[limit]==-1) CleanPoint(limit,rsxDa,rsxDb);

if (ArrayRange(wrkBuffer,0) != Barlar) ArrayResize(wrkBuffer,Barlar);

for(i=limit, r=Bars-i-1; i>=0; i--, r++)

{

wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,Fiyat,i);

if (i==(Bars-1)) { for (int c=0;c<12;c++)wrkBuffer[r][c] = 0; devam etmek; }

//

//

//

//

//

double mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];

çift moa = MathAbs(anne);

için (int k=0; k<3; k++)

{

int kk = k*2;

wrkBuffer[r][kk+0] = Kg*anne + Hg*wrkBuffer[r-1][kk+0];

wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; mom = 1.5*wrkBuffer[r][kk+0] - 0,5 * wrkBuffer[r][kk+1];

wrkBuffer[r][kk+6] = Kg*moa + Hg*wrkBuffer[r-1][kk+6];

wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; moa = 1.5*wrkBuffer[r][kk+6] - 0,5 * wrkBuffer[r][kk+7];

}

eğer (moa != 0)

rsx = MathMax(MathMin((anne/ay+1.0)*50.0,100.00),0.00);

yoksa rsx = 50;

______________________

Sadece RSX'in bu formülle nasıl hesaplandığını anladığınızdan emin olmak için

İlk satır ile:

mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];

aslında wrkBuffer[r][12] fiyatın basit hareketli ortalamasıdır , normal bir RSI'da olduğu gibi ödülü not edin?

Doğru ? Ama bu SMA'nın hangi dönemi olduğunu anlamıyorum (Muhtemelen Uzunluk değil)?

Ve sonra, eğer satırları iyi anladıysam:

için (int k=0; k<3; k++)

{

int kk = k*2;

wrkBuffer[r][kk+0] = Kg*anne + Hg*wrkBuffer[r-1][kk+0];

wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1];

mom = 1.5*wrkBuffer[r][kk+0] - 0,5 * wrkBuffer[r][kk+1];

Aslında, yukarıdaki ilk anneyle birlikte, annenin 3 katını (arka arkaya) hesaplar (mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];)

Doğru mu ?

Ve bundan sonra RSX=((mom/moa)+1)*50 ile "klasik" olur

Bir kodlayıcı olarak (başka bir platformda) bir sonraki cevabınız için teşekkür ederim, kodların nasıl çalıştığını anlamaktan hoşlandığımı biliyorsunuz.

İyi günler

Zilliq

 
zilliq:
Merhaba MLaden ve Mrtools,

umarım iyisindir

RSX hakkında bir onayınıza ihtiyacım var.

RSX'i hesaplamak için daha basit bir formül kullandığınızı görüyorum:

__________________________

double Kg = (3.0)/(2.0+Uzunluk);

çift Hg = 1.0-Kg;

if (eğim[limit]==-1) CleanPoint(limit,rsxDa,rsxDb);

if (ArrayRange(wrkBuffer,0) != Barlar) ArrayResize(wrkBuffer,Barlar);

for(i=limit, r=Bars-i-1; i>=0; i--, r++)

{

wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,Fiyat,i);

if (i==(Bars-1)) { for (int c=0;c<12;c++)wrkBuffer[r][c] = 0; devam etmek; }

//

//

//

//

//

double mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];

çift moa = MathAbs(anne);

için (int k=0; k<3; k++)

{

int kk = k*2;

wrkBuffer[r][kk+0] = Kg*anne + Hg*wrkBuffer[r-1][kk+0];

wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; mom = 1.5*wrkBuffer[r][kk+0] - 0,5 * wrkBuffer[r][kk+1];

wrkBuffer[r][kk+6] = Kg*moa + Hg*wrkBuffer[r-1][kk+6];

wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; moa = 1.5*wrkBuffer[r][kk+6] - 0,5 * wrkBuffer[r][kk+7];

}

eğer (moa != 0)

rsx = MathMax(MathMin((anne/ay+1.0)*50.0,100.00),0.00);

yoksa rsx = 50;

______________________

Sadece RSX'in bu formülle nasıl hesaplandığını anladığınızdan emin olmak için

İlk satır ile:

mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];

aslında wrkBuffer[r][12] fiyatın basit hareketli ortalamasıdır, normal bir RSI'da olduğu gibi ödülü not edin?

Doğru ? Ama bu SMA'nın hangi dönemi olduğunu anlamıyorum (Muhtemelen Uzunluk değil)?

Ve sonra, eğer satırları iyi anladıysam:

için (int k=0; k<3; k++)

{

int kk = k*2;

wrkBuffer[r][kk+0] = Kg*anne + Hg*wrkBuffer[r-1][kk+0];

wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1];

mom = 1.5*wrkBuffer[r][kk+0] - 0,5 * wrkBuffer[r][kk+1];

Aslında, yukarıdaki ilk anneyle birlikte, annenin 3 katını (arka arkaya) hesaplar (mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];)

Doğru mu ?

Ve bundan sonra RSX=((mom/moa)+1)*50 ile "klasik" olur

Bir kodlayıcı olarak (başka bir platformda) bir sonraki cevabınız için teşekkür ederim, kodların nasıl çalıştığını anlamaktan hoşlandığımı biliyorsunuz.

İyi günler

Zilliq

"aslında wrkBuffer[r][12] fiyatın basit hareketli ortalamasıdır, ödülü normal bir RSI'da olduğu gibi not edin?"

Hayır. Bu ortalamanın hesaplama periyodu 1'dir, yani kullanılan "ortalama"nın fiyatına eşittir. İstenen fiyatı almanın en hızlı yolu olan metatader'da (aynı şeyi yaparak "case" yapısını yazmaya çalışırsanız, bunun rsx kodunda kullanılan yoldan çok daha yavaş olduğunu göreceksiniz)

"Aslında, yukarıdaki ilk anneyle birlikte, annenin 3 katını (arka arkaya) hesaplar"

Hayır. Her yeni yinelemede hangi değerleri kullandığını görün. mom ve moa döngü sürecinde sürekli olarak değiştirilir ve yeniden kullanılır (değişen formda)

 

Çok teşekkürler Mladen,

wrkBuffer[r][12]'nin fiyata eşit olduğunu iyi anladıysam çok garip, ama hesabı hızlandırmak için 1 periyotlu hareketli bir ortalama kullanıyorsunuz. Bu çok meraklı...

İkincisi, sanırım/sanırım söylemeye çalıştığım şey bu

anneyi fiyatın momentumu olarak hesaplar

Ve Kg ve Hg ile başka bir anneyi hesaplar. Yeni bir anne yaratmaya alışkın olan yeni bir anne verir ve bu böyle devam eder, 3 kez

Bunun gibi "daha kolay" (anlamayı kolaylaştırmak için) bir şey

anne

anne1=kg*anne

anne2=kg*anne1

anne3=kg*anne2

Ve sonunda mom3 ve moa3 kullanır

Haklıyım ?

 
zilliq:
Çok teşekkürler Mladen,

wrkBuffer[r][12]'nin fiyata eşit olduğunu iyi anladıysam çok garip, ama hesabı hızlandırmak için 1 periyotlu hareketli bir ortalama kullanıyorsunuz. Bu çok meraklı...

İkincisi, sanırım/sanırım söylemeye çalıştığım şey bu

anneyi fiyatın momentumu olarak hesaplar

Ve Kg ve Hg ile başka bir anneyi hesaplar. Yeni bir anne yaratmaya alışkın olan yeni bir anne verir ve bu böyle devam eder, 3 kez

Bunun gibi "daha kolay" (anlamayı kolaylaştırmak için) bir şey

anne

anne1=kg*anne

anne2=kg*anne1

anne3=kg*anne2

Ve sonunda mom3 ve moa3 kullanır

Haklıyım ?

Zilliq,

evet öyle yapılıyor