OrderModify() sorusu

 

Merhaba MQL4 forumu,

{OrderModify(ticket, 0 ,Ask- 500 * Point , 0 , 0 ,Blue);}}}}

Yukarıdaki kod çalışır, ancak satış fiyatı yukarı veya aşağı hareket ettikçe sl'yi yukarı veya aşağı hareket ettirir.

Çözüm olarak bunu denedim...

{OrderModify(ticket, 0 ,OrderOpenPrice()- 500 * Point , 0 , 0 ,Blue);}}}}

(seçilen sipariş bir satın alma siparişidir )

Günlüğü alınan hata için kontrol ettim ve 4051 okundu. Birden fazla 4051 hatası var. Temelde çalışmıyor ve daha önce bu sorunu çözen ve bir açıklaması olan başka biri olup olmadığını merak ediyorum.

Bu çözümün neden işe yaramadığını anlamıyorum (evet, ilk yanlış OrderModify çözümü çalıştığı için siparişi doğru seçtiğime inanıyorum).

Teşekkür ederim.

 
WhooDoo22 :


Günlüğü alınan hata için kontrol ettim ve 4051 okundu. Birden fazla 4051 hatası var . Temelde çalışmıyor ve bu sorunu daha önce çözen ve bir açıklaması olan başka birinin olup olmadığını merak ediyorum.

Bir işlevle ilgili bir sorununuz olduğunda, o işlevle ilgili belgeleri okuyun. . . . OrderModify() <----- BANA Tıkla! ! !

Emrin Açık Fiyatını 0.0 olarak değiştiremezsiniz. . . OrderSelect()'i doğru şekilde uyguladığınızı varsayarsak, OrderModify()'a ilettiğiniz 2. parametre için OrderOpenPrice() kullanın

 

Simon, OrderModify() işlevinin belgelerini okudum ve kullanılan örneğin takip eden bir durak olduğunu fark ettim. EA için takip eden bir durdurma kullanmak istemiyorum. Bunun nedeni, takip eden bir durdurma kullansaydım (örneğe göre), EA'nın, sl'yi belirtilen fiyata değiştirmek için mevcut sl'nin x puan üzerinde seyahat etmesi için pazara ihtiyaç duyacağıdır. Temelde bu çok karmaşık. Sadece sipariş piyasaya sunulduktan SONRA siparişe zararı durdur emri eklemek istiyorum.

Her neyse, şu anda da yeni çözümler deniyorum.

Teşekkür ederim.

 
WhooDoo22 :

Simon, OrderModify() işlevinin belgelerini okudum ve kullanılan örneğin takip eden bir durak olduğunu fark ettim. EA için takip eden bir durdurma kullanmak istemiyorum. Bunun nedeni, takip eden bir durdurma kullansaydım (örneğe göre), EA'nın, sl'yi belirtilen fiyata değiştirmek için mevcut sl'nin x puan üzerinde seyahat etmesi için pazara ihtiyaç duyacağıdır. Temelde bu çok karmaşık. Sadece sipariş piyasaya sunulduktan SONRA siparişe zararı durdur emri eklemek istiyorum.

Her neyse, şu anda da yeni çözümler deniyorum.

Teşekkür ederim.

Öyleyse neden Açık Fiyatı 0.0 olarak değiştirmeye çalışıyorsunuz? Açık Fiyatı değiştirmeden bırakmanız gerekir, yani OrderOpenPrice() deneyin . . .
 

Simon,

Strateji test cihazı:

1. Görsel mod

2. Hız 31

3. 2010.12.29

4. EURUSD

5. M15

" Yalnızca açık fiyatlar " komutunu çalıştırın, her onay işaretini değil.


MetaEditor: Düzenle -> Bul... -> "// 1. seçim."


1. seçim = hata yok, ama açıkçası bunu istemiyorum.

seçim 2. = Günlük sekmesi -> Günlük şunları okur: "hata 4051".

Teşekkür ederim.

Dosyalar:
test1.mq4  12 kb
 

Açıkça, OrderModify() parametreleri içinde OrderOpenPrice() işlevinin kullanılması, 4051 hatasına göre "geçersiz işlev parametresi" olarak kabul edilir. "?" Düşünüyorum. :) OrderOpenPrice() değerini kaydedebilir ve bunu, yapmak istediğim şeyi yapmak için fonksiyon parametrelerini değiştirme sırasına ekleyebilirim, ama gerçekten? Elbette daha basit bir yolu var! Benim için eski değirmen taşına geri döndü. ;)

Teşekkür ederim.

 
WhooDoo22 :
Açıkça, OrderModify() parametreleri içinde OrderOpenPrice() işlevinin kullanılması, 4051 hatasına göre "geçersiz bir işlev parametresi" olarak kabul edilir.
Açıkçası, kodunuz yanlış. OrderOpenPrice() gayet iyi. Sipariş Seçiminizi içeren kodu gönderin.
 

William,

Açıkça görülüyor ki, desteğinizi sağlamak istiyorsanız MetaEditor'da indirip görüntülemeniz için EA'yı bir bağlantıda yayınladım. OrderSelect() işlevi şu anda bir sorun değil. Biliyor musun? Bunu sadece senin için yayınlayacağım, William.

 //***************************************************
// EMERGENCY BUY ORDER STOP LOSS PROTECTION SECTION ;
//***************************************************

   OrderSelect ( 0 ,SELECT_BY_TICKET,MODE_TRADES); // was ticket.
   if ( OrdersTotal ()> 0 )                                                                         {
   if (OrderType()==OP_BUY)                                                                     {
   if (OrderSend1== true )                                                                        {
//   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<=OrderOpenPrice()-500*Point)                     {
     
// choice 1.     
//     {OrderModify(ticket,OrderOpenPrice(),Ask-500*Point,0,0,Blue);}}}}
// choice 2.
     {OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice()- 500 * Point , 0 , 0 ,Blue);}}}}

İstediğiniz gibi.

Teşekkür ederim.

 
WhooDoo22 :

William,

Açıkça görülüyor ki, desteğinizi sağlamak istiyorsanız MetaEditor'da indirip görüntülemeniz için EA'yı bir bağlantıda yayınladım. OrderSelect() işlevi şu anda bir sorun değil. Biliyor musun? Bunu sadece senin için yayınlayacağım, William.

İstediğiniz gibi.

Teşekkür ederim.

0 geçerli bir bilet numarası DEĞİL, Strateji Test Cihazında bile değil, OrderSelect()'inizi test edin ve kendiniz göreceksiniz. . .
 

Simon, öğrenmek için testler yapacağım.

Teşekkür ederim.

 

Ah-ha! 0 numaralı bileti 1'e çevirdim, sonra her şey saat gibi çalıştı. Evet, yanılmışım William... OrderSelect() işlevi bir sorundu. Açıkçası, OrderSelect() işlevi bir bilet seçmelidir. Bilet numarası 0 ise, EA hangi bileti seçecek? :Ö "?". Yardımlarınız için ikinize de teşekkür ederim.

Teşekkür ederim.