Neron_76 : Merhaba! Robotumu bir demo hesabına koydum, çalıştığı ikinci ay. Bugün terminali açıyorum, ondan önce bir sipariş verilmiş olmasına rağmen, bir sinyale iki sipariş verildi. Sipariş sayısında bir sınırlama vardır. Nedeni ne olabilir?
Koda bakılırsa, ikinci emriniz bir piyasa emri değil, bekleyen bir emirdir.
Açık emir sayısı limiti sadece piyasa emirleri için geçerlidir.
Bu nedenle, hata yoktur ve dolayısıyla sorun yoktur.
Koda bakılırsa, ikinci emriniz bir piyasa emri değil, bekleyen bir emirdir.
Açık emir sayısı limiti sadece piyasa emirleri için geçerlidir.
Bu nedenle, hata yoktur ve dolayısıyla sorun yoktur.
Kısıtlama, açık ve bekleyen siparişler için geçerlidir. Bir buçuk ay boyunca bu benim için ikinci vaka, geri kalanı olması gerektiği gibi sergileniyor.
Neron_76 : Kısıtlama, açık ve bekleyen siparişler için geçerlidir. Bir buçuk ay boyunca bu benim için ikinci vaka, geri kalanı olması gerektiği gibi sergileniyor.
Şu şekilde deneyin:
if (NumberOfPositions(Symb,- 1 ,Magik_number)== 0 && NumberOfOrders(Symb,- 1 ,Magik_number)== 0 && Delta_Buy< Low [ 1 ] && sar> Close [ 1 ]) { SetOrder( NULL , OP_BUYSTOP ,Lts,sar,sar-SL* Point (),sar+TP* Point (),Magik_number); return ( 0 ); } if (NumberOfPositions(Symb,- 1 ,Magik_number)== 0 && NumberOfOrders(Symb,- 1 ,Magik_number)== 0 && Delta_Sell> High [ 1 ] && sar< Close [ 1 ]) { SetOrder( NULL , OP_SELLSTOP ,Lts,sar,sar+SL* Point (),sar-TP* Point (),Magik_number); return ( 0 ); }
//=============================================================================================== //------------------------------- Возвращает количество позиций --------------------------------+ //=============================================================================================== int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) { int kp= 0 ; if (sy== "" ) sy= Symbol (); for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) { if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) { if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) { if (mn< 0 || OrderMagicNumber ()==mn) kp++; }}}} return (kp); } //=============================================================================================== //------------------------------- Возвращает количество ордеров --------------------------------+ //=============================================================================================== int NumberOfOrders( string sy= "" , int op=- 1 , int mn=- 1 ) { int kp= 0 ; if (sy== "" ) sy= Symbol (); for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) { if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) { if ( OrderType ()> 1 && OrderType ()< 6 ) { if (mn< 0 || OrderMagicNumber ()==mn) kp++; }}}} return (kp); }
if (NumberOfPositions(Symb,- 1 ,Magik_number)== 0 && NumberOfOrders(Symb,- 1 ,Magik_number)== 0 && Delta_Buy< Low [ 1 ] && sar> Close [ 1 ]) { SetOrder( NULL , OP_BUYSTOP ,Lts,sar,sar-SL* Point (),sar+TP* Point (),Magik_number); return ( 0 ); } if (NumberOfPositions(Symb,- 1 ,Magik_number)== 0 && NumberOfOrders(Symb,- 1 ,Magik_number)== 0 && Delta_Sell> High [ 1 ] && sar< Close [ 1 ]) { SetOrder( NULL , OP_SELLSTOP ,Lts,sar,sar+SL* Point (),sar-TP* Point (),Magik_number); return ( 0 ); }
//=============================================================================================== //------------------------------- Возвращает количество позиций --------------------------------+ //=============================================================================================== int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) { int kp= 0 ; if (sy== "" ) sy= Symbol (); for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) { if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) { if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) { if (mn< 0 || OrderMagicNumber ()==mn) kp++; }}}} return (kp); } //=============================================================================================== //------------------------------- Возвращает количество ордеров --------------------------------+ //=============================================================================================== int NumberOfOrders( string sy= "" , int op=- 1 , int mn=- 1 ) { int kp= 0 ; if (sy== "" ) sy= Symbol (); for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) { if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) { if ( OrderType ()> 1 && OrderType ()< 6 ) { if (mn< 0 || OrderMagicNumber ()==mn) kp++; }}}} return (kp); }
Fonksiyonlar değiştirildi, test iyi gidiyor. Bakalım demo ticarette nasıl olacak. Ama nedense bana öyle geliyor ki benim durumumda hem bu işlevler hem de bu işlevler aynı görevi yerine getiriyor, yani. emir ve pozisyon olup olmadığı sorusunu cevaplayın.
Neron_76 : Fonksiyonlar değiştirildi, test iyi gidiyor. Bakalım demo ticarette nasıl olacak. Ama nedense bana öyle geliyor ki benim durumumda hem bu işlevler hem de bu işlevler aynı görevi yerine getiriyor, yani. emir ve pozisyon olup olmadığı sorusunu cevaplayın.
Eğer emrin ikili ayarı tekrarlanırsa, o zaman " SetOrder " fonksiyonunun gözden geçirilmesi gerekir, belki iki istek verir, ilk istekten sonra fonksiyondan çıkış yoktur ve ikincisini göndermeyi başarır.
Vitaly Muzichenko : Eğer emrin ikili ayarı tekrarlanırsa, o zaman " SetOrder " fonksiyonunun gözden geçirilmesi gerekir, belki iki istek verir, ilk istekten sonra fonksiyondan çıkış yoktur ve ikincisini göndermeyi başarır.
Eğer öyleyse, neden her zaman olmuyor, keneler arasında ne oluyor? Bu konuda pek iyi değilim.
Neron_76 : Öyleyse neden hep olmuyor, keneler arasında bir şey oluyor mu? Bu konuda pek iyi değilim.
Bir sembolün keneleri arasında başka bir sembolün keneleri oluşabilir. Expert Advisor çoklu para birimi ise, başka bir sembolden keneler görür. Zamanlayıcı olayları keneler arasında da meydana gelebilir - OnTimer() ve OnChartEvent() olayları - Neredeyse "olay olayları" yazdım ... bu bir kurulum olurdu ...
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.
Döngüler, OrdersTotal () -1'den 0'a kadar ters sırada sayılmalıdır.
Döngüler, OrdersTotal () -1'den 0'a kadar ters sırada sayılmalıdır.
Merhaba! Robotumu bir demo hesabına koydum, çalıştığı ikinci ay. Bugün terminali açıyorum, ondan önce bir sipariş verilmiş olmasına rağmen, bir sinyale iki sipariş verildi. Sipariş sayısında bir sınırlama vardır. Nedeni ne olabilir?
Koda bakılırsa, ikinci emriniz bir piyasa emri değil, bekleyen bir emirdir.
Açık emir sayısı limiti sadece piyasa emirleri için geçerlidir.
Bu nedenle, hata yoktur ve dolayısıyla sorun yoktur.
Koda bakılırsa, ikinci emriniz bir piyasa emri değil, bekleyen bir emirdir.
Açık emir sayısı limiti sadece piyasa emirleri için geçerlidir.
Bu nedenle, hata yoktur ve dolayısıyla sorun yoktur.
Kısıtlama, açık ve bekleyen siparişler için geçerlidir. Bir buçuk ay boyunca bu benim için ikinci vaka, geri kalanı olması gerektiği gibi sergileniyor.
Şu şekilde deneyin:
SetOrder( NULL , OP_BUYSTOP ,Lts,sar,sar-SL* Point (),sar+TP* Point (),Magik_number);
return ( 0 );
}
if (NumberOfPositions(Symb,- 1 ,Magik_number)== 0 && NumberOfOrders(Symb,- 1 ,Magik_number)== 0 && Delta_Sell> High [ 1 ] && sar< Close [ 1 ]) {
SetOrder( NULL , OP_SELLSTOP ,Lts,sar,sar+SL* Point (),sar-TP* Point (),Magik_number);
return ( 0 );
}
//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
int kp= 0 ;
if (sy== "" ) sy= Symbol ();
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
if (mn< 0 || OrderMagicNumber ()==mn) kp++;
}}}}
return (kp);
}
//===============================================================================================
//------------------------------- Возвращает количество ордеров --------------------------------+
//===============================================================================================
int NumberOfOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
int kp= 0 ;
if (sy== "" ) sy= Symbol ();
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
if ( OrderType ()> 1 && OrderType ()< 6 ) {
if (mn< 0 || OrderMagicNumber ()==mn) kp++;
}}}}
return (kp);
}
Şu şekilde deneyin:
SetOrder( NULL , OP_BUYSTOP ,Lts,sar,sar-SL* Point (),sar+TP* Point (),Magik_number);
return ( 0 );
}
if (NumberOfPositions(Symb,- 1 ,Magik_number)== 0 && NumberOfOrders(Symb,- 1 ,Magik_number)== 0 && Delta_Sell> High [ 1 ] && sar< Close [ 1 ]) {
SetOrder( NULL , OP_SELLSTOP ,Lts,sar,sar+SL* Point (),sar-TP* Point (),Magik_number);
return ( 0 );
}
//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
int kp= 0 ;
if (sy== "" ) sy= Symbol ();
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
if (mn< 0 || OrderMagicNumber ()==mn) kp++;
}}}}
return (kp);
}
//===============================================================================================
//------------------------------- Возвращает количество ордеров --------------------------------+
//===============================================================================================
int NumberOfOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
int kp= 0 ;
if (sy== "" ) sy= Symbol ();
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
if ( OrderType ()> 1 && OrderType ()< 6 ) {
if (mn< 0 || OrderMagicNumber ()==mn) kp++;
}}}}
return (kp);
}
Fonksiyonlar değiştirildi, test iyi gidiyor. Bakalım demo ticarette nasıl olacak. Ama nedense bana öyle geliyor ki benim durumumda hem bu işlevler hem de bu işlevler aynı görevi yerine getiriyor, yani. emir ve pozisyon olup olmadığı sorusunu cevaplayın.
Eğer emrin ikili ayarı tekrarlanırsa, o zaman " SetOrder " fonksiyonunun gözden geçirilmesi gerekir, belki iki istek verir, ilk istekten sonra fonksiyondan çıkış yoktur ve ikincisini göndermeyi başarır.
Öyleyse neden hep olmuyor, keneler arasında bir şey oluyor mu? Bu konuda pek iyi değilim.