Sormak! - sayfa 117

 

int start(){

if(TimeCurrent()>D'2008.07.01 12:00:00'){Comment("EXPIRED"); dönüş (0);}

...

dönüş(0);

}

amatrader:
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.
 
amatrader:
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.

Dosyalar:
 

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

}
 
newdigital:
İş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.