Çaydanlıktan gelen sorular - sayfa 40

 

Strateji Test Cihazında neden tek bir MetaTrader 5 Uzman Danışmanının test edilmediğini açıklayın. Başlat'a basıyorum ve hiçbir şey olmuyor. Lütfen açıklayın.

 
PATRIOT :

Strateji Test Cihazında neden tek bir MetaTrader 5 Uzman Danışmanının test edilmediğini açıklayın. Başlat'a basıyorum ve hiçbir şey olmuyor. Lütfen açıklayın.

Dergiye bakın (yeni başlayanlar için).
 

Oluşturulan işlevlerde önceden tanımlanmış yapılardan veri alınamıyor. Örneğin:

 void OnTick ()
{
//--- Объявляем структуру
 MqlRates rates[];
 ArraySetAsSeries (rates, true );

//--- Скопировать необходимое количество значений в массив
 if ( CopyRates ( NULL , 0 , 0 , 4 ,rates) < 0 ) { Print (ErrorDescription( GetLastError ())); return ; }
...
}

Ardından oluşturulan fonksiyondaki değerleri almaya çalışırken:

 void Trailing_Stop_Loss( ENUM_POSITION_TYPE Type, double Trailing_Stop)
{
 string Val_Time = TimeToString (rates[ 1 ].time,TIME_DATE|TIME_MINUTES);

...
}

Bir hata mesajı alıyoruz:

Programın tüm bölümlerinde mevcut olacak şekilde yapılar nasıl ilan edilir?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
tol64 :

Oluşturulan işlevlerde önceden tanımlanmış yapılardan veri alınamıyor. Örneğin:

Ardından oluşturulan fonksiyondaki değerleri almaya çalışırken:

Bir hata mesajı alıyoruz:

Programın tüm bölümlerinde mevcut olacak şekilde yapılar nasıl ilan edilir?

Küresel alanda. İşlev dışı.
 
Bir ticaret dizisinin ticaret işlemlerini gerçekleştirmek için ücretsiz olup olmadığını kontrol etmek için hangi işlevler kullanılabilir? MQL4'te IsTradeAllowed() ve IsTradeContextBusy() işlevleri bunun için tasarlanmıştır.

Standart kitaplığın ticari sınıfı CAccountInfo , TradeAllowed() işlevine sahiptir. Yardım, bunun şu anlama geldiğini söylüyor: "Bu hesap için alım satıma izin veriliyor/yasaklanıyor" . Takas sunucusu dönüş kodlarında bir hata kodu bulamadım, bu da ticari ileti dizisinin meşgul olabileceği anlamına geliyor. Bu çek şimdi ticaret terminalinin kendisinde mevcut mu? Lütfen açıkla.


 
tol64 :
Bir ticaret dizisinin ticaret işlemlerini gerçekleştirmek için ücretsiz olup olmadığını kontrol etmek için hangi işlevler kullanılabilir? MQL4'te IsTradeAllowed() ve IsTradeContextBusy() işlevleri bunun için tasarlanmıştır.

Standart kitaplığın ticari sınıfı CAccountInfo , TradeAllowed() işlevine sahiptir. Yardım, bunun şu anlama geldiğini söylüyor: "Bu hesap için alım satıma izin veriliyor/yasaklanıyor" . Takas sunucusu dönüş kodlarında bir hata kodu bulamadım, bu da ticari ileti dizisinin meşgul olabileceği anlamına geliyor. Bu çek şimdi ticaret terminalinin kendisinde mevcut mu? Lütfen açıkla.

MT5'te, ticaret işlemleri eşzamansız olduğu için ticaret akışı hiçbir zaman meşgul değildir. Sevin.
 
tol64 :
Bir ticaret dizisinin ticaret işlemlerini gerçekleştirmek için ücretsiz olup olmadığını kontrol etmek için hangi işlevler kullanılabilir? MQL4'te IsTradeAllowed() ve IsTradeContextBusy() işlevleri bunun için tasarlanmıştır.

Standart kitaplığın ticari sınıfı CAccountInfo , TradeAllowed() işlevine sahiptir. Yardım, bunun şu anlama geldiğini söylüyor: "Bu hesap için alım satıma izin veriliyor/yasaklanıyor" . Takas sunucusu dönüş kodlarında bir hata kodu bulamadım, bu da ticari ileti dizisinin meşgul olabileceği anlamına geliyor. Bu çek şimdi ticaret terminalinin kendisinde mevcut mu? Lütfen açıkla.


MetaTrader5'te yoğun bir ticaret akışı diye bir şey yoktur, eğer MT4 aynı anda sadece bir tüccarın emrini işleyebiliyorsa, o zaman MT5'te birçok emir paralel olarak işlenir. Herhangi bir sipariş için sunucudan iade kodları OnTrade() işlevinde alınabilir.
 
uncleVic :

Sadece fiyatı belirlemeniz gerekiyor.

Fiyat belirlenmemişse (varsayılan 0.0) veya mevcut fiyat ayarlanmışsa. sonra CExpert'ten kaynaklanan CExpertTrade piyasada bir pozisyon açar .

Fiyat piyasadan daha iyi belirlenirse (alış için mevcut fiyatın altında ve satış için mevcut fiyatın üstünde), CExpertTrade bir limit emri (offset'e tabi) yerleştirir.

Fiyat piyasadan daha kötü belirlenirse (alma için mevcut fiyattan daha yüksek ve satış için mevcut fiyattan daha düşük), CExpertTrade bir stop emri verir (dengeye tabidir).

 bool Chhhh::OpenLongParams( double & price, double & sl, double & tp, datetime & expiration)
{
   printf ( "11111111" );
   if ( 2 + 2 == 4 )
   {
      price= 1.5 ;
      sl= 0 ;
      tp= 0 ;
      expiration= 0 ;
       return ( true );
   }
   else
   {
       return ( false );
   }
}

int Chhhh::LongCondition()
{
   printf ( "222222222" );
   return ( 60 );
}
OpenLongParams hiç çalıştırılmıyor, "11111111" bile yazmıyor
ve LongCondition "2222222" yazıp bir sipariş açacak,
Yanlış bir şey mi yapıyorum yoksa farklı mı çalışıyor?
 
sergeev :

sipariş verirken belirli bir tür belirtilir. SiparişGönder
ve burada OrderSend ?
 
Lodar :
OpenLongParams hiç yürütülmüyor, "11111111" bile yazmıyor
ve LongCondition "2222222" yazıp bir sipariş açacak,
Yanlış bir şey mi yapıyorum yoksa farklı mı çalışıyor?

Temel olarak, her şey çok daha basit. Vakaların yüzde 99'unda giriş seviyesi, giriş parametresi kullanılarak ayarlanabilir:

input double Inp_Signal_PriceLevel    =0.0;

Değer "büyük" noktalarla verilir (yani 2/4 karakter).

Değer = 0 - pazara giriş.

Değer > 0 - limit sırasına göre giriş.

Değer < 0 - durdurma sırasına göre giriş.

Parametre, ana sinyalle (Sihirbazda seçilen sinyallerin oylama için toplandığı) ilişkilidir. Fiyat seviyelerini ayarlama algoritması, CExpertSignal (bir örneği ana sinyal olan) temel sınıfında zaten uygulanmaktadır.

Ama uygulanandan farklı bir algoritma kullanmak istiyorsanız... Ama bu daha sonra, ilginç olduğunda.