geliştiriciler normal bir çıkış/iptal verdiyse, örneğin TF - OHLC verileri hazır değilse, verilerin işlenmesini doğru bir şekilde kesmek mümkün olacaktır, ayrıca sunucuya bir sipariş göndermeyi işlemek de yararlı olacaktır. ... OnTick()'ten çıkmak için sonsuz dönüşü () çözmeden kodu herhangi bir yerde kesmek ve bir sonraki tıklamadan önce çıkmak uygundur
Yani bir koltuk değneği tasvir etmek mümkün, ancak orada kullanılabilirlik tamamen kötü, çalışması gerekmesine rağmen göstermeyeceğim bile.
Kullanılabilirlik geliştirilmiş gibi görünse de. Genel olarak, iç içe geçmiş işlevler de dahil olmak üzere olası bir çıkışa sahip her işlev veya yöntem çağrısı bir _call makrosuna sarılmalıdır. Kimin umurunda, o zaman tüm işleyiciler için kendiniz yazın. Fikrin bir testi olarak diz üzerine yazılmıştır, böylece kelimeden test edilmemiştir - hiç.
#ifdef _DEBUG
#define DELETE(dObj) doif ( CheckPointer (dObj)!= POINTER_INVALID ) { delete dObj; dObj= NULL ;} while ( false )
#else
#define DELETE(dObj) do { delete dObj; dObj= NULL ;} while ( false )
#endif
#define START class STD_CStart; voidOnStart (){std_start= new STD_CStart; std_start.Main(); DELETE(std_start);}
#define ON_START START\
static STD_CStart* std_start= NULL ; \
class STD_CStart{ \
public : void Main(); \
}; \
void STD_CStart::Main
#define DELETE_EVENTS doif (std_start!= NULL ) DELETE(std_start); while ( false )
#define EXIT(out) do {DELETE_EVENTS; return out;} while ( false )
#define CHECK(out) doif (!std_start) EXIT(out); while ( false )
#define _call(funk,out) do {funk;CHECK(out);} while ( false )
ON_START()
{
int x= 0 ;
Print ( "Start" );
_call(TestInt( 4 ),);
Print (++x);
_call(TestInt( 1 ),);
Print (++x);
_call(TestInt( 6 ),);
Print (++x);
TestVoid();
}
int TestInt( int a){
staticint x= 0 ;
Print ( "Func call " ,++x);
if (a< 3 ) EXIT( NULL );
return0 ;
}
void TestVoid(){
Print ( "Error" );}
Terminal ve tarayıcı tam pencereye genişletildi. tarayıcıdayım.
Tarayıcı donuyor, sağ üst köşedeki çarpı işaretine tıklıyorum.
Kapanmıyor, birkaç kez daha basıyorum.
Tıklamalar sırasında belirli bir noktada tarayıcı kapanır - pencere kaybolur. Ve bu sırada, Terminal, soktuğu yer olan imlecin altından geçer.
Terminal kapanıyor ve o kadar hızlı ki fark edilmiyor. Özellikle çok sayıda Terminal açıkken.
Bu, örneğin Toplu Optimizasyon sırasında çok can sıkıcı bir durumdur. Ama daha da kötüsü - bir savaş danışmanı için. Savaş Terminalini bitirdiğini aptalca fark edemezsiniz.
Böyle bir koruma koyun.
voidOnDeinit ( constint Reason )
{
if (Reason == REASON_CLOSE )
MessageBox ( "Terminal is being closed!" );
}
Kapatırken, beş saniye boyunca bir mesaj görünür. Böylece gerçekte ne olduğunu anlayabilirsiniz. Terminalde koruma olmaması garip.
MT5'te Terminalin yanlışlıkla kapanmasına karşı herhangi bir koruma yoktur. Son zamanlarda böyle bir senaryo vardı.
Terminal ve tarayıcı tam pencereye genişletildi. tarayıcıdayım.
Tarayıcı donuyor, sağ üst köşedeki çarpı işaretine tıklıyorum.
Kapanmıyor, birkaç kez daha basıyorum.
Tıklamalar sırasında belirli bir noktada tarayıcı kapanır - pencere kaybolur. Ve bu sırada, Terminal, soktuğu yer olan imlecin altından geçer.
Terminal kapanıyor ve o kadar hızlı ki fark edilmiyor. Özellikle çok sayıda Terminal açıkken.
Bu, örneğin Toplu Optimizasyon sırasında çok can sıkıcı bir durumdur. Ama daha da kötüsü - bir savaş danışmanı için. Savaş Terminalini bitirdiğini aptalca fark edemezsiniz.
Böyle bir koruma koyun.
Kapatırken, beş saniye boyunca bir mesaj görünür. Böylece gerçekte ne olduğunu anlayabilirsiniz. Terminalde koruma olmaması garip.
Birkaç daha hızlı seçenek var.
Savaş terminalini kapalı tutun.
VPS'ye devam etmek için savaş terminali
Eğlenceli kalemleri bağlayın ve bilgisayardan uzak durun. )))
İfadelerin mql'deki herhangi bir uygulaması için, hata ayıklama modu için DebugBreak işlevini kullanmak mantıklıdır. Hata ayıklama sırasında hayatı çok daha kolaylaştırır ve acil bir uçuştan çok daha faydalıdır.
Bir hedge üzerinde, bir pozisyon birkaç IN işlemlerinden oluşabilir. Bu, kısmi yürütme ile olur.
Aynı zamanda, kısmen uygulanan bir emir, ORDER_TIME_SETUP (_MSC) değerini ilk (muhtemelen sondan bir önceki) anlaşmanın yürütülme zamanına değiştirir. Onlar. örneğin BuyLimit'in ne zaman ayarlandığını geçmişten belirlemek mümkün olmayacaktır.
Sonuç olarak, bir hedge pozisyonu, netleştirmede sıklıkla görüldüğü gibi, kısmi bir açık fiyata sahip olabilir.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Bu arada, Assert analogu
bu yüzden ona çok ihtiyacı var!
geliştiriciler normal bir çıkış/iptal verdiyse, örneğin TF - OHLC verileri hazır değilse, verilerin işlenmesini doğru bir şekilde kesmek mümkün olacaktır, ayrıca sunucuya bir sipariş göndermeyi işlemek de yararlı olacaktır. ... OnTick()'ten çıkmak için sonsuz dönüşü () çözmeden kodu herhangi bir yerde kesmek ve bir sonraki tıklamadan önce çıkmak uygundur
Kullanılabilirlik geliştirilmiş gibi görünse de. Genel olarak, iç içe geçmiş işlevler de dahil olmak üzere olası bir çıkışa sahip her işlev veya yöntem çağrısı bir _call makrosuna sarılmalıdır. Kimin umurunda, o zaman tüm işleyiciler için kendiniz yazın. Fikrin bir testi olarak diz üzerine yazılmıştır, böylece kelimeden test edilmemiştir - hiç.
MT5'te Terminalin yanlışlıkla kapanmasına karşı koruma yoktur. Son zamanlarda böyle bir senaryo vardı.
Bu, örneğin Toplu Optimizasyon sırasında çok can sıkıcı bir durumdur. Ama daha da kötüsü - bir savaş danışmanı için. Savaş Terminalini bitirdiğini aptalca fark edemezsiniz.
Böyle bir koruma koyun.
Kapatırken, beş saniye boyunca bir mesaj görünür. Böylece gerçekte ne olduğunu anlayabilirsiniz. Terminalde koruma olmaması garip.
MT5'te Terminalin yanlışlıkla kapanmasına karşı herhangi bir koruma yoktur. Son zamanlarda böyle bir senaryo vardı.
Bu, örneğin Toplu Optimizasyon sırasında çok can sıkıcı bir durumdur. Ama daha da kötüsü - bir savaş danışmanı için. Savaş Terminalini bitirdiğini aptalca fark edemezsiniz.
Böyle bir koruma koyun.
Kapatırken, beş saniye boyunca bir mesaj görünür. Böylece gerçekte ne olduğunu anlayabilirsiniz. Terminalde koruma olmaması garip.
Birkaç daha hızlı seçenek var.
Birkaç daha hızlı seçenek var.
VPS'de de kapanabilir. Push gönderen uzmanlarım var.
Ve Windows arayüzünü frenlerken yanlış çarpı işaretine tıklamak gerçekten çok kolay. Koştum, şimdi bağlam menüsündeki görev çubuğunda kapatıyorum.
Birkaç daha hızlı seçenek var.
Bir masaüstü yöneticisi kurun ve tarayıcı ve her türlü çöp için bir masaüstü seçin ve terminaller için başka bir masaüstü seçin.
Veya Linux'u kurun (masaüstü yöneticisi dahildir :))
Bu arada, Assert analogu
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Kitaplıklar: MT4Orders
fxsaber , 2020.04.07 18:47
MT5'te kısmi yürütme bulmak çok kolaydır.Bir hedge üzerinde, bir pozisyon birkaç IN işlemlerinden oluşabilir. Bu, kısmi yürütme ile olur.
Aynı zamanda, kısmen uygulanan bir emir, ORDER_TIME_SETUP (_MSC) değerini ilk (muhtemelen sondan bir önceki) anlaşmanın yürütülme zamanına değiştirir. Onlar. örneğin BuyLimit'in ne zaman ayarlandığını geçmişten belirlemek mümkün olmayacaktır.
Sonuç olarak, bir hedge pozisyonu, netleştirmede sıklıkla görüldüğü gibi, kısmi bir açık fiyata sahip olabilir.