Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1402

 

Merhaba,

İki kapanış fiyatını karşılaştıran ve buna dayalı olarak bir alış veya satış emri açan çok basit bir EA yapmaya çalışıyorum.

İlk siparişte her şey yolunda gider, ancak koşul satıştan satın almaya geçer geçmez, aynı anda birden fazla sipariş verir.

m_trade bir Ctrade nesnesidir .

 // Current position information

bool Buy_openend = false ;
bool Sell_openend = false ;

double currentVolume = 0 ;

if ( PositionSelect ( _Symbol ) == true )
  {
   if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
     {
      Buy_openend = true ;
     }
       if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
     {
      Sell_openend = true ;
      }   
        currentVolume = PositionGetDouble ( POSITION_VOLUME );   
  } 

// Check for trade conditions

bool SellCondition = close <= closeprev && bar[ 1 ].time == startTime;
bool BuyCondition = close >= closeprev && bar[ 1 ].time == startTime;


// Entering trade

if (SellCondition)
  {
   if (Sell_openend)
   {
   Print ( "We already have a sell open" );
   return ;
   }
   m_trade.Sell(TradeVolume+currentVolume, _Symbol ,m_symbol.Ask(), NULL , NULL , NULL );
  }
if (BuyCondition)
  {
   if (Buy_openend)
     {
       Print ( "We already have a buy open" );
   return ;
     }
     m_trade.Buy(TradeVolume+currentVolume, _Symbol ,m_symbol.Bid(), NULL , NULL , NULL );
  }
 
Divania111 Ctrade nesnesidir .

'startTime' zamanının sıfırlanması gerektiğini unuttunuz.

 
Vladimir Karputov # :

'startTime' zamanının sıfırlanması gerektiğini unuttunuz.

Teşekkürler Vladimir, ipucuna göre düzeltmeye çalışacağım.

Ancak yine de şaşkınım. Çünkü bir işlem girmek için if ifadesinde, aynı türden mevcut bir emir yerleşimini kontrol ederiz. Bu doğruysa, sipariş verilmemelidir. O yüzden bu ifade ile aynı anda sadece 1 tip emir girilebileceğini düşündüm.

Bu düşünce yanlış mı?

 
Divania111 # :

Teşekkürler Vladimir, ipucuna göre düzeltmeye çalışacağım.

Ancak yine de şaşkınım. Çünkü bir işlem girmek için if ifadesinde, aynı türden mevcut bir emir yerleşimini kontrol ederiz. Bu doğruysa, sipariş verilmemelidir. O yüzden bu ifade ile aynı anda sadece 1 tip emir girilebileceğini düşündüm.

Bu düşünce yanlış mı?

SİPARİŞleri hiçbir şekilde kontrol etmiyorsunuz, koddaki POZİSYON numarasını ve türünü kontrol ediyorsunuz. Ayrıca - POSITIONS ile yanlış çalışıyorsunuz (hesap türünüz riskten korunma ise 'PositionSelect(_Symbol)' kullanma hatası). Algoritmanızda ciddi tasarım hataları var.

Yapmanız Gerekenler:

1. Yeni bir barın doğuşu sırasında ÖZEL OLARAK çalışın. Yeni bir çubuk yoksa - hiçbir şey yapmayın, gereksiz hareketler yapmayın.

2. Bu madde, 1. madde tamamlandıktan sonra açıklanacaktır.

 
Merhaba. Void OnTick()'te Comment'i istemeyin, EA'yı yavaşlatabilir. Put int OnInit() çok daha hızlı çalışır.
 
Marco Nicholas Comment'i istemeyin, EA'yı yavaşlatabilir. Put int OnInit() çok daha hızlı çalışır.

Evet, MT5'te işi önemli ölçüde yavaşlatıyor.

OnInit'te başlatma sırasında yalnızca 1 kez çalışır ve artık çalışmaz.

 
Marco Nicholas EA'yı yavaşlatıp yavaşlatmadığını söyleyebilir misiniz? int'e koyun OnInit() çok daha hızlı çalışır.

Yorum() işlevinden mi bahsediyorsunuz?

Eğer evet ise, o zaman bu açıktır. OnInit() 'te yorum yalnızca bir kez güncellenirken OnTick() 'te yorum her tıklamada güncellenebilir.

Çözüm, yorumu yalnızca gerektiğinde güncellemektir. Statik ise, yalnızca OnInit() üzerinde güncellenir ve OnDeinit() içinde temizlenir, ancak dinamik ise, OnTick() içinde yorumu yalnızca değiştirilmesi gerektiğinde güncelleyin.

EDIT: Bu yazı aslen İngilizce forumda yapıldı.

 
Merhaba hocam client SocketConnect() fonksiyonunu kullandığımda yinede parametreleri kullanıcı talimatlarına göre doğru bir şekilde girdikten sonra server ile bağlantı kuramıyorum.Test ettikten sonra server normal olarak kullanılabilir durumda.Hangi sorunlara dikkat etmeliyim SocketConnect() işlevini kullanırken?
 

Hepinize iyi günler.

bir sorum var

bilete göre bir satır seçmek için sqlite'ye nasıl istekte bulunulur.

db yapısı şöyle:

sembol-metin

bilet metni

gerçek delmek

s_l - gerçek

t_p - gerçek

bilet için tüm satırı yapıya sokmanız gerekiyor

 
Merhaba, bana switch() içinde aynı Print yerine Comment() kullanabileceğini söyle.