![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
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
int start(){
if(TimeCurrent()>D'2008.07.01 12:00:00'){Comment("EXPIRED"); dönüş (0);}
...
dönüş(0);
}
Lütfen bazıları bana bir EA'da bir tarih sınırına sahip olmanın mümkün olup olmadığını söyleyebilir, demek istediğim, bir EA'da belirlenen tarihe ulaştığında ticareti durduracak bir son kullanma tarihi ayarlayabilir miyim?
Muhtemelen şöyle bir şey söylerdi: -
tarihi kontrol edin, eğer tarih (ayarlanan tarih) ile eşit veya daha büyükse hiçbir şey yapmayın.
Bu ingilizce versiyon, MQL4 versiyonuna ihtiyacım var... lol
Yardımcı olabilecek biri varsa teşekkürler.Lütfen bazıları bana bir EA'da bir tarih sınırına sahip olmanın mümkün olup olmadığını söyleyebilir, demek istediğim, bir EA'da belirlenen tarihe ulaştığında ticareti durduracak bir son kullanma tarihi ayarlayabilir miyim?
Muhtemelen şöyle bir şey söylerdi: -
tarihi kontrol edin, eğer tarih (ayarlanan tarih) ile eşit veya daha büyükse hiçbir şey yapmayın.
Bu ingilizce versiyon, MQL4 versiyonuna ihtiyacım var... lol
Yardımcı olabilecek biri varsa teşekkürler.Bu konuya bakın https://www.mql5.com/en/forum/174194
Teşekkürler efendim... Çok makbule geçti.
Haftalık Yüksek Düşük.
Herhangi biri, günlük için ekteki gibi haftalık bir Yüksek Düşük göstergesi yayınlayabilir mi?
Ya da belki benim için bir haftalık ekli değiştirin lütfen.
Şimdiden teşekkürler.
Bu göstergeyi kullanın https://www.mql5.com/en/forum/173574/page32 (günlük, haftalık ve aylıktır).
Veya bu https://www.mql5.com/en/forum/177792
Veya bu https://www.mql5.com/en/forum/178698
Hepinize merhaba
İşte kullandığım ea. AL-DURDUR ve SELL_Stop'un aynı anda alınması için lütfen biri bana neyi değiştirmem gerektiğini söyleyebilir mi? Şimdi olduğu gibi, ya bir al-durdur ya da bir sat-durdur tetiklenir. ikisine de sahip olmak isterim İkincisi, her mum için sipariş sayısını sınırlamak için ne yapmalıyım.
Hepinize şimdiden teşekkür ederim.
işte kod:
geçersiz başlangıç() {
//---- geçmişi ve ticareti kontrol et
if(Bars<100 || IsTradeAllowed()==yanlış) dönüş;
co=CalculateCurrentOrders(Symbol());
CheckForSignals();
if (co>0) CheckForClose();
CheckForOpen();
co=CalculateCurrentOrders(Symbol());
if (mkt>0) {
BreakEvenStop(EvenEven,0);
double pcnt =( (AccountEquity()-AccountBalance()) / AccountBalance())*100;
Print("Hesap Sermayesi = ",HesapEquity());
Print("Hesap bakiyesi = ",AccountBalance());
if(pcnt>EquityGainPercent)
{
int toplam = SiparişlerToplam();
for(int i=toplam-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
int türü = OrderType();
bool sonucu = yanlış;
anahtar (tip)
{
//Açılan uzun pozisyonları kapat
durum OP_BUY : sonuç = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
kırmak;
//Açılan kısa pozisyonları kapat
durum OP_SELL : sonuç = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
kırmak;
//Bekleyen siparişleri kapat
durum OP_BUYLIMIT :
durum OP_BUYSTOP :
durum OP_SELLLIMIT :
durum OP_SELLSTOP : sonuç = OrderDelete(OrderTicket());
}
if(sonuç == yanlış)
{
Alert("Order" , OrderTicket() , " kapatılamadı. Hata:" , GetLastError() );
uyku(3000);
}
}
Print("TÜM SİPARİŞLER KAPATILDI-->Kârlara Kilitlendi");
}
dönüş(0);
}
}
//+------------------------------------------- -------------------+
//| Açık pozisyonları hesaplayın |
//+------------------------------------------- -------------------+
int CalculateCurrentOrders(dize sembolü)
{
int ord; mkt=0;
//----
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) devam;
if(OrderSymbol()==symbol && OrderMagicNumber()==MagicNumber) {
ord++;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) mkt++;
}
}
//---- iade sipariş hacmi
dönüş(ord);
}
//+------------------------------------------- -------------------+
//| Açık sipariş koşullarını kontrol edin |
//+------------------------------------------- -------------------+
geçersiz CheckForSignals() {
//uzun, kısa, çıkış sinyallerini kontrol edin
buysig=yanlış;
satış=yanlış;
yakın satın alma=yanlış;
satış=yanlış;
yeniden düzen=yanlış;
int isins,isouts,iskeyrev,is2brev;
if (InsideBar) isins=IsInsideBar(shift);
if (OutSideBar) isouts=IsOutSideBar(shift);
if (KeyReversalBar) iskeyrev=IsKeyReversalBar(shift);
if (TwoBarReversal) is2brev=IsTwoBarReversal(shift);
//uzun giriş sinyali koşulu
if (isins>0 || isouts>0 || iskeyrev>0 || is2brev>0) {
buysig=true;
closesell=true;
}
//kısa giriş sinyali
if (isins<0 || isouts<0 || iskeyrev<0 || is2brev<0) {
buysig=yanlış;
satış=doğru;
closebuy=true;
}
if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {
yeniden düzen=doğru;
}
}
geçersiz CheckForOpen() {
int res,tr;
//---- satış koşulları
co=CalculateCurrentOrders(Symbol());
if(sellsig && lastsig!=-1) {
co=CalculateCurrentOrders(Symbol());
if (co==0) {
res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);
}
sonsig=-1;
son=Zaman[0];
dönüş;
}
//---- satın alma koşulları
if(buysig && lastsig!=1) {
co=CalculateCurrentOrders(Symbol());
if (co==0) {
res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);
}
son=Zaman[0];
sonsig=1;
dönüş;
}
}
void BreakEvenStop(int BES, int BELP) {
// bir miktar karı kilitlemek için stoploss'u hareket ettirin
bool bres;
çift StopLoss;
eğer ( BES > 2 ) {
for (int i = 0; i < OrdersTotal(); i++) {
eğer ( OrderSelect (i, SELECT_BY_POS) == false ) devam ediyorsa;
if ( OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber ) devam ediyor;
if ( OrderType() == OP_BUY ) {
eğer ( Teklif < OrderOpenPrice()+BES*Point ) devam ederse;
StopLoss = OrderOpenPrice()+BELP*Noktası;
if (StopLoss > OrderStopLoss() ) {
bres=OrderModify (OrderTicket(), OrderOpenPrice(), StopLoss, OrderTakeProfit(), 0, Beyaz);
if (!bres) Print("SATIN AL emrini değiştirirken hata oluştu : ",ErrorDescription(GetLastError()));
}
}
if ( OrderType() == OP_SELL ) {
eğer ( Sor > OrderOpenPrice()-BES*Point ) devam ederse;
StopLoss = OrderOpenPrice()-BELP*Point;
if ( StopLoss < OrderStopLoss() ) {
bres=OrderModify (OrderTicket(), OrderOpenPrice(), StopLoss, OrderTakeProfit(), 0, Altın);
if (!bres) Print("SATIŞ emri değiştirilirken hata oluştu : ",ErrorDescription(GetLastError()));
}
}
}
}
dönüş;
}
int IsKeyReversalBar(int shift) {
//Key Ters Çubuğu, Anahtar çubuğunun açıklığı, bir önceki çubuğun yüksekliğinden en az ?pip daha yüksek olmalıdır.
//Anahtar çubuğunun kapanışı, önceki çubuğun yüksek ve kapanışında olmalıdır. Mevcut çubuğun açık olması gerekir
//anahtar çubuğunun kapanışından daha düşük. İçinde yürütülmezse, anahtar çubuğunun alt kısmına bir SellStop siparişi verilmelidir.
// sonraki 4 çubuk daha sonra siparişi iptal eder. Aşağıdaki resme bakın - kısa!
if (Open[shift]=Düşük[shift+1] && Close[shift]Kapat[shift]) return(1);
if (Open[shift]>Yüksek[shift+1] && Close[shift]=Close[shift+1] && Open[shift-1]<Close[shift]) return(-1);
dönüş(0);
}
int IsTwoBarReversal(int shift) {
//İki Çubuk Ters Çevirme, İlk çubuğun açılışı bir önceki çubuğun en altına yakın olmalı ve kapanış çok daha düşük olmalı ve
// iyi bir bedene sahip ol. İkinci çubuğun açıklığı, birinci çubuğun kapanışına çok yakın olmalıdır, ancak her ikisi de çok aşağıda olmalıdır.
// her çubuğun orta noktası, bir önceki en düşük 2 çubuğuna çok yakın olacak şekilde. Bir BuyStop Emri en yüksek seviyeye yerleştirilmelidir.
// 1 numaralı çubuk, 4 çubuk içinde yürütülmezse siparişi iptal eder. Aşağıdaki resme bakın
if (MathAbs(Open[shift+1]-Close[shift+1])> MathAbs(Open[shift+1]-Low[shift+2])<=
MathAbs(Close[shift]-Düşük[shift+2])<=
MathAbs(Open[shift]-Close[shift+1]) &&
Kapat[shift+1]<(Yüksek[shift+1]+Düşük[shift+1])/2 &&
Aç[shift]<(Yüksek[shift]+Düşük[shift])/2)
dönüş(1);
if (MathAbs(Open[shift+1]-Close[shift+1])> MathAbs(Açık[shift+1]-Yüksek[shift+2])<=
MathAbs(Close[shift]-Düşük[shift+2])<=
MathAbs(Open[shift]-Close[shift+1]) &&
Kapat[shift+1]>(Yüksek[shift+1]+Düşük[shift+1])/2 &&
Open[shift]>(Yüksek[shift]+Düşük[shift])/2)
dönüş(-1);
dönüş(0);
}
int OpenStop(int modu, çift lot, çift prc, int SL, int TP) {
int res,tr,col;
dize postası;
çift açık fiyat,sl,tp,stlev;
dener=0;
stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*Nokta;
while (res<=0 && try<SiparişNumarası) {
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Uyku(2000); }
Yenileme Oranları();
if (mod==OP_SELLSTOP) {
if (prc<=Teklif-stlev) openprice=prc;
başka openprice=Teklif-stlev;
if (SL>0) sl=açık fiyat+SL*Puan;
if (TP>0) tp=açık fiyat-TP*Puan;sütun=Kırmızı;
} başka
if (mod==OP_BUYSTOP) {
if (prc>=Ask+stlev) openprice=prc;
başka openprice=Sor+stlev;
if (SL>0) sl=openprice-SL*Puan;
if (TP>0) tp=açık fiyat+TP*Puan;sütun=Mavi;
} başka bir dönüş;
Print(Ask," ",Teklif," ",Symbol()," ",mode," ",lot," ",openprice," ",sl," ",tp," ");
res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+"_"+MagicNumber,MagicNumber,0,col);
çalışır++;
}
if (res<=0) Print("Bekleyen sipariş açılırken hata oluştu : ",ErrorDescription(GetLastError()));
dönüş(ler);
}
geçersiz CheckForClose() {
bool bres; int tr;
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) devam;
if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) devam;
//---- sipariş tipini kontrol et
if(OrderType()==OP_BUY && yakın satın alma) {
bres=CloseAtMarket(OrderTicket(),OrderLots());
devam etmek;
}
if(OrderType()==OP_SELL && kapanış satışı) {
bres=CloseAtMarket(OrderTicket(),OrderLots());
devam etmek;
}
if(OrderType()==OP_BUYSTOP && (closebuy || yeniden sipariş) {
bres=DeletePending(OrderTicket());
devam etmek;
}
if(OrderType()==OP_SELLSTOP && (kapanış || yeniden sipariş) {
bres=DeletePending(OrderTicket());
devam etmek;
}
}
}
bool DeletePending(int bilet) {
bool bres=yanlış; int tr;
dener=0;
while (!bres && try<SiparişNumarası) {
bres=SiparişSil(bilet);
çalışır++;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Uyku(2000); }
}
if (!bres) Print("Sipariş silinirken hata oluştu : ",ErrorDescription(GetLastError()));
dönüş (bres);
}
Bir EA'nın yalnızca belirli bir hesap numarasıyla çalışmasını sağlayacak kodu bilen var mı? Teşekkürler!
İşte https://www.mql5.com/en/forum/174194 (#7 nolu mesaj)
bu sefer çok fazlasın
İşte https://www.mql5.com/en/forum/174194 (#7 nolu mesaj)
teşekkürler newdigital.
Başlatma kodumu (içinde bir süre sonu olan) şöyle ayarladım:
int init()
{if (TimeCurrent()>D'2008.06.07 12:00:00'){Comment("lütfen aboneliğinizi yenileyiniz"); dönüş (0);}
dönüş(0);
}
}
if (Hesap != HesapNumarası()){
Comment("Hesapta işlem :"+HesapNumarası()+" YASAK!");
dönüş(0);
}else {Yorum("");}
Ve şimdi bu hatayı döndürüyorum:
'}' - dengesiz parantezler
Burada neyi yanlış yapıyorum? Ayrıca, "int Hesap = 111111;" EA ayarı ile gitmek? Teşekkürler.