Barın sonunda siparişi kapatmama yardım et! - sayfa 2

 

Hmm yani bu iyi olur mu?

 /////////////////OrderSelect() and other stuff

if ( OrderType() == OP_BUY ){
    
if ( /* blablabla condition && */ Time[0]>OrderOpenTime()  ){

OrderClose( OrderTicket(), OrderLots(),OrderClosePrice() ,TAKEPROFITPIPS, CLR_NONE );             
RefreshRates();    

}}

Aslında Time[1]'i Time[0] olarak değiştirdim çünkü Time[1] 1 çubuk daha atlıyordu, bu yüzden Time[0] aslında Open[0]'ı temsil ediyor. Bundan daha iyi/daha düzgün bir şey bilen varsa lütfen söylesin!

 
Proximus :

Hmm yani bu iyi olur mu?

Aslında Time[1]'i Time[0] olarak değiştirdim çünkü Time[1] 1 çubuk daha atlıyordu, bu yüzden Time[0] aslında Open[0]'ı temsil ediyor. Bundan daha iyi/daha düzgün bir şey bilen varsa lütfen söylesin!

RefreshRates();
OrderClose( OrderTicket(), OrderLots(),OrderClosePrice() ,Slippage, CLR_NONE );

ve orderclose başarılı olup olmadığını da kontrol edin

 
deVries :

ve orderclose başarılı olup olmadığını da kontrol edin

Başarılı olmazsa, start() işlevi kendini tekrar ettiğinde, orderclose()'dan önce if()'yi tekrar test edecek ve koşullar devam etmek için hala doğru olacağından, tekrar kapatmayı deneyecek. Kapatmayı deneyemiyorum start()'ın aynı döngüsünde 2 kez, başka bir onay işareti beklemeli mi?
 
Proximus :
Başarılı olmazsa, start() işlevi kendini tekrar ettiğinde, orderclose()'dan önce if()'yi tekrar test edecek ve koşullar devam etmek için hala doğru olacağından, tekrar kapatmayı deneyecek. Kapatmayı deneyemiyorum start()'ın aynı döngüsünde 2 kez, başka bir onay işareti beklemeli mi?
Başarısız olduğunu bilmek istemiyor musun? ve başarısız olduysa neden başarısız oldu? ve o sırada başarısızlığa neden olabilecek ilgili değişkenlerin değeri neydi? Tüm bunları biliyorsanız, bir dahaki sefere başarısız olmaması için düzeltebilirsiniz. . .
 
Proximus :

Hmm yani bu iyi olur mu?

Aslında Time[1]'i Time[0] olarak değiştirdim çünkü Time[1] 1 çubuk daha atlıyordu, bu yüzden Time[0] aslında Open[0]'ı temsil ediyor. Bundan daha iyi/daha düzgün bir şey bilen varsa lütfen söylesin!

Hayır, bu işaretin sonraki çubuğun işareti olup olmadığına bakılmaksızın her zaman kapanacaktır, işlem açıldığında çubuğu takip eden herhangi bir çubuk için ve bu çubuk sırasında herhangi bir zamanda Time[0] her zaman OrderOpenTime()'dan daha büyük olacaktır.

Çubuğun kapanışına yakın bir şekilde kapatmak istiyorsanız, mevcut tik'in yeni çubuğun ilk tik'i olup olmadığını belirlemelisiniz. . . . o zaman işleri kapattığınızdan da emin olmalısınız çünkü sadece bir bar bar şansınız olacak.
 
Proximus :
Başarılı olmazsa, start() işlevi kendini tekrar ettiğinde, orderclose()'dan önce if()'yi tekrar test edecek ve koşullar devam etmek için hala doğru olacağından, tekrar kapatmayı deneyecek. Kapatmayı deneyemiyorum start()'ın aynı döngüsünde 2 kez, başka bir onay işareti beklemeli mi?


çubuğun son işaretini kapatması gerektiğine başladınız

son tik çubuğunun ne zaman geleceğini bilmenin mümkün olmadığını anlamaya çalıştık

şimdi kapatmanın başarısız olması önemli değil, tekrar, tekrar, sonraki tiklerde tekrar deneriz

önerdiğim diğer değişiklikleri de kaçırdın mı

orderclose'dan sonra yenileme yapmanın ne anlamı var?

ve neden TAKEPROFITPIPS yerine kayma olduğunu biliyor musunuz?

hata dönüşüne bağlıdır, aynı döngüde 2 kez kapatmayı deneyebilirsiniz

ticaret bağlamı çok meşgulse ve döngü içinde büyük olasılığı kapatmak için daha fazla işleminiz varsa, onlar da başarısız olur

 
RaptorUK :
Hayır, işlem açıldığında çubuğu takip eden herhangi bir çubuk için, onay işaretinin sonraki çubuğun işareti olup olmadığına bakılmaksızın bu her zaman kapanacaktır ve bu çubuk sırasında Time[0] her zaman OrderOpenTime()'dan daha büyük olacaktır.

Çubuğun kapanışına yakın bir şekilde kapatmak istiyorsanız, mevcut tik'in yeni çubuğun ilk tik'i olup olmadığını belirlemelisiniz. . . . o zaman işleri kapattığınızdan da emin olmalısınız çünkü sadece bir bar bar şansınız olacak.

start() her tıklamadan sonra kendini tekrar etmiyor mu? Yanlış mıyım?

Her neyse, şöyle hayal edin:

OrderOpenTime() = 12:12:01 (12 H 12 DK 1 SANİYE)

Emir açılır, Orderclose() fonksiyon paketi ana koddaki OrderSend() fonksiyonumdan sonra gelir, yani emri açtıktan hemen sonra OrderClose() paketim emri kapatmak için koşulların karşılanıp karşılanmadığını test eder.Diyelim ki şimdi siparişi kapatma zamanı geldi:

Zaman[0] bu çubuğun açık fiyatıdır, bu nedenle genel mantığa göre, aynı çubuk açılmadan emir açılamadığından, emrin açık olduğu zamandan daha küçük olmalıdır. Saat: 12:12:00

Yani her şekilde:

 if (Time[ 0 ]>OrderOpenTime())

true değeri döndürür, böylece orderclose tetiklenir. Herhangi bir nedenle, kayma veya benzeri bir nedenle kapatamazsa, sorun değil, start() kendini tekrar eder.

Ve bir sonraki tekrarda Zaman[0] emrin açık zamanından %100 daha büyük olacaktır, çünkü mantıklıdır, bu nedenle ilk kapanış başarısız olursa, diğer OrderClose() daha sonra start() tekrarladığında her seferinde gerçekleşecektir. ve start() öğesinin her tikte kendini tekrar ettiğini düşündüğümden, siparişi daha hızlı kapatmanın daha iyi bir yolu olduğunu düşünmüyorum, umarım açık bir şekilde açıklamışımdır :)

 
deVries :


çubuğun son işaretini kapatması gerektiğine başladınız

son tik çubuğunun ne zaman geleceğini bilmenin mümkün olmadığını anlamaya çalıştık

şimdi kapatmanın başarısız olması önemli değil, tekrar, tekrar, tekrar tikler üzerinde tekrar deneriz

önerdiğim diğer değişiklikleri de kaçırdın mı

orderclose'dan sonra yenilemelerin ne anlamı var?

ve neden TAKEPROFITPIPS yerine kayma olduğunu biliyor musunuz?

hata dönüşüne bağlıdır, aynı döngüde 2 kez kapatmayı deneyebilirsiniz

ticaret bağlamı çok meşgulse ve döngü içinde büyük olasılığı kapatmak için daha fazla işleminiz varsa, onlar da başarısız olur

TAKEPROFITPIPS kullanıyorum çünkü bu benim TAKEPROFIT için değişkenim ve TP seviyem kadar maksimum kaymaya izin verdiğim için, çünkü OrderClose() ile siparişleri kapatırsanız TP'nizden daha fazla kayma olmaması mantıklı, çünkü yaparsanız sonra TAKEPROFIT sizin yerinize onu OrderClose()'dan daha verimli bir şekilde kapatacaktır.
 
Proximus :

start() her tıklamadan sonra kendini tekrar etmiyor mu? Yanlış mıyım?

Evet, hala yürütülmediği sürece her onay için start() çağrılır. . .

Proksimus :

Her neyse, şöyle hayal edin:

OrderOpenTime() = 12:12:01 (12 H 12 DK 1 SANİYE)

Emir açılır, Orderclose() fonksiyon paketi ana koddaki OrderSend() fonksiyonumdan sonra gelir, yani emri açtıktan hemen sonra OrderClose() paketim emri kapatmak için koşulların karşılanıp karşılanmadığını test eder.Diyelim ki şimdi siparişi kapatma zamanı geldi:

Zaman[0] bu çubuğun açık fiyatıdır, bu nedenle genel mantığa göre, aynı çubuk açılmadan emir açılamadığından, emrin açık olduğu zamandan daha küçük olmalıdır. Saat: 12:12:00

Yani her şekilde:

true değeri döndürür, böylece orderclose tetiklenir. Herhangi bir nedenle, kayma veya benzeri bir nedenle kapatamazsa, sorun değil, start() kendini tekrar eder.

Ve bir sonraki tekrarda Zaman[0] emrin açık zamanından %100 daha büyük olacaktır, çünkü mantıklıdır, bu nedenle ilk kapanış başarısız olursa, diğer OrderClose() daha sonra start() tekrarladığında her seferinde gerçekleşecektir. ve start()'ın her tikte kendini tekrar ettiğini düşündüğümden, siparişi daha hızlı kapatmanın daha iyi bir yolu olduğunu düşünmüyorum, umarım net bir şekilde açıklamışımdır :)

Evet, ancak bu konudaki ilk mesajınızda bunu istemediniz. . . şimdi, kapanışın Periyot ve ardından başka bir Periyot, vb. tarafından ertelenmesinin uygun olduğunu söylüyorsunuz. Çubuğun bitişine yakın olarak Kapatmak istiyorsanız, bunu bir sonraki çubuğun ilk tikinde yapmanız gerekir ve yapmanız gerekir. Kapatmanın başarısız olup olmadığını kontrol edin ve Kapatmayı başarabilmeniz için doğru şekilde yeniden deneyin.
 

Bir barın kapanış fiyatının sonraki barda tekrarlanmaması, zorunlu olarak açılış fiyatının değil...

Neden: