EA'm kendi kendine çalışırken iyi çalışıyor ancak aynı EA'yı aynı profilde aynı anda farklı bir Sembol üzerinde çalıştırmayı denersem, ikincisi çok iyi çalışmıyor veya hiç çalışmıyor veya çok sayıda var. hatalar. Bu, iki ayrı çizelge için Symbol() ve farklı sihirli sayılar kullansam bile oluyor. Aynı kodun farklı sürümlerini çalıştırsam bile oluyor (yani, EA dosya adları ve sihirli sayılar farklıdır, ancak aksi takdirde kod aynıdır). Belki de Global değişkenlerle bir tür çatışmam var mı yoksa ikincisinin askıda kalmasının başka bir nedeni var mı? Teşekkürler.
- Evrensel MA Çapraz EA
- SimpleDailyRangeBreakExpert
- Nasıl kodlanır?
Sneck55 :
EA'm kendi kendine çalışırken iyi çalışıyor ancak aynı EA'yı aynı profilde aynı anda farklı bir Sembol üzerinde çalıştırmayı denersem, ikincisi çok iyi çalışmıyor veya hiç çalışmıyor veya çok sayıda var. hatalar. Bu, iki ayrı çizelge için Symbol() ve farklı sihirli sayılar kullansam bile oluyor. Aynı kodun farklı sürümlerini çalıştırsam bile oluyor (yani, EA dosya adları ve sihirli sayılar farklıdır, ancak aksi takdirde kod aynıdır). Belki de Global değişkenlerle bir tür çatışmam var mı yoksa ikincisinin askıda kalmasının başka bir nedeni var mı? Teşekkürler.
EA'm kendi kendine çalışırken iyi çalışıyor ancak aynı EA'yı aynı profilde aynı anda farklı bir Sembol üzerinde çalıştırmayı denersem, ikincisi çok iyi çalışmıyor veya hiç çalışmıyor veya çok sayıda var. hatalar. Bu, iki ayrı çizelge için Symbol() ve farklı sihirli sayılar kullansam bile oluyor. Aynı kodun farklı sürümlerini çalıştırsam bile oluyor (yani, EA dosya adları ve sihirli sayılar farklıdır, ancak aksi takdirde kod aynıdır). Belki de Global değişkenlerle bir tür çatışmam var mı yoksa ikincisinin askıda kalmasının başka bir nedeni var mı? Teşekkürler.
Aynı EA'yı farklı grafiklerde çalıştırmak sorun olmayacağı için (ben sorunsuz yapıyorum) kodu vermeniz gerekir.. ?
SRC -düğmesini kullanın!!
gooly : SRC -düğmesini kullanın!!
SRC'nin hangi kısmı belirsizdi? Neden yapmadın? Gönderinizi düzenleyin!
Video oynatmakLütfen yayınınızı düzenleyin .
Büyük miktarda kod için ekleyin.if (BuyTicket != 0 ) { if (SmallMA<MediumMA) { for (Counter = 0 ; Counter <= OrdersTotal ()- 1 ; Counter++) { : Counter--; }
Güç kesilirse, işletim sistemi çökerse, terminal veya tablo yanlışlıkla kapatılırsa, bir sonraki BuyTicket kaybolacaktır. Açık bir emriniz olacak ama asla kapatmaya çalışmayın . OrderSelect döngüsü kullandığınızda bilet numarasını hatırlamanız gerekmez.- Kapatırken/silerken geri saymanız GEREKİR. Başka bir EA bir siparişi kapatırsa, geri dönmek işe yaramaz. Döngüler ve Emirleri Kapatma veya Silme - MQL4 forum
- Booleanlarınızı basitleştirin
// if(SmallMA>MediumMA&&MediumMA>LargeMA) MABuyFanning = true; // else MABuyFanning = false; MABuyFanning = (SmallMA>MediumMA&&MediumMA>LargeMA);
if (NewBar == true )
Asla if( (2+2) == 4) == true) yazmazsın , değil mi? if(2+2 == 4) yeterlidir. Bu nedenle if(bool == true) yazmayın, sadece if(bool) veya if(!bool) kullanın.
Gönderiyi yapmak için SRC düğmesi kullanıldı
Sneck55 :
Gönderiyi yapmak için SRC düğmesi kullanıldı
Gönderiyi yapmak için SRC düğmesi kullanıldı
evet, ama ilk satır "Gecikme için üzgünüm..." kod değil ve her şeyi mahvetti
#property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict extern bool CheckOncePerBar = true; extern double FixedLotSize = 1; extern double SystemStopLoss = 150; extern double TakeProfit = 0; extern int Slippage = 5; extern int MagicNumber = 3574; //Global Variables int BuyTicket; int SellTicket; double InternalStopLoss; double CalcDigits; double CalcPoint; bool MABuyFanning; bool MASellFanning; int SelectedOrder; bool Closed; int ErrorCode; string ErrLog; double BuyStopLoss; double SellStopLoss; bool NewBar; double ThisBarOpen; double SmallMA; double MediumMA; double LargeMA; int Counter; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { CalcDigits = MarketInfo(Symbol(),MODE_DIGITS);//MODE_DIGITS is count of digits after decimal point if(CalcDigits == 0) CalcPoint = 1;//Dow if(CalcDigits == 1) CalcPoint = 0.1; if(CalcDigits == 2) CalcPoint = 0.01;//Gold & Nymex if(CalcDigits == 3) CalcPoint = 0.01;//Yen if(CalcDigits == 4) CalcPoint = 0.0001;//Not used if(CalcDigits == 5) CalcPoint = 0.0001;//Non-Yen forex InternalStopLoss = SystemStopLoss*CalcPoint; return(INIT_SUCCEEDED); } //----------------------------------------------- void OnTick() { if(CheckOncePerBar == true) { if(ThisBarOpen != Open[0]) { ThisBarOpen = Open[0]; NewBar = true; } else NewBar = false; } else NewBar = true; if(NewBar == true) { //Reset Moving Averages SmallMA = iMA(NULL,0,8,0,1,0,0); MediumMA = iMA(NULL,0,10,0,1,0,0); LargeMA = iMA(NULL,0,50,0,1,0,0); if(SmallMA>MediumMA&&MediumMA>LargeMA) MABuyFanning = true; else MABuyFanning = false; if(SmallMA<MediumMA&&MediumMA<LargeMA) MASellFanning = true; else MASellFanning = false; if(BuyTicket == 0 && MABuyFanning == true) { RefreshRates(); BuyStopLoss = Bid - InternalStopLoss; // while(IsTradeContextBusy()) Sleep(10); BuyTicket = OrderSend(Symbol(),OP_BUY,FixedLotSize,Ask,Slippage,BuyStopLoss,0,"Buy Order",MagicNumber,0,Green); if(BuyTicket == -1) { ErrorCode = GetLastError(); Alert("Symbol: ",Symbol(),"Error in buy routine: ",ErrorCode); ErrLog = StringConcatenate("Bid: ",MarketInfo(Symbol(),MODE_BID)," Ask: ",MarketInfo(Symbol(),MODE_ASK)," Lots: ",FixedLotSize," Stop Loss: ",BuyStopLoss); Print(ErrLog); //Buy ticket revert to 0 so it can try again in case of slow connection/timeout etc. BuyTicket = 0; } } if(SellTicket == 0 && MASellFanning == true) { RefreshRates(); SellStopLoss = Ask + InternalStopLoss; // while(IsTradeContextBusy()) Sleep(10); SellTicket = OrderSend(Symbol(),OP_SELL,FixedLotSize,Bid,Slippage,SellStopLoss,0,"Sell Order",MagicNumber,0,Red); if(SellTicket == -1) { ErrorCode = GetLastError(); Alert("Symbol: ",Symbol(),"Error in sell routine: ",ErrorCode); ErrLog = StringConcatenate("Bid: ",MarketInfo(Symbol(),MODE_BID)," Ask: ",MarketInfo(Symbol(),MODE_ASK)," Lots: ",FixedLotSize," Stop Loss: ",SellStopLoss); Print(ErrLog); SellTicket = 0; } } //Exits if(BuyTicket != 0) { if(SmallMA<MediumMA) { for(Counter = 0; Counter <=OrdersTotal()-1; Counter++) { SelectedOrder = OrderSelect(Counter,SELECT_BY_POS); if(OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() && OrderType() == OP_BUY) { // while(IsTradeContextBusy()) Sleep(10); Closed = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),Slippage,Red); if(Closed == true) BuyTicket = 0; else Alert("Symbol: ",Symbol()," Ticket: ",BuyTicket," unable to close buy order(s): buy ma convergence close routine"); } Counter--; } } } if(SellTicket != 0) { if(SmallMA>MediumMA) { for(Counter = 0; Counter <=OrdersTotal()-1; Counter++) { SelectedOrder = OrderSelect(Counter,SELECT_BY_POS); if(OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() && OrderType() == OP_SELL) { // while(IsTradeContextBusy()) Sleep(10); Closed = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),Slippage,Red); if(Closed == true) SellTicket = 0; else Alert("Symbol: ",Symbol()," Ticket: ",SellTicket," unable to close sell order(s): sell ma convergence close routine"); } Counter--; } } } } return; }
Sneck55 : yapmak için SRC butonu kullanıldı
Orijinal yayınınızı neden düzenlemediniz ?
qjol : evet, ama ilk satır "Gecikme için üzgünüm..." kod değil ve her şeyi mahvetti
Kod son derece basit ve yine de onu ne kadar çok pencerede çalıştırırsam o kadar kötü performans gösteriyor. 4 farklı Sembol üzerinde çalıştırıyorum ancak birkaç dakika sonra 1 sembolde bile başarısız olmaya başlıyor. Ayrıca iyi başlıyor ama ne kadar uzun süre çalıştırırsam (birkaç saat kadar sonra) o kadar yavaş ve yavaş olur ve daha az doğru olur. Bazen kaldırılması bir dakika kadar sürebilir her pencereden her bir EA, imleç tarafından küçük bir daire ile sadece çağlar boyunca dönüyor ve dönüyor. Birleştirdiğim ve virüs taraması yaptığım iyi ve hızlı bir bilgisayarım var - tam olarak aynı sonuçlarla dizüstü bilgisayarımda da denedim. Tüm M1 geçmişini indirmeyi denedim ama hiçbir fark yaratmıyor. Belki bir tür bellek sızıntısı sorunu olabilir mi? MT4 aynı kaynakları tekrar tekrar kullanmaya mı çalışıyor? Açıkçası, sorun çözülene kadar canlı hesabımda işlem yapacağına güvenemeyeceğim!
Bu ilginç...
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