Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
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
MladenMerhaba Mladen, tekrar rahatsız ettiğim için özür dilerim. Kodlarımı inceledim ve sadece TP ve SL'mi değil, bazen alış ve satış siparişlerimin bile kapalı olduğunu fark ettim. Kodlayıcılar guruları tarafından bana verdiğiniz dersle ilgili bağlantıları inceledim ve bu, sahip olduğum ve kodlarımı temel alan aynı öğreticiler seti. Kodlarda hatamın nedenini cidden bulamıyorum.
MA'nın çaprazları, Uzun ve Kısa siparişle birlikte olması gerektiği gibi çalışır, ancak bazen Giriş ve Çıkış, test etmek için temel bir ASK işlevi yaptığımda bile kontrolden çıkıyor gibi görünüyor. Lütfen bana biraz ışık tut.
Teşekkürler ve saygılar
teras
...
teras
Birincisi: Brokeriniz ECN/STP gibi mi? Evet ise, emir açılışı ile birlikte zararı durdur ve kar al koyamazsınız, ancak önce 0'a ayarlanmış olan bir emir açmalı ve zararı durdur ve/veya önceden açılmış bir emirde kar al için OrderModify()'ı kullanmalısınız. .
İkincisi: Ayrıca, her zaman terminal penceresinin uzmanlar sekmesinde yazılı bir şey olup olmadığını kontrol edin (orada bazı hataların yazılıp yazılmadığını kontrol edin: muhtemelen neler olduğunu ve neden olduğunu öğreneceksiniz.
Üçüncüsü: Bunun gibi bir satır yerleştirmek iyi bir fikir olabilir:
Her Sipariş yönetimi işlevinden sonra. Uzmanlar/include/stderror.mqh dosyasında bulabileceğiniz hata açıklamaları (siparişlerde meydana gelebilecek birçok hata vardır (sadece olası hata kodlarının ve açıklamalarının listesine bakın) ve olası her hatayı izlemeniz gerekir) bilinen hata kodları (yukarıdaki kod satırı), neler olduğunu tahmin etmek yerine belirli hataları düzeltmeye odaklanabilirsiniz.
Merhaba Mladen, tekrar rahatsız ettiğim için özür dilerim. Kodlarımı inceledim ve sadece TP ve SL'mi değil, bazen alış ve satış siparişlerimin bile kapalı olduğunu fark ettim. Kodlayıcılar guruları tarafından bana verdiğiniz dersle ilgili bağlantıları inceledim ve bu, sahip olduğum ve kodlarımı temel alan aynı öğreticiler seti. Kodlarda hatamın nedenini cidden bulamıyorum.
MA'nın çaprazları, Uzun ve Kısa siparişle birlikte olması gerektiği gibi çalışır, ancak bazen Giriş ve Çıkış, test etmek için temel bir ASK işlevi yaptığımda bile kontrolden çıkıyor gibi görünüyor. Lütfen bana biraz ışık tut.
Teşekkürler ve saygılar
terasteras
Birincisi: Brokeriniz ECN/STP gibi mi? Evet ise, emir açılışı ile birlikte zararı durdur ve kar al koyamazsınız, ancak önce 0'a ayarlanmış olan bir emir açmalı ve zararı durdur ve/veya önceden açılmış bir emirde kar al için OrderModify()'ı kullanmalısınız. .
İkincisi: Ayrıca, her zaman terminal penceresinin uzmanlar sekmesinde yazılı bir şey olup olmadığını kontrol edin (orada bazı hataların yazılıp yazılmadığını kontrol edin: muhtemelen neler olduğunu ve neden olduğunu öğreneceksiniz.
Üçüncüsü: Bunun gibi bir satır yerleştirmek iyi bir fikir olabilir:
Merhaba Mladen,
ECN/STP meselesine dikkat çektiğiniz için teşekkürler. Sen söyleyene kadar bunlardan haberim yoktu. Önerdiğiniz gibi değişiklikleri yaptım, ancak şimdi sadece benim için daha kötü oldu. Sadece Giriş ve Çıkış sorunu devam etmekle kalmıyor, şimdi SL'm de kayıp. Bu düşündüğümden daha zor.
//--- 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,Sor,3,0,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,0,Teklif Al-Kar*Puan,
"EA'm",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);
}
for(cnt=0;cnt<toplam;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // uzun pozisyon açıldı
{
OrderClose(OrderTicket(),OrderLots(),Ask-StopLoss*Point,3,Violet);
// konumu kapat
dönüş(0); // çıkış
}
else // kısa pozisyona git
{
OrderClose(OrderTicket(),OrderLots(),Teklif+StopLoss*Puan,3,Violet);
// konumu kapat
dönüş(0); // çıkış
}
}
}
dönüş(0);
}
//+------------------------------------------- -------------------+
teras
Birincisi: Brokeriniz ECN/STP gibi mi? Evet ise, emir açılışı ile birlikte zararı durdur ve kar al koyamazsınız, ancak önce 0'a ayarlanmış olan bir emir açmalı ve zararı durdur ve/veya önceden açılmış bir emirde kar al için OrderModify()'ı kullanmalısınız. .
İkincisi: Ayrıca, her zaman terminal penceresinin uzmanlar sekmesinde yazılı bir şey olup olmadığını kontrol edin (orada bazı hataların yazılıp yazılmadığını kontrol edin: muhtemelen neler olduğunu ve neden olduğunu öğreneceksiniz.
Üçüncüsü: Bunun gibi bir satır yerleştirmek iyi bir fikir olabilir:
Hey Mladen, bu birkaç gündeki yardımların için sana teşekkür etmek istiyorum. Kodumda giriş ve çıkış hatasına neden olan hatayı bulmayı başardım.
Saygılarımızla
teras
1'den fazla işlem açma
Herkese selam, EA'mı birden fazla işlem açabilecek hale getirmeye çalışıyorum, ancak şu ana kadar bunu yalnızca 1 işlemle sınırlayabiliyorum.
Amacım basit:
LWMA 10, LWMA 20'nin altına düştüğünde, sistem hem LWMA 10 hem de 20'nin SMA 50'nin altına düşmesi ve uzun işlemler için tam tersi olması koşuluyla kısa devre yapacaktır.
EA'mı 2'den fazla işlem açmayacak şekilde sınırlamak istiyorum, ancak kodları değiştirdiğimde, kriter başına 1 işlem açmak yerine bir seferde 2 işlem açma oluyor.
Bir sayaç sistemi veya herhangi bir şey kurmam gerekiyor mu veya sayacımı, ticaretimin 1'inde zaten TP veya SL olduğunda tepki verecek şekilde nasıl ayarlarım?
Birisi lütfen bana kodlarımda neyin yanlış olduğu konusunda biraz ışık tutabilir mi?
çok teşekkürler ve saygılar
teras
//--- giriş parametreleri
harici çift TakeProfit=500.0;
dış çift Lot = 0.1;
harici çift StopLoss=500.0;
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int init()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
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
}
shortEma = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,0);
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,50,0,MODE_SMA,PRICE_CLOSE,0);
eğer ((fark1*fark2)<0)
{
if (kısaEma1>uzunEma1)
çapraz = 1;
yoksa Çapraz = 2;
}
toplam = SiparişlerToplam();
if(toplam < 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Sor,1,Ask-StopLoss*Puan,Sor+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 && shortEma < mainshortEma && longEma < mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,1,Teklif+StopLoss*Puan,Teklif-AlKar*Puan,
"EA'm",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);
}
if(toplam == 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Sor,1,Ask-StopLoss*Puan,Sor+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 && shortEma < mainshortEma && longEma < mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,1,Teklif+StopLoss*Puan,Teklif-AlKar*Puan,
"EA'm",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);
}
//+------------------------------------------- -------------------+
sorular
Mladen,
Bana gösterdiğiniz bağlantının altındaki Dersleri aramaya çalışıyorum, ancak bunlar genel dersler, özellikle Henderson'ın göstergesi için bilgi arıyorum ...
Ayrıca, yayınlanan konuları inceledim ve bundan sonra aşağıdaki şeyleri bulmak istiyorum.
-Basit ve anlaşılır bir dille sormak istediğim, yaklaşık olarak kaç çubuk geçtikten sonra renk değişiyor.
Başka bir deyişle, çizginin rengi maviden pembeye dönüşene kadar en fazla kaç çubuk gerekir? Ne yazık ki, süslü terminolojiyi anlamıyorum ve devam edip stratejiyi başlatabileceğim çok basit bir cevap alırdım. Herhangi bir grafik çok takdir edilir. premalmunshaw@yahoo.com benim e-posta adresim.
Bu paketin etkinleştirilmesi için 39 dolar ödemeye çalışıyorum.
OLUMLU CEVAP BEKLİYORUZ!
Saygılarımızla,
Premal Munshaw
açıkçası ne sorduğunu anlamadım
Renk ne zaman değişir diye soruyorsanız, cevap : eğim değiştiğinde
Renk değiştirmenin nasıl kodlandığını soruyorsanız, bu bölümde aramanız gereken cevap: Dersler ....
Ne yazık ki sorularınızı anlamıyorum, bu yüzden tek yapacağım kendimden alıntı yapmak (hesaplama uzunluğu Henderson'ın filtre hesaplama uzunluğunu ifade eder):
Bundan daha basit cevap vermek imkansız. Ve Henderson'ın filtresinin nasıl hesaplandığının daha basit bir açıklaması yok: Fourier dönüşümünü "1+1 = 2" cinsinden açıklamaya çalışsaydım böyle olurdu. Lütfen size verilen bağlantıları inceleyin
Geri kalanı itibariyle: filtrenin arkasındaki matematiğe bağlantılarınız var, kaç çubuğun yeniden hesaplandığına dair bilgi aldınız, hatta elit bölüm haber dizisinden örnekler aldınız. Bu filtreyi kullanan strateji olarak: 1000'lerce gönderide 1000 kez, yeniden hesaplanan göstergelerin (SSA, Henderson'ın filtresi, merkezli TMA, Fourier dönüşümleri, regresyon analizi, ...) "sinyalleme modunda" kullanılmaması gerektiğini söyledim. "tahmin modu". Henderson'ın filtresinden gelen bir sinyalin peşindeyseniz, tamamen yanlış yoldasınız ve elit bölüm aboneliğini düşünmenizin tek nedeni buysa, abone olmamanız daha iyidir.
Not: E-postanızı herkese açık hale getirmek kötü bir uygulamadır. Bu şekilde alacağınız tek şey e-posta kutunuzdaki bir ton spam mesajıdır.
________________________
Bir ticaret sistemi arayışınızda size en iyisini diliyorum
Saygılarımızla
Mladen
Mladen,
Bana gösterdiğiniz bağlantının altındaki Dersleri aramaya çalışıyorum, ancak bunlar genel dersler, özellikle Henderson'ın göstergesi için bilgi arıyorum ...
Ayrıca, yayınlanan konuları inceledim ve bundan sonra aşağıdaki şeyleri bulmak istiyorum.
-Basit ve anlaşılır bir dille sormak istediğim, yaklaşık olarak kaç çubuk geçtikten sonra renk değişiyor.
Başka bir deyişle, çizginin rengi maviden pembeye dönüşene kadar en fazla kaç çubuk gerekir? Ne yazık ki, süslü terminolojiyi anlamıyorum ve devam edip stratejiyi başlatabileceğim çok basit bir cevap alırdım. Herhangi bir grafik çok takdir edilir. premalmunshaw@yahoo.com benim e-posta adresim.
Bu paketin etkinleştirilmesi için 39 dolar ödemeye çalışıyorum.
OLUMLU CEVAP BEKLİYORUZ!
Saygılarımızla,
Premal MunshawMladen,
İşlemimde TP veya SL olduğunda karşı atlamayı tetikleyebilmem için işlemime bir sayaç ayarlamamın bir yolu var mı?
Saygılarımızla
teras
Herkese selam, EA'mı birden fazla işlem açabilecek hale getirmeye çalışıyorum, ancak şu ana kadar bunu yalnızca 1 işlemle sınırlayabiliyorum.
Amacım basit:
LWMA 10, LWMA 20'nin altına düştüğünde, sistem hem LWMA 10 hem de 20'nin SMA 50'nin altına düşmesi ve uzun işlemler için tam tersi olması koşuluyla kısa devre yapacaktır.
EA'mı 2'den fazla işlem açmayacak şekilde sınırlamak istiyorum, ancak kodları değiştirdiğimde, kriter başına 1 işlem açmak yerine bir seferde 2 işlem açma oluyor.
Bir sayaç sistemi veya herhangi bir şey kurmam gerekiyor mu veya sayacımı, ticaretimin 1'inde zaten TP veya SL olduğunda tepki verecek şekilde nasıl ayarlarım?
Birisi lütfen bana kodlarımda neyin yanlış olduğu konusunda biraz ışık tutabilir mi?
çok teşekkürler ve saygılar
teras
//--- giriş parametreleri
harici çift TakeProfit=500.0;
dış çift Lot = 0.1;
harici çift StopLoss=500.0;
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int init()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
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
}
shortEma = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,0);
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,50,0,MODE_SMA,PRICE_CLOSE,0);
eğer ((fark1*fark2)<0)
{
if (kısaEma1>uzunEma1)
çapraz = 1;
yoksa Çapraz = 2;
}
toplam = SiparişlerToplam();
if(toplam < 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Sor,1,Ask-StopLoss*Puan,Sor+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 && shortEma < mainshortEma && longEma < mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,1,Teklif+StopLoss*Puan,Teklif-AlKar*Puan,
"EA'm",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);
}
if(toplam == 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Sor,1,Ask-StopLoss*Puan,Sor+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 && shortEma < mainshortEma && longEma < mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,1,Teklif+StopLoss*Puan,Teklif-AlKar*Puan,
"EA'm",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);
}
//+------------------------------------------- -------------------+...
Bu işlevi deneyin:
{
int openedOrders = 0;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == type) openedOrders++;
}
return(openedOrders);
}
[/PHP]
To count opened buy orders, call it like this :
to count opened sell orders, call it like this :
[PHP]int openedSells = countOpened(OP_SELL);Mladen,
İşlemimde TP veya SL olduğunda karşı atlamayı tetikleyebilmem için işlemime bir sayaç ayarlamamın bir yolu var mı?
Saygılarımızla
terasMerhaba Mladen,
"Barlar" işlevini kullanarak başka bir yol buldum. Bir ticaret tetiklendiğinde, çubuk işleviyle bir tamsayı sayısı ayarlayacağım (örneğin, çubuk 122'de bir satın alma işlemi tetiklenir, dolayısıyla sayı 122 olur) ve kriterlerim yeniden tetiklendiğinde, çubuk işlevini tekrar çağırırım. ve sayı ile karşılaştırın ve ticaret yalnızca yeni sayım, bu durumda 122 olan öncekinden daha yüksekse tetiklenir.
Ancak, yine de kriter başına 1 yerine 2 işlemi birlikte tetikliyorum. Bu neden böyle?
Lütfen yardım et
Teşekkürler ve saygılar
teras
//--- giriş parametreleri
harici çift TakeProfit=530.0;
dış çift Lot = 0.1;
harici çift StopLoss=520.0;
//+------------------------------------------- -------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- -------------------+
int init()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
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
}
shortEma = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,25,0,MODE_LWMA,PRICE_CLOSE,0);
int Çapraz = 0;
double shortEma1 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,1);
double longEma1 = iMA(NULL,0,25,0,MODE_LWMA,PRICE_CLOSE,1);
double shortEma2 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,2);
double longEma2 = iMA(NULL,0,25,0,MODE_LWMA,PRICE_CLOSE,2);
çift fark1 = kısaEma1-uzunEma1;
çift fark2 = kısaEma2-uzunEma2;
mainshortEma = iMA(NULL,0,113,0,MODE_EMA,PRICE_CLOSE,0);
eğer ((fark1*fark2)<0)
{
if (kısaEma1>uzunEma1)
çapraz = 1;
yoksa Çapraz = 2;
}
int BarCounter, BarCounter2;
toplam = SiparişlerToplam();
if(toplam < 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Sor,1,Ask-StopLoss*Puan,Sor+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());
BarCounter = Barlar;
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,1,Teklif+StopLoss*Puan,Teklif-AlKar*Puan,
"EA'm",12345,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("SAT emri açıldı : ",OrderOpenPrice());
BarCounter = Barlar;
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
dönüş(0);
}
if(toplam == 1)
{
BarCounter2 = Çubuklar;
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma && BarCounter2 > BarCounter)
{
bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Sor,1,Ask-StopLoss*Puan,Sor+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());
BarCounter = BarCounter2;
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma BarCounter)
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,1,Teklif+StopLoss*Puan,Teklif-AlKar*Puan,
"EA'm",12345,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("SAT emri açıldı : ",OrderOpenPrice());
BarCounter = BarCounter2;
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
dönüş(0);
}
dönüş(0);
}
Bu işlevi deneyin:
{
int openedOrders = 0;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == type) openedOrders++;
}
return(openedOrders);
}
[/PHP]
To count opened buy orders, call it like this :
to count opened sell orders, call it like this :
[PHP]int openedSells = countOpened(OP_SELL);