Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
...
teras
Kapalı bir çubukta çarpı işareti olup olmadığını test etmek istediniz. Vardiya 1, ilk kapalı çubuk anlamına gelir ve vardiya 2, bundan önceki ilk çubuk anlamına gelir. Ve eğer kapalı bir çubuk üzerinde bir çarpı testi yapmak istiyorsanız, test etmeniz gereken çubuklar bunlardır.
(diff1*diff2)<0) itibariyle: aslında oldukça basit
Herhangi biri olumlu veya olumsuz olabilir. Bizim ilgilendiğimiz, birinin pozitif, diğerinin negatif olması, çünkü bu, ortalamaların aşıldığı anlamına geliyor. Çarpma varsa bize hızlı bir cevap verir (işaretler farklıysa sonuç 0'dan küçüktür, işaretler eşitse o çarpmanın sonucu 0'dan büyüktür)
Umarım bu, bu kodun ne yaptığını açıklığa kavuşturmuştur.
Merhaba Mladen, bana söylediklerini denedim ve harikalar yarattı. Ancak, kodların arkasındaki mantığı tam olarak anlamıyorum. iMA'nın kaymasını neden 1 ve 2'ye ayarladınız ve neden şunu da kodluyorsunuz: (diff1*diff2)<0)? Üzgünüm ama şu anda hala öğrenme ifadesindeyim.
Teşekkürler ve saygılar
terasOklar Nasıl Eklenir
Ekli, son birkaç gönderide tartışılan MA crossover EA'nın kısaltılmış bir versiyonudur.
Kapalı bir mum üzerinde bir geçiş meydana geldiğinde, bu sürüm günlük dosyasına bir mesaj yazdırır.
Grafikte yukarı/aşağı okları görüntülemek için Yazdırma mantığını kodla değiştirmek mümkün müdür?
Yardımın için teşekkürler.
...
Bu şekilde deneyin...
Ok çizecek ve grafiğin sağ alt köşesinde bir yorum gösterecektir - bunun gibi (ne yaptığını açıklığa kavuşturmak için grafikteki ortalamaları ekledi):
Ekli, son birkaç gönderide tartışılan MA crossover EA'nın kısaltılmış bir versiyonudur.
Kapalı bir mum üzerinde bir geçiş meydana geldiğinde, bu sürüm günlük dosyasına bir mesaj yazdırır.
Grafikte yukarı/aşağı okları görüntülemek için Yazdırma mantığını kodla değiştirmek mümkün müdür?
Yardımın için teşekkürler.MA Okları
"Yorumlu 2MAcrossover" gerçekten iyi çalışıyor.
Sadece bir soru - bir kez bir ok belirdiğinde, yeni bir mum açıldığında kaybolacaktır, bu kasıtlı mıydı?
Grafiğin sağ alt köşesindeki yorumu beğendim.
Tekrar teşekkürler.
teras
Kapalı bir çubukta çarpı işareti olup olmadığını test etmek istediniz. Vardiya 1, ilk kapalı çubuk anlamına gelir ve vardiya 2, bundan önceki ilk çubuk anlamına gelir. Ve eğer kapalı bir çubuk üzerinde bir çarpı testi yapmak istiyorsanız, test etmeniz gereken çubuklar bunlardır.
(diff1*diff2)<0) itibariyle: aslında oldukça basit
Herhangi biri olumlu veya olumsuz olabilir. Bizim ilgilendiğimiz, birinin pozitif, diğerinin negatif olması, çünkü bu, ortalamaların aşıldığı anlamına geliyor. Çarpma varsa bize hızlı bir cevap verir (işaretler farklıysa sonuç 0'dan küçüktür, işaretler eşitse o çarpmanın sonucu 0'dan büyüktür)
Umarım bu, bu kodun ne yaptığını açıklığa kavuşturmuştur.Yardımın için teşekkürler Mladen! Ancak bu kodu eklediğimde, EA'm biraz kontrolden çıkmış gibi görünüyor. Bazen, ekran görüntüsünde gösterildiği gibi gerçek SL veya TP'ye ulaşılmadan önce bile kendi kendine otomatik SL veya TP olacaktır. neden böyle?
Teşekkürler ve saygılar
teras
//--- giriş parametreleri
harici çift TakeProfit=1000.0;
dış çift Lot = 0.1;
harici çift StopLoss=1500.0;
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int init()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
dönüş(0);
}
int mainCrossed (çift ana hat1, çift ana hat2)
{
statik int mainlast_direction = 0;
statik int maincurrent_dirction = 0;
if(mainline1>mainline2)maincurrent_dirction = 1; // ana yukarı
if(mainline1<mainline2)maincurrent_dirction = 2; // ana aşağı
if(maincurrent_dirction != mainlast_direction) //main değişti
{
mainlast_direction = maincurrent_dirction;
dönüş (mainlast_direction);
}
başka
{
dönüş (0);
}
}
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int başlangıç()
{
//----
int cnt, bilet, toplam;
double shortEma, longEma, mainshortEma, mainlongEma;
if(Çubuklar<100)
{
Print("100'den küçük barlar");
dönüş(0);
}
if(Kâr Al<10)
{
Print("Kar Al 10'dan az");
dönüş(0); // TakeProfit'i kontrol edin
}
int Çapraz = 0;
double shortEma1 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,1);
double longEma1 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,1);
double shortEma2 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,2);
double longEma2 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,2);
çift fark1 = kısaEma1-uzunEma1;
çift fark2 = kısaEma2-uzunEma2;
mainshortEma = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,0);
mainlongEma = iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0);
int mainisCrossed = mainCrossed (mainshortEma,mainlongEma);
eğer ((fark1*fark2)<0)
{
if (kısaEma1>uzunEma1)
çapraz = 1;
yoksa Çapraz = 2;
}
toplam = SiparişlerToplam();
if(toplam < 1)
{
if(isCrossed == 1 && mainshortEma > mainlongEma)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Puan,Ask+TakeProfit*Puan,
"EA'm",12345,0,Yeşil);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("Satın alma emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
if(isCrossed == 2 && mainshortEma < mainlongEma)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,
Bid-TakeProfit*Point,"My EA",12345,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print(" SAT emri açıldı : ",OrderOpenPrice());
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
dönüş(0);
}
dönüş(0);
}
//+------------------------------------------- -------------------+
teras
Bu kodun SL veya TP ile ilgisi yok. Sadece çaprazlar için 2 ortalamayı test eder (bakın michaelB'nin aynı kodu 2MACross'unda nasıl kullandığına bakın, çünkü bu da nan EA'dır). Bu SL ve TP hataları için kodunuzun geri kalanının revize edilmesi gerekiyor.
Yardımın için teşekkürler Mladen! Ancak bu kodu eklediğimde, EA'm biraz kontrolden çıkmış gibi görünüyor. Bazen, ekran görüntüsünde gösterildiği gibi gerçek SL veya TP'ye ulaşılmadan önce bile kendi kendine otomatik SL veya TP olacaktır. neden böyle?
Teşekkürler ve saygılar
teras
//--- giriş parametreleri
harici çift TakeProfit=1000.0;
dış çift Lot = 0.1;
harici çift StopLoss=1500.0;
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int init()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
dönüş(0);
}
int mainCrossed (çift ana hat1, çift ana hat2)
{
statik int mainlast_direction = 0;
statik int maincurrent_dirction = 0;
if(mainline1>mainline2)maincurrent_dirction = 1; // ana yukarı
if(mainline1<mainline2)maincurrent_dirction = 2; // ana aşağı
if(maincurrent_dirction != mainlast_direction) //main değişti
{
mainlast_direction = maincurrent_dirction;
dönüş (mainlast_direction);
}
başka
{
dönüş (0);
}
}
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int başlangıç()
{
//----
int cnt, bilet, toplam;
double shortEma, longEma, mainshortEma, mainlongEma;
if(Çubuklar<100)
{
Print("100'den küçük barlar");
dönüş(0);
}
if(Kâr Al<10)
{
Print("Kar Al 10'dan az");
dönüş(0); // TakeProfit'i kontrol edin
}
int Çapraz = 0;
double shortEma1 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,1);
double longEma1 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,1);
double shortEma2 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,2);
double longEma2 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,2);
çift fark1 = kısaEma1-uzunEma1;
çift fark2 = kısaEma2-uzunEma2;
mainshortEma = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,0);
mainlongEma = iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0);
int mainisCrossed = mainCrossed (mainshortEma,mainlongEma);
eğer ((fark1*fark2)<0)
{
if (kısaEma1>uzunEma1)
çapraz = 1;
yoksa Çapraz = 2;
}
toplam = SiparişlerToplam();
if(toplam < 1)
{
if(isCrossed == 1 && mainshortEma > mainlongEma)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Puan,Ask+TakeProfit*Puan,
"EA'm",12345,0,Yeşil);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("Satın alma emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
if(isCrossed == 2 && mainshortEma < mainlongEma)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,
Bid-TakeProfit*Point,"My EA",12345,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("SAT emri açıldı : ",OrderOpenPrice());
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
dönüş(0);
}
dönüş(0);
}
//+------------------------------------------- -------------------+...
Evet kasıtlı
Bir gösterge değil, bir EA yaptığınız için, ekleme yalnızca son aktif çarpıyı gösterecek ve aktif çarpı olmadığında ok göstermeyecekti. Birden fazla ok gösterebilmesi için önce göstergeye dönüştürülmesi ve ardından her şeyin yeniden yazılması gerekir, ancak bence zaten grafikte ortalamaları gösteren birçok gösterge var.
"Yorumlu 2MAcrossover" gerçekten iyi çalışıyor.
Sadece bir soru - bir kez bir ok belirdiğinde, yeni bir mum açıldığında kaybolacaktır, bu kasıtlı mıydı?
Grafiğin sağ alt köşesindeki yorumu beğendim.
Tekrar teşekkürler.Terrance Bu kodun SL veya TP ile ilgisi yok. Sadece çaprazlar için 2 ortalamayı test eder (bakın michaelB'nin aynı kodu 2MACross'unda nasıl kullandığına bakın, çünkü bu da nan EA'dır). Bu SL ve TP hataları için kodunuzun geri kalanının revize edilmesi gerekiyor.
Merhaba Mladen,
TP ve SL'mi ayarlama şeklim yanlış mı demek istiyorsun?
Saygılarımızla
teras
...
teras
TSD: Dersler'in bu bölümünü gördünüz mü?
Orada birçok sorunun zaten yanıtlandığını ve genel EA yazımı için çok iyi örnekler bulabileceğinizi düşünüyorum. Sorunuz itibariyle: EA'nızı test etmedim, bu yüzden bilmiyorum. Başka birinin EA'sını test etmedeki sorun, kişinin onun fikrini ve mantığını bilmesi gerektiği ve çoğu zaman bunları kodun kendisinden "okumanın" imkansız olmasıdır. Bahsettiğimiz kod parçası, kapalı bir çubukta 2 ortalama çarpı işaretinin nasıl tespit edileceği ile ilgiliydi ve bu kod sadece bunu yapıyor ve bundan başka bir şey yapmıyor. O yüzden "SL veya TP ile alakası yok" dedim.
Saygılarımızla
Mladen
Merhaba Mladen,
TP ve SL'mi ayarlama şeklim yanlış mı demek istiyorsun?
Saygılarımızla
terasMQL Dersleri Konusu
mladen-- bağlantı için teşekkürler!!