Nasıl kodlanır? - sayfa 257

 

Metatrader yardımındaki zaman fonksiyonlarını kontrol edin. o zaman şöyle bir şey dene

if (TimeHour(Time[0]) TradeHourStop)

{

Comment("İşlem askıya alındı - işlem saatleri dışında");

dönüş(yanlış);

}

Burada TimeHourStart ve stop sizin tarafınızdan ayarlanan harici değişkenlerdir. dönüş(yanlış); daha fazla işlem yapmadan başlatma işlevinden çıkacaktır.

İyi şanslar,

 

Hızlı cevap için teşekkürler, Tzuman.

Ne yazık ki, MT4 programlamam şu anda çevrimiçi bir EA oluşturucu ile sınırlıdır.

Gerçi bu sadece aradığım şeydi!

 

Metin rengi yapılandırması ve yorumların yazı tipi boyutu nasıl kodlanır?

Selam millet,

Bir EA üzerinde çalışıyorum ve sadece yeni başlayan bir programcıyım...

Ve genel olarak yorumların yazı tipi boyutunu ve metin rengini nasıl kodlayacağım ve onu kullanıcı tarafından yapılandırılabilir hale getirme konusunda bir sorum var. Hangi harici değişkenleri oluşturmam gerekiyor? Ve nasıl programlayabilirim?

Yorum işlevini nasıl kullanacağımı biliyorum, örneğin şöyle:

if(TextOnScreen == true) Comment("Bu metin ekranda belirir ");

Ancak, kullanıcının ekranda görünen metnin yazı tipi boyutunu değiştirebilmesi için nasıl programlanır ve ayrıca EA seçeneklerindeki ayarı değiştirerek bu metnin metin rengini nasıl değiştirebilir?

Biri bana birkaç satır kodla yardımcı olabilir mi? Çok takdir edilmektedir.

Çok teşekkürler.

Johan

 
korthouj:
Selam millet,

Bir EA üzerinde çalışıyorum ve sadece yeni başlayan bir programcıyım...

Ve genel olarak yorumların yazı tipi boyutunu ve metin rengini nasıl kodlayacağım ve onu kullanıcı tarafından yapılandırılabilir hale getirme konusunda bir sorum var. Hangi harici değişkenleri oluşturmam gerekiyor? Ve nasıl programlayabilirim?

Yorum işlevini nasıl kullanacağımı biliyorum, örneğin şöyle:

if(TextOnScreen == true) Comment("Bu metin ekranda belirir ");

Ancak, kullanıcının ekranda görünen metnin yazı tipi boyutunu değiştirebilmesi için nasıl programlanır ve ayrıca EA seçeneklerindeki ayarı değiştirerek bu metnin metin rengini nasıl değiştirebilir?

Biri bana birkaç satır kodla yardımcı olabilir mi? Çok takdir edilmektedir.

Çok teşekkürler.

Johan

Örneğin etiketler gibi grafik nesneleri kullanmanız gerekir. Bu nasıl yapılır - kılavuzda kolayca okuyabilirsiniz.

 
korthouj:
Selam millet,

Bir EA üzerinde çalışıyorum ve sadece yeni başlayan bir programcıyım...

Ve genel olarak yorumların yazı tipi boyutunu ve metin rengini nasıl kodlayacağım ve onu kullanıcı tarafından yapılandırılabilir hale getirme konusunda bir sorum var. Hangi harici değişkenleri oluşturmam gerekiyor? Ve nasıl programlayabilirim?

Yorum işlevini nasıl kullanacağımı biliyorum, örneğin şöyle:

if(TextOnScreen == true) Comment("Bu metin ekranda belirir ");

Ancak, kullanıcının ekranda görünen metnin yazı tipi boyutunu değiştirebilmesi için nasıl programlanır ve ayrıca EA seçeneklerindeki ayarı değiştirerek bu metnin metin rengini nasıl değiştirebilir?

Biri bana birkaç satır kodla yardımcı olabilir mi? Çok takdir edilmektedir.

Çok teşekkürler.

Johan

Johan,

Ekli göstergeyi inceleyin.

Kodun bir kısmı, bir şablon kullanıldığında içindir.

Şablon nedeniyle bir çiftten gelen metnin başka bir çift grafiğinde görünmesinin zor olduğunu keşfettim.

Daha fazla metin satırı gerekiyorsa, bunu çözebilmelisiniz.

Tekrar yayınlamazsanız, çok satırlı bir örnek göstereceğim.

Robert

Dosyalar:
 

kapatma emri neden başarısız olur ve sipariş no nasıl sınırlandırılır?

Ben MQL4'te acemiyim, sadece bir EA'mı test ettim, ancak siparişi kapatamıyor gibi görünüyor ve serbest marj 0 olana kadar her çubukta sipariş açacak, sonra tüm siparişleri durdurmaya zorlayacak. Açık siparişi nasıl sınırlayacağımı bilmiyorum NO. Kim bana söyleyebilir, TKS takdir!

kod aşağıdaki gibi:

//+------------------------------------------- -------------------+

//| Hareketli Ortalama.mq4 |

//| Telif hakkı ?2005, MetaQuotes Yazılım A.Ş. |

//| TeamWox Groupware / MetaQuotes Software Corp. |

//+------------------------------------------- -------------------+

#define MAGICMA 20110309

dış çift Lot = 1;

harici çift MaximumRisk = 0.02;

dış çift Azaltma Faktörü = 10;

//+------------------------------------------- -------------------+

//| Açık pozisyonları hesaplayın |

//+------------------------------------------- -------------------+

int CalculateCurrentOrders(dize sembolü)

{

int satın alır = 0, satar = 0;

//----

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) ara;

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

{

if(OrderType()==OP_BUY) satın alır++;

if(OrderType()==OP_SEL) satıyor++;

}

}

//---- iade sipariş hacmi

if(satın alır>0) iade(satın alır);

başka iade(satış);

}

//+------------------------------------------- -------------------+

//| Optimum parti boyutunu hesaplayın |

//+------------------------------------------- -------------------+

çift LotOptimize Edilmiş()

{

double lot=Lot;

int siparişler=TarihToplam(); // geçmiş sipariş toplamı

int kayıplar=0; // Kesintisiz siparişlerin sayısı

//---- parti boyutunu seç

lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/100.0,1);

Print(MarketInfo(Symbol(), MODE_LOTSIZE));

Print(MarketInfo(Symbol(), MODE_MINLOT));

Print(MarketInfo(Symbol(), MODE_LOTSTEP));

Print(MarketInfo(Symbol(), MODE_MAXLOT));

//---- Kesintisiz siparişlerin sayısını hesapla

if(DecreaseFactor>0)

{

for(int i=sipariş-1;i>=0;i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Geçmişte hata!"); kırmak; }

if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) devam ediyor;

//----

if(OrderProfit()>0) kırılması;

if(OrderProfit()<0) kayıpları++;

}

if(kayıplar>1) lot=NormalizeÇift(lot-lot*kayıplar/AzalışFaktörü,1);

//bu akıllı bir teknik tasarımdır, ancak kayıplar kar kaybına neden olur, para değil sorunlara neden olabilir.

//bunları şu şekilde değiştirin:accountfreemargin()-orderprofit()

}

//---- parti boyutunu iade et

if(lot<1) lot=1;

dönüş(lot);

}

//+------------------------------------------- -------------------+

//| Açık sipariş koşullarını kontrol edin |

//+------------------------------------------- -------------------+

geçersiz CheckForOpen()

{

çift m1,m2,m3,m4,bilet1,bilet2;

int res;

//---- sadece yeni çubuğun ilk tikleriyle işlem yap

if(Volume[0]>1) dönüşü;

//---- Hareketli Ortalamayı al

m1=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0);

m2=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,0);

m3=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1);

m4=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,1);

//---- satış koşulları

eğer (m1<m3-0.0002)

{

bilet1=SiparişGönder(Symbol(),OP_SELL,1,Teklif,5,Ask+105*Puan,0,"Siparişim #1",MAGICMA,0,Kırmızı);

dönüş;

}

eğer (m2<m4-0.0001)

{

bilet2=SiparişGönder(Symbol(),OP_SELL,1,Teklif,5,Sor+105*Puan,0,"Siparişim #2",MAGICMA,0,Sarı);

dönüş;

}

//---- satın alma koşulları

ise ( m1>m3+0.0002)

{

bilet1=SiparişGönder(Symbol(),OP_BUY,1,Sor,5,Bid-105*Puan,0,"Siparişim #1",MAGICMA,0,Mavi);

dönüş;

}

if (m2>m4+0,0001)

{

bilet2=SiparişGönder(Symbol(),OP_BUY,1,Sor,5,Bid-105*Puan,0,"Siparişim #2",MAGICMA,0,Yeşil);

dönüş;

}

//----

}

//+------------------------------------------- -------------------+

//| Yakın sipariş koşullarını kontrol edin |

//+------------------------------------------- -------------------+

geçersiz CheckForClose()

{

çift m1,m2,m3,m4;

//---- sadece yeni çubuğun ilk tikleriyle işlem yap

if(Volume[0]>1) dönüşü;

//---- Hareketli Ortalamayı al

m1=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0);

m2=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,0);

m3=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1);

m4=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,1);

//----

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) ara;

if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) devam ediyor;

//---- sipariş tipini kontrol et

if(OrderType()==OP_BUY)

{

if(m1<m3+0.0002)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

kırmak;

}

if(m2<m4+0.0001)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Beyaz);

kırmak;

}

}

if(OrderType()==OP_SEL)

{

if(m1>m3-0.0002)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Tan);

kırmak;

}

if(m2<m4-0.0001)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Somon);

kırmak;

}

}

}

//----

}

//+------------------------------------------- -------------------+

//| Başlatma işlevi |

//+------------------------------------------- -------------------+

geçersiz başlangıç()

{

//---- geçmişi ve ticareti kontrol et

if(Bars<55 || IsTradeAllowed()==yanlış) dönüş;

//---- açık siparişleri mevcut sembole göre hesapla

if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();

başka CheckForClose();

//----

}

//+------------------------------------------- -------------------+

 

Windows Sürümünü Algıla

Artık yalnızca bir Windows API çağrısı kullanarak Windows MT4'ün hangi sürümünün çalıştığını bulmanın kolay bir yolu var mı?

Herhangi biri bana bu işi nasıl yapacağımı söyleyebilir mi:

#import "kernel32.dll"

int GWINAPI GetVersionEA(_inout LPOVERSIONINFO lpVersionInfo);

#içe aktarmak

GetVersionEx İşlevi (Windows)

Teşekkür ederim

 

Yardıma ihtiyaç var. My CCI Divergence EA'da Küçük Ayarlama

Ne zaman işlem yapacağınızı belirlemek için MT4'teki Göstergeler klasöründe özel bir CCI Divergence Göstergesi kullanan bir CCI Divergence EA'm var.

Yapmak istediğim, bunun yerine özel bir Stokastik Iraksama Göstergesi (sahip olduğum) kullanmak.

Göstergeler klasöründeki Stokastik Iraksama Göstergesine yönlendirmek için EA kodunu nasıl değiştireceğimi bilmiyorum.

EA girdilerinde değiştirmem gerektiğini düşünüyorum:

harici int CCI_Period = 10;

ile

harici int Stoch_K = 5;

harici int Stoch_D = 3;

extern int Stoch_Slowing = 3;

Kodun ana bölümünde, Göstergeler klasöründe özel CCI Iraksama Göstergesine işaret eden alanı buldum:

dUp = iCustom(Symbol(), 0, "CCI_Divergence_Indicator", "", CCI_Period, 9, "", false, false, false, 0, 2);

dDn = iCustom(Symbol(), 0, "CCI_Divergence_Indicator", "", CCI_Period, 9, "", false, false, false, 1, 2);

Göstergeler klasöründeki özel stokastik sapma göstergesinin adı olan "CCI_Divergence_Indicator"ı "Stochastics_Divergence_Indicator" olarak değiştirmem gerektiğini biliyorum. Ve CCI_Period ve 9'u kaldırmam gerekiyor.

Ama kodun bu kısmına Stoch_K, Stoch_D ve Stoch_Slowing'i nasıl ekleyeceğimi bilmiyorum.

Kendi başıma değiştirmeyi denedim, ancak EA açılmıyor.

Stokastik sapma göstergesinin cci sapma göstergesinin yerini alabilmesi için kodun bu bölümünün nasıl kodlanacağını bilen var mı?

Ea'yı yaratması için bir programcıya para ödedim, ama o diğer müşterilerin projeleriyle çok meşgul. Bu nedenle, küçük değişikliklere/düzeltmelere gelince, bunu benim için yapacak zamanı yok - en azından hemen değil. O yüzden burada soruyorum.

CCİ Iraksama Göstergesinde çok fazla yanlış sinyal var. Stokastik Iraksama Göstergesi çok daha iyi. Bu yüzden geçiş yapmak istiyorum.

Şimdiden teşekkürler.

 

Yardım lütfen

1 barın fiyatı (1m 5m 189m olsun) 1 BAR'DA 200 pips hareket ettiğinde beni uyaracak bir kod satırım var. ama hayatım boyunca SADECE belirli bir yönü uyaracak şekilde nasıl ayarlayacağımı çözemiyorum. işte burada..

if(Yüksek[0]-Düşük[0]>200*Puan)PlaySound("Alert.wav"); //Bu iyi çalışıyor.

Ama 200 pip YUKARI ve 200 pip AŞAĞI arasında ayrım yapabilmek istiyorum. Okudum, forumlarda sordum, sohbet odalarında bulundum ve 3 gün boyunca kendimi çıldırttım. bittim lütfen allah aşkına yardım edin

 
if(High[0]-Low[0]>200*Point && Close[0]>Open[0])PlaySound("Up.wav");

if(High[0]-Low[0]>200*Point && Close[0]<Open[0])PlaySound("Down.wav");[/CODE]

Actually, you should rather look at highs and lows of two last bars and compare close to close, to ensure gaps are included, too:

[CODE]if(Mathmax(High[0],High[1])-Mathmin(Low[0],Low[1])>200*Point && Close[0]>Close[1])PlaySound("Up.wav");

if(Mathmax(High[0],High[1])-Mathmin(Low[0],Low[1])>200*Point && Close[0]<Close[1])PlaySound("Down.wav");
Neden: