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

 

Siparişi tam olarak çubuğun sonunda kapatacak bir kod formüle etmek için biraz yardıma ihtiyacım var. Bu özel bir scalper EA içindir, bu yüzden kesin hassasiyete ihtiyaç duyar. Ne demek istediğimi açıklamama izin verin:



Burada örneğin bir M15 EUR/USD grafiği görebilirsiniz. Şimdi, X işaretli mumun tam açılışında beni uzun bir ticarete götüren herhangi bir göstergem olduğunu hayal edin, bu yüzden yükseldi, ardından düşüş mumu izledi, ardından düşük çok düşük, ama önemli değil, önemli olan, benim hesaplamalarıma göre, buradaki en uygun çıkış, 1 ile işaretli çubuğun kapanış noktası olacaktır. İşin zor yanı, emri kapanış fiyatından nasıl kapatacağımı bilmiyorum. 1 numaralı çubuk ve burada yardıma ihtiyacım var!

Şimdilik aklıma gelen en iyi çözüm şudur (bu hayali SATIN AL ticareti durumunda):


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

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

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

}}

Bu kod, alış işlemini tam olarak Open[0]'da kapatır, ancak Close[1]'da kapatmaz. Görüyorsunuz, çünkü resme bakarsanız ve 2 ile işaretli çubuğu kontrol ederseniz, çubuk 2'nin açılmadığını görebilirsiniz. bu fiyat bir öncekinin kapanmasıyla biraz farklı bir fiyattan açıldı. Bazen şuradaki gibi büyük bir boşluk oluşur:



Yani deneyim şunu söyler:

Kapat[1] != Aç[0]

Çok nadir durumlarda öyledir. Bu yüzden siparişin Kapat[1]'da kapatılmasına ihtiyacım var.

Yine de uygulanabilir bir çözüm, zamanı sayarak, örneğin bu M1 ve M15 çizelgesidir, her iki durumda da M1 için 60 veya M15 için 900 saniyeyi saymak ve sırayı 59 veya 599. saniyelerde kapatmaktır. bununla, kenelerin 6 saniye olduğunu tahmin ediyorum (yanılıyorsam beni düzeltin) ve tam olarak vuramazsınız çünkü bu zaman sorunu ve ek kayma sorunu nedeniyle bar kapandıktan sonra ticaret yolunu kapatabilirsiniz.

O halde sorumu tekrar özetleyelim, yukarıda anlattığım gibi zamanı saymak mümkün mü, evet ise, kaymadan nasıl kaçınılır ve gecikme sorunu nasıl çözülür?

Veya siparişi Open[0] yerine Kapat[1]'da nasıl kapatacağınız konusunda başka çözümler bulursanız, buna açığım. Lütfen bana bu konuda yardım edin, bu benim EA'mın çok önemli bir sorunu!

 
Proximus :

Siparişi tam olarak barın sonunda kapatacak bir kod formüle etmek için biraz yardıma ihtiyacım var.

son tik diyebileceğin bir durum yok bu an mevcut barın son tikinden önceki bir tik
 

Modül, kalan olmadığını görmek için kontrol edin . iyi şanslar

 if ( ! MathMod ( TimeCurrent (), PERIOD_M5 * 60 ) ) 

      OrderClose( OrderTicket(), OrderLots(), Bid , slippage );
 
trevone :

Modül, kalan olmadığını görmek için kontrol edin. iyi şanslar

Bu işe yaramayacak. . . ya çubuğun bitiminden önce ya da sonra olacaktır. . . barın sonunda asla. deVries'in dediği gibi, mevcut çubuğun sonunu tespit etmek mümkün değildir, ancak bir sonrakinin başlangıcını tespit edebiliriz. . .
 
RaptorUK :
Bu işe yaramayacak. . . ya çubuğun bitiminden önce ya da sonra olacaktır. . . barın sonunda asla. deVries'in dediği gibi, mevcut çubuğun sonunu tespit etmek mümkün değildir, ancak bir sonrakinin başlangıcını tespit edebiliriz. . .


Öncesi o kadar da kötü değil, hemen sonrası olmamalı. Her zaman kapanıştan önce olabilseydi, ancak kapanışa mümkün olduğunca yakın olsaydı, o zaman bu çözümü de kabul ederdim, ancak kapanıştan sadece 1 kez sonraysa o zaman düşündüğümden daha iyi değil ve bu nedenle kabul edilebilir değil. Ama neden mevcut tik'ten sonra tam olarak kapanıyor?


Peki ya barın kapanmasından önceki 1 saniyeyi alan diğer çözüm?

M1 örneğinde olduğu gibi

 if ( Time[0]>=OrderOpenTime()+59  ) 

      OrderClose( OrderTicket(), OrderLots(), Bid , slippage );

Bu durumda kene sorunu varsa nasıl çözülür?

 
Proximus :

Öncesi o kadar da kötü değil, hemen sonrası olmamalı. Her zaman kapanıştan önce olabilseydi, ancak kapanışa mümkün olduğunca yakın olsaydı, o zaman bu çözümü de kabul ederdim, ancak kapanıştan sadece 1 kez sonraysa o zaman düşündüğümden daha iyi değil ve bu nedenle kabul edilebilir değil. Ama neden mevcut tik'ten sonra tam olarak kapanıyor?


Peki ya barın kapanmasından önceki 1 saniyeyi alan diğer çözüm?

M1 örneğinde olduğu gibi

Bu durumda kene sorunu varsa nasıl çözülür?




değilse bir dakika daha beklemenize neden olur ve bu durumda varsa....
 
Proximus :

Öncesi o kadar da kötü değil, hemen sonrası olmamalı. Her zaman kapanıştan önce olabilseydi, ancak kapanışa mümkün olduğunca yakın olsaydı, o zaman bu çözümü de kabul ederdim, ancak kapanıştan sadece 1 kez sonraysa o zaman düşündüğümden daha iyi değil ve bu nedenle kabul edilebilir değil. Ama neden mevcut tik'ten sonra tam olarak kapanıyor?

Bir EA'da (ve Göstergede) işler yalnızca bir onay işareti olduğunda gerçekleşir, bir sonraki çubukta ilk onay işaretine sahip olana kadar bir çubuğun son işaretinin ne zaman olduğunu bilmenin hiçbir yolu yoktur. . . Bir H1 çubuğu için tik, saati 59 dakika 59 saniye geçmiş olsa bile, o saniye boyunca yine de başka bir tik olabilir. . .

Proksimus :

Peki ya barın kapanmasından önceki 1 saniyeyi alan diğer çözüm?

M1 örneğinde olduğu gibi

Bu durumda kene sorunu varsa nasıl çözülür?

. . . ve çubuğun son saniyesini bekleyemezsiniz çünkü çubuğun son 5 saniyesi için herhangi bir onay işareti olmayabilir, bu durumda çubuğun son saniyesini asla "göremezsiniz".

 
RaptorUK :

Bir EA'da (ve Göstergede) işler yalnızca bir onay işareti olduğunda gerçekleşir, bir sonraki çubukta ilk onay işaretine sahip olana kadar bir çubuğun son işaretinin ne zaman olduğunu bilmenin hiçbir yolu yoktur. . . Bir H1 çubuğu için tik, saati 59 dakika 59 saniye geçmiş olsa bile, o saniye boyunca yine de başka bir tik olabilir. . .

. . . ve çubuğun son saniyesini bekleyemezsiniz çünkü çubuğun son 5 saniyesi için herhangi bir onay işareti olmayabilir, bu durumda çubuğun son saniyesini asla "göremezsiniz".

Öyleyse şunu anlamalıyım ki, bankalar arası döviz kurları belirli bir süre içinde değişmezse, komisyoncu yeni fiyat verilerini çağırmaz mı?

MT4'teki bir işaretin, fiyat veya hacim ne olursa olsun, X saniyelik periyotlardan sonra fiyatı her zaman yenileyeceği anlamına geldiğini düşündüm. bu ticareti 57 saniye veya daha önce kapatın.


Bu durum göz önüne alındığında, şunları kullanamaz mıyım:

RefreshRates();   

Son onay işaretini 58 saniyede çağırmak ve 59'da çıkmak için mi?

 
Proximus :

Öyleyse şunu anlamalıyım ki, bankalar arası döviz kurları belirli bir süre içinde değişmezse, komisyoncu yeni fiyat verilerini çağırmaz mı?

MT4'teki bir işaretin, fiyat veya hacim ne olursa olsun, X saniyelik periyotlardan sonra fiyatı her zaman yenileyeceği anlamına geldiğini düşündüm. bu ticareti 57 saniye veya daha önce kapatın.

Broker'ın fiyatları değişmezse, Bid ve Ask, yeni bir tick yoktur. . . Daha az işlem gören bazı paritelerde Midnight GMT civarında bir dakika veya daha uzun süre tik olamaz . . . yeni bir onay önceden belirlenmiş bir süreden sonra oluşturulmaz, fiyatta, Teklifte veya Satışta bir değişiklik olduğunda (ve belki başka bazı durumlarda diğer sembol parametrelerinde değişiklik olduğunda) olur. . .

Proksimus :

Bu durum göz önüne alındığında, şunları kullanamaz mıyım:

Son onay işaretini 58 saniyede çağırmak ve 59'da çıkmak için mi?

Kene yoksa RefreshRates() nasıl çağrılır?
 

MT4'te kenelerin nasıl çalıştığına ilişkin açıklama için teşekkür ederiz.

RaptorUK :

Broker'ın fiyatları değişmiyorsa, Bid ve Ask, yeni bir tick yoktur. . . Daha az işlem gören bazı paritelerde Midnight GMT civarında bir dakika veya daha uzun süre tik olamaz . . . yeni bir onay önceden belirlenmiş bir süreden sonra oluşturulmaz, fiyatta, Teklifte veya Satışta bir değişiklik olduğunda (ve belki başka bazı durumlarda diğer sembol parametrelerinde değişiklik olduğunda) olur. . .

Kene yoksa RefreshRates() nasıl çağrılır?

RefreshRates()'in aracıyı likidite sağlayıcısından yeni bir besleme seti çağırmaya zorlayacağını düşündüm, ama sanırım değil .


Her neyse, sorunuma bundan daha iyi bir çözüm bulabilecek biri varsa, lütfen benimle paylaşın, çok önemli ! Şimdiden teşekkürler!

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

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

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

}}
 
Proximus :

MT4'te kenelerin nasıl çalıştığına ilişkin açıklama için teşekkür ederiz.

Raptorİngiltere :

Broker'ın fiyatları değişmezse, Bid ve Ask, yeni bir tick yoktur. . . Daha az işlem gören bazı paritelerde Midnight GMT civarında bir dakika veya daha uzun süre tik olamaz . . . yeni bir onay önceden belirlenmiş bir süreden sonra oluşturulmaz, fiyatta, Teklifte veya Satışta bir değişiklik olduğunda (ve belki başka bazı durumlarda diğer sembol parametrelerinde değişiklik olduğunda) olur. . .

Kene yoksa RefreshRates() nasıl çağrılır?

RefreshRates()'in aracıyı likidite sağlayıcısından yeni bir besleme seti çağırmaya zorlayacağını düşündüm, ama sanırım değil .


Her neyse, sorunuma bundan daha iyi bir çözüm bulabilecek biri varsa, lütfen benimle paylaşın, çok önemli! Şimdiden teşekkürler!


Yapabileceğiniz en iyi şey, Bar'ın son işaretinden sonraki, diğer bir deyişle bir sonraki Bar'ın ilk işaretinden sonraki işareti kullanmaktır.