MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 703

 
Zvezdochet :

EVET. Sergei Kovalev'in ders kitabı tam olarak budur. Şu anda içinde birçok şey eksik.

Bu sitede olduğu gibi mql5 ile ilgili bir eğitim yok, diğerlerini bilmiyorum. Ama bir sürü makale var, okuyun, işe yarayabilir.

Статьи по MQL5
Статьи по MQL5
  • www.mql5.com
Статьи по программированию на языке MQL5
 

Lord programcılar!

Pliz, bir aydır uğraştığım sorunu çözmeme yardım et.

Bazı nedenlerden dolayı, TS'm bazen siparişleri kapatmıyor.

Şuna benziyor:

İşte ilk üç sipariş - 44329646, 44330563 ve 44337351 mükemmel bir şekilde açılıp kapanıyor.

Ve dördüncü arama emrinde bir trajedi yaşanıyor:

ve benzeri sonsuz...

Onlar. EA 44339156 siparişini açtı ve kendisi (!!!!) birkaç saat önce başarıyla kapattığı 44337351 siparişini kapatmaya çalışıyor.

Manuel olarak kapatmanız gerekiyor ve takip etmezseniz bazen en derine iniyorsunuz. Felaket!

Bu nasıl mümkün olabilir?

Danışman kodu daha basit olamazdı:

здесь - условие открытия сделки
{
         RefreshRates ();
         total_orders_NZDUSD=TotalOrders( "NZDUSD.I" );
         if (total_orders_NZDUSD== 0 )
         {
         Balance= AccountBalance ();
         Lots= NormalizeDouble ((Balance/( Ask * 10.0 ))* 0.01 , 2 );
         double AskNorm= NormalizeDouble ( Ask , Digits );
         ticket_buy_NZDUSD= OrderSend ( "NZDUSD.I" , OP_BUY , 0.01 ,AskNorm, 0 , 0 , 0 );
         }
      }
здесь - условие закрытия сделки
      {
         RefreshRates ();
         if ( OrderSelect (ticket_buy_NZDUSD, SELECT_BY_TICKET )== true )
         {
         total_orders_NZDUSD=TotalOrders( "NZDUSD.I" );
         ctm_ticket_buy_NZDUSD= OrderCloseTime ();
         order_type_NZDUSD= OrderType ();
             if (total_orders_NZDUSD> 0 )
            {
               if (ctm_ticket_buy_NZDUSD== 0 )
               {
                   if (order_type_NZDUSD== OP_BUY )
                  {
                   double BidNorm= NormalizeDouble ( Bid , Digits );
                   OrderClose (ticket_buy_NZDUSD, 0.01 ,BidNorm, 0 );
                  }
               }
            }
         }

Aynı program "her seferinde" nasıl çalışabilir? Anlamıyorum...

 
Alexander_K2 :

Lord programcılar!

Pliz, bir aydır uğraştığım sorunu çözmeme yardım et.

Bazı nedenlerden dolayı, TS'm bazen siparişleri kapatmıyor.

Şuna benziyor:

İşte ilk üç sipariş - 44329646, 44330563 ve 44337351 mükemmel bir şekilde açılıp kapanıyor.

Ve dördüncü sırada bir trajedi meydana gelir:

ve benzeri sonsuz...

Onlar. EA 44339156 siparişini açtı ve kendisi (!!!!) birkaç saat önce başarıyla kapattığı 44337351 siparişini kapatmaya çalışıyor.

Manuel olarak kapatmanız gerekiyor ve takip etmezseniz bazen en derine iniyorsunuz. Felaket!

Bu nasıl mümkün olabilir?

Danışman kodu daha basit olamazdı:

Aynı program "her seferinde" nasıl çalışabilir? Anlamıyorum...

OrderSelect() ile ilgili yardımı okuyun. Özellikle, bilete göre seçim hakkında. Kapalı bir sipariş bile biletle sessizce seçilir. Zaten kapalı ve tekrar kapatmaya çalışıyorsunuz.

Seçin - kapanış saatini kontrol edin - 0 ise, o zaman hala piyasada - kapatın, > 0 ise, o zaman zaten kapalıdır ve ayağınızla tekrar itmeniz gerekmez - canlanmayacaktır ve kapanmayacak.

 
Artyom Trishkin :

OrderSelect() ile ilgili yardımı okuyun. Özellikle, bilete göre seçim hakkında. Kapalı bir sipariş bile biletle sessizce seçilir. Zaten kapalı ve tekrar kapatmaya çalışıyorsunuz.

Seçin - kapanış saatini kontrol edin - 0 ise, o zaman hala piyasada - kapatın, > 0 ise, o zaman zaten kapalıdır ve ayağınızla tekrar itmeniz gerekmez - canlanmayacaktır ve kapanmayacak.

Çok teşekkür ederim - deneyeceğim.

 
Alexander_K2 :

Çok teşekkür ederim - deneyeceğim.

Rica ederim. Denemeyin, sadece yapın...

 
Artyom Trishkin :

Rica ederim. Denemeyin, sadece yapın...

Artem, yardımı okudum - her şey benim için doğru görünüyor.

ctm_ticket_buy_NZDUSD= OrderCloseTime ();
         ...
               if (ctm_ticket_buy_NZDUSD== 0 )
            ...

Kapanış saatini kontrol ediyorum.

MQL4 yardımından:

Yeni sipariş verilerinin alındığından emin olmak için, talep etmeden hemen önce OrderSelect() işlevini çağırmanız önerilir.

Ayrıca yapıldı.

O zaman yanlış olan ne?

 
Alexander_K2 :

Artem, yardımı okudum - her şey benim için doğru görünüyor.

Kapanış saatini kontrol ediyorum.

MQL4 yardımından:

Yeni sipariş verilerinin alındığından emin olmak için, talep etmeden hemen önceOrderSelect() işlevini çağırmanız önerilir.

Ayrıca yapıldı.

O zaman yanlış olan ne?

Bu fonksiyon nedir?

total_orders_NZDUSD=TotalOrders( "NZDUSD.I" );
Ve işlenmesinden sonra hangi sipariş verilir?
 
Alexander_K2 :

Lord programcılar!

Pliz, bir aydır uğraştığım sorunu çözmeme yardım et.

Bazı nedenlerden dolayı, TS'm bazen siparişleri kapatmıyor.

Şuna benziyor:

İşte ilk üç sipariş - 44329646, 44330563 ve 44337351 mükemmel bir şekilde açılıp kapanıyor.

Ve dördüncü sırada bir trajedi meydana gelir:

ve benzeri sonsuz...

Onlar. EA 44339156 siparişini açtı ve kendisi (!!!!) birkaç saat önce başarıyla kapattığı 44337351 siparişini kapatmaya çalışıyor.

Manuel olarak kapatmanız gerekiyor ve takip etmezseniz bazen en derine iniyorsunuz. Felaket!

Bu nasıl mümkün olabilir?

Danışman kodu daha basit olamazdı:

Aynı program "her seferinde" nasıl çalışabilir? Anlamıyorum...

sipariş dizisini hangi yönde görüyorsunuz?

"revizyon" sırasında kapatmalar / silmeler mümkünse, ters yöne bakmak daha iyidir. OrdersTotal() -1'den 0'a dahil.

yoksa gelebilirsin :-)

 
Artyom Trishkin :

Bu fonksiyon nedir?

Bu özellik bana Goldtrader tarafından nazikçe sunuldu ve bunun için kendisine içtenlikle minnettarım.

 //+------------------------------------------------------------------+
//| Calculate Market Orders function                                 |
//+------------------------------------------------------------------+
int TotalOrders( string sy) {     // sy - Currency Pair
int orders= 0 ;
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
         if ( OrderSymbol ()==sy) {
           if ( OrderType ()== OP_SELL || OrderType ()== OP_BUY ) {
             orders++;
           }
         }
       }
     }
return (orders);
}

Aynı anda farklı döviz çiftleri için emir açmanızı sağlar.

:))) Bence her şey onun sayesinde başladı. Sadece bir ay önce bağladım ... Ve onsuz, Kâse'yi kulaklarınız gibi göremezsiniz ...

Onunla ilgili bir sorun mu var?

 

Ama bir şeyler gerçekten doğru değil...

Onlar. OrderSelect'i bir kez ve sonra tekrar fonksiyondan yapıyorum... Bir çeşit şeytanlık...

Neden: