Nasıl kodlanır? - sayfa 117

 
mystified:
HMA'ya seviyeler ekledim:

#özellik göstergesi_separate_window

#özellik göstergesi_tamponları 2

#özellik göstergesi_color1 Siyah

#özellik göstergesi_renk2 Kırmızı

#özellik göstergesi_width1 2

#özellik göstergesi_minimum 0

#özellik göstergesi_maksimum 100

#özellik göstergesi_level1 80

#özellik göstergesi_level2 60

#özellik göstergesi_level3 40

#özellik göstergesi_level4 20

#özellik göstergesi_levelcolor DarkSlateGray

Ancak gösterge ayrı bir pencerede düzgün şekilde görünmüyor. Herhangi bir yardım çok takdir edildi.

Gösterge zorunlu olarak sınırlandırıldığından:

Bu iki satırı kaldırın:

#özellik göstergesi_minimum 0

#özellik göstergesi_maksimum 100

Düzeyler yalnızca sınırlı göstergelerde iyi çalışır, ancak sınırlı bir gösterge yapmak için hesaplamanın sınırları içermesi gerekir.

Örnek: RSI = 100-(100/(1+U/D))

Bu formülle, göstergenin 0-100 arasında hareket edeceğini ve 70-30 seviyelerini dahil edebileceğimizi, bunların kaybolmasından korkmadan biliyoruz.

Başka bir örnek MACD = EMA(KAPALI, 12)-EMA(KAPALI, 26)).

M5'te bir seviye belirledik ve H1'e geçtiğimizde büyük olasılıkla seviye gitti.

Yani aynı formülü alıyoruz ve bazı değişiklikler yapıyoruz MACD = (EMA(CLOSE, 12)-EMA(CLOSE, 26))/EMA(CLOSE, 26). Ve şimdi bir yüzde göstergemiz var. Sınırlı değil ama seviyemizi kaybetme olasılığımız daha az.

 

Teşekkürler Linuxer.

 
Gerçekten basit bir EA oluşturdum. ve en az 3 Zaman Çerçevesinde kullandığım bir sistem.. Sorun olabilir, açılmayı bırakmaz ve bir çift için 3 EA ve 3 grafiğine sahip olmak istemiyorum.

i need a code that would only do one order for buy and for sell per bar per TF and still open if it is on a different bar. i can have buy and sell and the same bar.

Bazen 3 farklı TF'de 3 sinyalim var. tüm siparişi almak istiyorum ama her TF için yalnızca bir sipariş istiyorum ve hala açıksa ancak farklı bir bardaysa başka bir TF'de başka bir sipariş alabilirim.

misal:

4 saatte 1 sinyal

1 saat içinde 1 sinyal ancak 4 saat boyunca bara düşüyor

30 dakikada 1 sinyal, ancak 1 saat ve 4 saat için yalnızca bir çubuk.

3 sinyal açık olacaktır.

Sihirli sayıyı filtre aracı olarak kullanmakta sorun yok.

biri bana yardım edebilir mi? çok teşekkürler.

şimdiye kadar şunu düşündüm:

30 dakika

if (sihirli sayı == 123)

{

if (iTime(OrderOpenTime()) != iTime(Symbol(),PERIOD_M30,0))

{//sipariş kodum}

}

MT4'üm yok ama mantıkta veya kodda bir şeylerin doğru olmadığını biliyorum. Bu yüzden arkadaşlar lütfen bana yardım edin.

ayrıca matrixebiz ile benzer bir sorunumuz olduğunu düşünüyorum

Biri bana yardım edebilir mi lütfen?

 
mystified:
Teşekkürler Linuxer.

Bu sadece örnek (çünkü artık Osilatör HMA'nız var ) önceki gönderiden, yine de MACD'dir ancak farklı bir şekilde hesaplanmıştır.

 
 

D1'deki açılış mumunda işlem yapmaya nasıl başlanır?

Yeni çubuk D1 zaman diliminde başladığında EA'nın açık ticarete başlamasını isteyecek kodu bilen var mı?

işte mantık:

D1 TF'de, yeni mum (yani yeni bir gün) başladığında, EA 2 pozisyon açar, her pozisyon için TP=10 pip ile AL ve SAT.

Mum kapandığında, EA tüm pozisyonları kapatır ve yeni mum için tekrar pozisyon açmaya başlar.

çok basit bir kural, ama yine de bu basit kuralın kodunu bulamıyorum....

MQL4 kodlamasında gerçekten yeniyim ve MQL4 kodlaması hakkında daha fazla bilgi edinmek için birçok kaynak ve forum araştırıp okudum, ancak ihtiyacım olanı bulamıyorum.

önce teşekkürler...

 

işte kodum .... lütfen düzeltmeme yardım et

Daha önce sorduğum şeyi kodlamaya çalıştım, işte örnek EA kodu:

int start()

{

SonFiyat=0;

LastProfit=0;

SonTicket=0;

LastLots=Lots;

Kar=0;

KarPip=0;

ÇiftSipariş=0;

Açılan Siparişler = 0;

ÖncekiSiparişler = SiparişlerAçıldı;

double Spread = MarketInfo(Symbol(),MODE_SPREAD);

PipValue=MarketInfo(Symbol(),MODE_TICKVALUE);

ArrayCopyRates(oranlar, Symbol(), PERIOD_D1);

if(DayOfWeek()==0 || DayOfWeek()==6)

{

// tatilde takas yok;

dönüş(0);

}

başka

{

if (newbar()==Period())

{

for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt --)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Color1);

}

}

OpenBuy();

OpenSell();

}

}

}

int yeni çubuk()

{

çift g;

int m,s,k;

m=Zaman[0]+Period()*60-TimeCurrent();

g=m/60.0;

s=m%60;

m=(mm%60)/60;

dönüş(m);

}

geçersiz OpenBuy()

{

çift ldLot, ldStop, ldTake;

dizi lsComm;

ldLot = GetSizeLot();

ldStop = Ask-Noktası*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitBuy(),Digits);

OrderSend(Symbol(),OP_BUY,ldLot,NormalizeDouble(Ask,Digits),Slippage,ldStop,ldTake,"BUY",Magic,0,Color1);

}

OpenSell()'i geçersiz kıl

{

çift ldLot, ldStop, ldTake;

dizi lsComm;

ldLot = GetSizeLot();

ldStop = Teklif+Puan*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitSell(),Digits);

OrderSend(Symbol(),OP_SELL,ldLot,NormalizeDouble(Bid,Digits),Slippage,ldStop,ldTake,"SELL",Magic,0,Color1);

}

çift GetSizeLot()

{

dönüş(Çok);

}

çift GetTakeProfitBuy()

{

dönüş(Sor+Kar Al*Puan);

}

çift GetTakeProfitSell()

{

dönüş(Teklif Al-Kar*Puan);

}

Dün gece vps'ime yükledim, ancak bu sabah kontrol ettim ama örnek EA'm herhangi bir ticaret açmıyor, buradaki biri örnek EA'mı burada düzeltmeme yardımcı olabilir mi?

btw, buraya da ekledim

 

Daha uzun süren uyarılar

merhaba, bunun içini ve dışını anlamaya çalışan acemiyim ve herhangi bir yardım takdir edilecektir!

şu anki göstergem, uyarı oluşturmak için aşağıdaki koda sahip, ancak bu uyarı yalnızca bir bip sesi için sürüyor, 30 veya 60 saniye veya en az 1 bipten biraz daha uzun bip sesi çıkarmamın bir yolu var mı?

if (setalert == 1 && shift == 0) {

Alert(Symbol(), " ", nokta, " ", model);

ayar uyarısı = 0;

}

teşekkürler

 

Metatrader'a Yeniden Kodlama (Klinger Hacim Osilatörü)

Klinger Osilatörü (KO), Stephen J. Klinger tarafından geliştirilmiştir. Bay Klinger, Joseph Granville, Larry Williams ve Marc Chaikin gibi tanınmış teknisyenlerin hacim üzerine önceki araştırmalarından ders alarak, hem kısa hem de uzun vadeli analizlere yardımcı olmak için hacim tabanlı bir gösterge geliştirmeye başladı.

KO, görünüşte birbirine zıt iki hedef düşünülerek geliştirildi: kısa vadeli zirveleri ve dipleri işaret edecek kadar hassas, ancak bir menkul kıymete giren ve çıkan uzun vadeli para akışını yansıtacak kadar doğru olmak.

KO aşağıdaki ilkelere dayanmaktadır:

* Fiyat aralığı (yani Yüksek - Düşük) bir hareket ölçüsüdür ve hacim, hareketin arkasındaki güçtür. Yüksek + Düşük + Kapanış toplamı bir eğilimi tanımlar. Birikim, bugünün toplamı bir önceki günün toplamından daha büyük olduğunda meydana gelir. Tersine, dağıtım bugünün toplamı bir önceki günün toplamından daha az olduğunda gerçekleşir. Toplamlar eşit olduğunda, mevcut eğilim korunur.

* Hacim, alım ve satım baskısını yansıtan fiyatta sürekli gün içi değişiklikler üretir. KO, her gün biriken ve dağıtılan hisse sayısı arasındaki farkı "hacim gücü" olarak ölçer. Güçlü, yükselen bir hacim kuvveti bir yükseliş trendine eşlik etmeli ve ardından yükseliş trendinin sonraki aşamalarında ve bir sonraki düşüş trendinin ilk aşamalarında zamanla kademeli olarak daralmalıdır. Bunu, dip gelişmeden önce bir miktar birikimi yansıtan artan bir hacim kuvveti takip etmelidir.

* Hacim kuvvetini, 13 dönemlik bir tetikleyici ile 34 dönemlik ve 55 dönemlik üstel hareketli ortalama arasındaki farkı temsil eden bir osilatöre dönüştürerek, bir menkul kıymete giren ve çıkan hacmin kuvveti kolayca izlenebilir. Bu gücü fiyat hareketiyle karşılaştırmak, tepe ve diplerdeki farklılıkları belirlemeye yardımcı olabilir.

Tercüme

Bay Klinger, KO'yu kullanmak için aşağıdaki yönergeleri önerir:

1. En güvenilir sinyaller, hakim trend yönünde meydana gelir. Kesin durdurma yönergeleri (yani, sıfır çizgisine girememe veya tetik çizgisinin ihlali) yürürlükte kalmalıdır.

2. En önemli sinyal, KO'nun, özellikle aşırı alım/aşırı satım bölgesindeki yeni en yüksek veya yeni en düşük seviyelerde, temel fiyat hareketiyle ayrıldığı zaman ortaya çıkar. Örneğin, bir hisse bir döngü için yeni bir yüksek veya düşük yaptığında ve KO bunu doğrulamadığında, trend ivme kaybediyor ve tamamlanmaya yaklaşıyor olabilir.

3. Fiyat yükseliş trendindeyse (yani, 89 günlük üssel hareketli ortalamanın üzerinde), KO alışılmadık şekilde sıfırın altına düştüğünde, yükseldiğinde ve tetik çizgisini geçtiğinde satın alın. Fiyat düşüş eğilimindeyse (yani, 89 günlük üssel hareketli ortalamanın altındaysa), KO sıfırın üzerinde olağandışı yüksek seviyelere yükseldiğinde, düştüğünde ve tetikleme çizgisini geçtiğinde sat.

KO, trend yönünde zamanlama işlemleri için iyi çalışırken, trende karşı daha az etkilidir. Bu, bir ticareti hakim eğilime karşı "kafa derisine sokmaya" çalışan tüccar için sorunlar yaratabilir. Ancak KO diğer teknik göstergelerle birlikte kullanıldığında daha iyi sonuçlar alınabilir. Aşırı alım/aşırı satım fiyat durumunu teyit etmek için William'ın %R'si ve kısa vadeli fiyat yönünü doğrulamak için Gerald Appel'in MACD'si tavsiye edilir.

Stephen Klinger, bir menkul kıymete giren ve çıkan kümülatif para akışını görüntülemek için aşağıdaki formülü önerir:

boşalmak(kvo())

Alım satım işlemlerine girmek için bir tetik çizgisi olarak formülün 13 dönemlik hareketli ortalamasını çizin.

kaynak kodenya untuk ticaret istasyonu

Tür: İşlev, Ad: VForce

Değişkenler: TSum(0), Trend(0), DM(0), CM(0);

TSum = Yüksek + Düşük + Kapat;

IF TSum > TSum[1] O zaman

Eğilim = 1

Başka

Eğilim = -1;

EĞER Eğilim = Eğilim[1] O zaman

CM = CM + Aralık

Başka

CM = Aralık + Aralık[1];

EĞER CM 0 O zaman

VForce = Hacim * Mutlak Değer(2 * (DM/CM) -1) * Trend * 100;

Tip: Fonksiyon, İsim: KVO

Girişler:

FastX(Sayısal),

SlowX(Sayısal); Vars:

FXAvg(0),

SXAvg(0);

FXAvg = XAverage(VForce, FastX);

SXAvg = XAverage(VForce, SlowX);

KVO = FXAvg - SXAvg;

Tip: Gösterge, İsim: Klinger Hacim Osilatörü

Girişler:

HızlıX(34),

YavaşX(55),

TrigLen(13),

Pürüzsüz(1);

Vars:

Trigger(0);Trigger = XAverage(KVO(FastX, SlowX), TrigLen);EĞER Düzgün <= 1 Sonra Başlayın

Plot1(KVO(HızlıX, YavaşX), "KVO");

Plot2(Tetikleyici, "KVO Tetikleyici");

End Else BeginPlot1(Toplam(KVO(HızlıX, YavaşX), Düzgün), "KVO");

Plot2(Summation(Trigger, Smooth), "KVO Trigger");

Son;

Plot3(0, "Sıfır");

EĞER Plot1 Plot2'nin Üstünü Keserse VEYA Plot1 Plot2'nin Altını Keserse VEYA

Plot2, Plot3'ün Üstünü Kesiyor VEYA Plot2, Plot3'ün Altını Kesiyor Sonra

Uyarı = Doğru;

Birisi bu kodlamayı Mql4'e dönüştürmeme yardım etmek ister mi?

teşekkürler

 
Neden: