Hata Kodları

 

Merhaba

Hata mesajı alıyorum geçersiz durur err 130 yani

Değerlerimi yazdırıyorum ve bunlar aşağıdaki gibidir

2006.06.29 13:15:05 AUDUSD,H1: SiparişAyrıntıları: SatışFiyatı : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,getprofit : 0.7291 ,slippage : 2

Sipariş vermeden önce sl ve tp'mi kontrol etmek için aşağıdakileri kullanıyorum

/

if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;

if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);

Bazen satış aşağıdaki gibi gerçekleşir

2006.06.29 08:32:56 AUDUSD,H1: açık #5976740 0,7309 sl'den 0,01 AUDUSD sat: 0,7324 tp: 0,7278 tamam

Belki de durak kontrollerim doğru çalışmıyor .

Baska öneri?

 

Bence hata, siparişlerinizi verme şeklinizde yatıyor. Stop emirleri kullanıyorsanız, emirleriniz piyasa fiyatına çok yakındır. Tipik olarak, satın alma durağınız mevcut sorudan en az "MarketInfo(Symbol(),MODE_STOPLEVEL)" pip uzakta olmalıdır.

Stop emirleri veriyorsanız, RefreshRates() kullandığınızdan emin olun ve ardından gerekli emirleri mesafeye yerleştirin. Hızlı hareket eden piyasalar için yine de çalışmayabilir ve siparişleri daha uzağa vermeniz gerekecektir.

Bu yardımcı olur umarım.

 

bu bir al/sat dur değil

Merhaba

Teşekkürler ama dur değil bu bir ticaret - al/sat, deneyeceğim 2*MarketInfo(Symbol(),MODE_STOPLEVEL)

 
cardio:
Merhaba

Hata mesajı alıyorum geçersiz durur err 130 yani

Değerlerimi yazdırıyorum ve bunlar aşağıdaki gibidir

2006.06.29 13:15:05 AUDUSD,H1: SiparişAyrıntıları: SatışFiyatı : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,getprofit : 0.7291 ,slippage : 2

Sipariş vermeden önce sl ve tp'mi kontrol etmek için aşağıdakileri kullanıyorum

/

if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;

if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);

Bazen satış aşağıdaki gibi gerçekleşir

2006.06.29 08:32:56 AUDUSD,H1: açık #5976740 0,7309 sl'den 0,01 AUDUSD sat: 0,7324 tp: 0,7278 tamam

Belki de durak kontrollerim doğru çalışmıyor.

Baska öneri?

Belki hem alışta hem de satışta "+ 3" kullanıyorsunuzdur. Satarken geçerli bir fiyat yapmak için "-3" koymalısınız

 

güçlük bu değil

Piyasa sıkı olduğunda interbankfx'in scalping'i önlemeye çalıştığını düşünmeye başlıyorum. Piyasa sıkı olmadığında çalışır - yine de kafa karıştırıcıdır çünkü kişinin sl ve tp'si MarketInfo(Symbol(),MODE_STOPLEVEL) değerinden büyük olduğunda işlemi açması gerekir.

Neyse İşte kullandığım kod

StopLoss = NormalizeDouble((TradeAbovePct/100)*(DemaH-DemaL)*(1/Point),0);

if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;

TakeProfit = NormalizeDouble(2*((DemaH-DemaL)*(1/Point)),0);

if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);

//Then I call a buy and sell as needed

//e.i

OpenBuy1(10);

OpenSell1(10);

////////////////////////////////////////////////

bool OpenBuy1(int pips1)

{

int ticket;

string comment="";

//reset defaults

use_MTBE = use_MTBEd;

use_split = use_splitd;

RefreshRates();

price1 = Ask;

stoploss1 = NormalizeDouble(price1-StopLoss*Point,Digits);

tp1 = NormalizeDouble(price1+TakeProfit*Point,Digits);

//expire1 = iTime(Symbol(),TimeFrame,0)+TimeFrame*HoursStopOpen*60;

Print("Openbuy lots: ", Lots);

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,Lots,price1,2,stoploss1,tp1,comment,MAGICMA,0,Orange);

else

ticket=OrderSend(Symbol(),OP_BUY,Lots,price1,2,0,tp1,comment,MAGICMA,0,Orange);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("BUY order opened : ",OrderOpenPrice());

//time1 = CurTime()+2*60*Period();

return(true);

}

}

else

{

Print("Error opening BUY order : ",GetLastError());

Print("OrderDetails: BuyPrice : ",price1," ,CurrentAsk : ", Ask," ,stoploss : ",stoploss1," ,takeprofit : ",tp1," ,slippage : ",2);

return(false);

}

}

bool OpenSell1(int pips1)

{

int ticket;

string comment="";

//reset defaults

use_MTBE = use_MTBEd;

use_split = use_splitd;

RefreshRates();

price1 = Bid;

stoploss1 = NormalizeDouble(price1+StopLoss*Point,Digits) ;

tp1 = NormalizeDouble(price1-TakeProfit*Point,Digits);

// expire1 = iTime(Symbol(),TimeFrame,0)+TimeFrame*HoursStopOpen*60;

Print("Opensell lots: ", Lots);

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_SELL,Lots,price1,2,stoploss1,tp1,comment,MAGICMA,0,Red);

else

ticket=OrderSend(Symbol(),OP_SELL,Lots,price1,2,0,tp1,comment,MAGICMA,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("SELL order opened : ",OrderOpenPrice());

// time1 = CurTime()+2*60*Period();

return(true);

}

}

else

{

Print("Error opening SELL order : ",GetLastError());

Print("OrderDetails: SellPrice : ",price1," ,CurrentBid : ", Bid," ,stoploss : ",stoploss1," ,takeprofit : ",tp1," ,slippage : ",2);

return(false);

}

}

 

Yardım Gerekiyor - Siparişleri açarken hata 138

Merhaba!

Evet, gördüğün gibi ben bu forumda acemiyim. Ben Arjantin'den Ignacio. Ve basit bir EA geliştirmeye çalışıyorum.

Stratejinin "hazır" olduğunu düşünüyorum. Ancak geriye dönük test çalıştırmasını çalıştırdığımda hiçbir sipariş açık değil. Bazı hata ayıklama bilgilerini yazdırdım ve koşullar uygun. OrderSend işlevi tarafından atılan hata 138'dir.

kod şudur:

RefreshRates();

OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);

Birisi bana neyin yanlış olduğunu açıklayabilir mi?

Hepinize teşekkür ederim.

imzalamak...

 
ignacio:
Merhaba!

Evet, gördüğün gibi ben bu forumda acemiyim. Ben Arjantin'den Ignacio. Ve basit bir EA geliştirmeye çalışıyorum.

Stratejinin "hazır" olduğunu düşünüyorum. Ancak geriye dönük test çalıştırmasını çalıştırdığımda hiçbir sipariş açık değil. Bazı hata ayıklama bilgilerini yazdırdım ve koşullar uygun. OrderSend işlevi tarafından atılan hata 138'dir.

kod şudur:

RefreshRates();

OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);

Birisi bana neyin yanlış olduğunu açıklayabilir mi?

Hepinize teşekkür ederim.

imzalamak...

Hata 138 , bir yeniden alıntı olduğu anlamına gelir. Kayma için 3 ile 5 arasında daha büyük bir pip değeri kullanmayı denediniz mi?

 

Backtest'te requote diye bir şey olmadığını düşünüyorum. Benim düşünceme göre sorun, geriye dönük testlerde yeniden teklif verme sorununa neden olabilecek "Yenileme Oranları" nedeniyle oluyor. Bunu düşün

if (!isTesting()) RefreshRates();

 

Cevaplarınız için teşekkürler,

Maji, bir döngüde bazı kayma değerlerini test ettim ve OrderSend bana aynı hatayı veriyor.

elihayun, senin durumunu ekledim ve hala aynı hata.

Birçok test yaptım ve iyi sonuç alamadım

Herhangi bir öneri? Gerçekten başka bir EA daha ciddi hehee yapmak için bunu bitirmek istiyorum.

Hepinize teşekkür ederim

imzalamak...

 

İlk olarak, hata açıklamasını almak için aşağıdakileri yapın

#property bağlantısından sonra satırı ekleyin

#özellik bağlantısı "http://www.elihayun.com"

#Dahil etmek

şimdi hatayı kontrol etmek için bunu yapın

int err = GetLastError();

if (err != 0)

{

Print("Error # ", err, " ", ErrorDescription(err));

}

Senin sorunun için başka bir sorun düşünemiyorum. Belki başka bir RefreshRates() kullanıyorsunuzdur.

// YenilemeOranları()

 
elihayun:
İlk olarak, hata açıklamasını almak için aşağıdakileri yapın

#property bağlantısından sonra satırı ekleyin

#özellik bağlantısı "http://www.elihayun.com"

#Dahil etmek

şimdi hatayı kontrol etmek için bunu yapın

int err = GetLastError();

if (err != 0)

{

Print("Error # ", err, " ", ErrorDescription(err));

}[/PHP]

For your problem, I cannot think of another problem. Maybe u are using another RefreshRates() Try to comment them out

// RefreshRates()

İşte senaryo dışı:

2006.07.02 11:07:15 2006.01.04 12:00 eaButler EURUSD,H4: Error Description [#138]: requote

2006.07.02 11:07:15 2006.01.04 12:00 stdlib EURUSD,H4: loaded successfully

ve işte kod:

[PHP]

last_ticket = OrderSend( Symbol(), OP_SELL, Lot, Slippage, Bid, 0.0, 0.0, c , magic_number, 0, Red);

if(last_ticket < 0)

{

rv = GetLastError();

Print("Hata Açıklaması [#"+ rv + "]: " + ErrorDescription(rv));

}