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

 

MT4

Bu öğe nedir ve ne işe yarar, hiçbir yerde açıklama bulamadınız mı?

Varsayılan olarak nasıl devre dışı bırakabilirim?


 
void OnStart ()
  {
string text= "Hello man" ;
   string keystr= "ABCDEFG" ;
   uchar src[],dst[],key[];
//--- подготовка ключа шифрования
   StringToCharArray (keystr,key);
//--- подготовка исходного массива src[]
   StringToCharArray (text,src);
//--- вывод исходных данных
   PrintFormat ( "Initial data: size=%d, string='%s'" , ArraySize (src), CharArrayToString (src));
//--- шифрование массива src[] методом DES с 56-битным ключом key[]
   int res= CryptEncode ( CRYPT_AES256 ,src,key,dst);
//--- проверка результата шифрования
   if (res> 0 )
     {
       //--- вывод шифрованных данных
       PrintFormat ( "Encoded data: size=%d %s" ,res,ArrayToHex(dst));
       //--- расшифровка данных массива dst[] методом DES с 56-битным ключом key[]
      res= CryptDecode ( CRYPT_AES256 ,dst,key,src);
       //--- проверка результата
       if (res> 0 )
        {
         //--- вывод дешифрованных данных
         PrintFormat ( "Decoded data: size=%d, string='%s'" , ArraySize (src), CharArrayToString (src));
        }
       else
         Print ( "Ошибка в CryptDecode. Код ошибки=" , GetLastError ());
     }
   else
       Print ( "Ошибка в CryptEncode. Код ошибки=" , GetLastError ());
  }
//+------------------------------------------------------------------+
string ArrayToHex( uchar &arr[], int count=- 1 )
  {
   string res= "" ;
//--- проверка размера
   if (count< 0 || count> ArraySize (arr))
      count= ArraySize (arr);
//--- преобразование в шестнадцатиричную строку
   for ( int i= 0 ; i<count; i++)
      res+= StringFormat ( "%.2X" ,arr[i]);
//---
   return (res);
  }

Şifreleme kılavuzundan bir örnek çalıştırmaya çalışıyorum ama CRYPT_DES yöntemi yerine CRYPT_AES256 kullanıyorum . Sonuç olarak, CryptEncode yönteminden sonra 4029 hatası

 
Dmitri Custurov :

Şifreleme kılavuzundan bir örnek çalıştırmaya çalışıyorum ama CRYPT_DES yöntemi yerine CRYPT_AES256 kullanıyorum . Sonuç olarak, CryptEncode yönteminden sonra 4029 hatası

Anladım. Anahtara daha fazla pozaboriste ihtiyacı var))

 

Merhaba!

Ben aptalım ve kendim çözemiyorum, lütfen bana sorunun ne olabileceğini söyleyin veya en azından yönü belirtin.

Farklı göstergeler eşzamanlı olarak farklı bir tarih parçası göstermeye başlar. Her gün değil ara sıra oluyor.

Bunun nedeninin, göstergelerin dinamik olarak yüklenen geçmişi yanlış işlemesi olduğunu düşündüm. Güncellenen geçmiş üzerindeki göstergenin doğru güncellenmesi ile ilgili olarak her şeyi denedim, artık bunun olmasını önlemek için başka ne yapılması gerektiğini bilmiyorum.

Komisyoncu Alpari. MT 5, 03/13/2020 tarihinden itibaren 2363 oluşturur.

Ekran görüntülerinde ilk başta “uçan” versiyon.

Ardından manuel güncellemeden sonra düzeltin.

 //+------------------------------------------------------------------+
bool IsReadyForCalculate( const int rates_total, const int prev_calculated, const datetime &time[])
  {
   //--- подключение терминала и синхронизация данных
   if ( TerminalInfoInteger ( TERMINAL_CONNECTED ))  
       if (! SymbolIsSynchronized ( _Symbol ) || 
         ! SeriesInfoInteger ( _Symbol , _Period , SERIES_SYNCHRONIZED ))   return ( false );
   //--- некорректное значение prev_calculated
   if (prev_calculated< 0 )                   return ( false );
   //---
   if (prev_calculated== 0 )     prev_time = time[rates_total- 1 ];
   //--- произошли изменения в данных, но prev_calculated не сброшен в 0
   //--- или изменение времени не соответствует одному бару
   if (  (rates_total!=prev_calculated+ 1 &&
         rates_total!=prev_calculated &&
         prev_calculated!= 0 ) ||
        (time[rates_total- 1 ]>prev_time &&
         time[rates_total- 2 ]!=prev_time))
     {
      loc_prev_calculated = 0 ;     // чтобы индикатор не висел "голым" до следующей котировки, вычисляю индикатор из того, что есть
       return ( true );
     }
   //--- корректный сценарий
   if (  (rates_total==prev_calculated   || rates_total==prev_calculated+ 1 || prev_calculated== 0 ) &&
        (time[rates_total- 1 ]==prev_time || time[rates_total- 2 ]==prev_time))
     {
      loc_prev_calculated = prev_calculated;
       return ( true );
     }
   //--- 
   return ( false );       // верну false, пока не знаю, какие варианты ещё могут быть
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[])
  {
   if (!IsReadyForCalculate(rates_total,prev_calculated,time))     return ( 0 );
//---
         // вызов функции зигзага
   
//--- return value of prev_calculated for next call
   prev_time = time[rates_total- 1 ];
   return (rates_total);
  }
//+------------------------------------------------------------------+
Dosyalar:
 

Merhaba.

MQL5 hakkında bir sorum var. OnChartEvent() işlevi çalışmaya nasıl zorlanır? Düzenli bir yolu var mı?

Bu amaçla ChartNavigate() işlevini kullanıyorum, onu OnChartEvent()'ten başlatıyorum. Ancak bu kararsız çalışır - çok sayıda onay işareti olduğunda, ChartNavigate() çağrıldıktan sonra genellikle OnChartEvent() herhangi bir nedenle yeniden başlatılmaz. Nasıl birbirine bağlı olduğunu anlayamıyorum - ChartNavigate () çalışması ve kenelerin alınma sıklığı, ancak yine de oluyor.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
inwinterborn :

Merhaba!

Ben aptalım ve kendim çözemiyorum, lütfen bana sorunun ne olabileceğini söyleyin veya en azından yönü belirtin.


      loc_prev_calculated = 0 ;     // чтобы индикатор не висел "голым" до следующей котировки, вычисляю индикатор из того, что есть
       return ( true );

Belki boşuna ekledim...

kaldırıldı
loc_prev_calculated 

ile değiştirildi

       return (false);

İzleyeceğim.


Ve MT5 ile birlikte gelen standart göstergeler hakkında, lütfen sizin için nasıl çalıştıklarını söyleyin. Yukarıdaki ekran görüntülerinde benimki gibi uçuyorlar mı?

 

Hepinize iyi günler!
Double OnTester() işlevini ve TesterStatistics() işlevini öğreniyorum. Her gün 10:00'da, 16:00'da 20:00'de ve 01:00'de bir sipariş açan MT4'te Tester için basit bir kod yazdım. Ve testin sonunda , TesterStatistics ( ) işlevi en küçük bakiye değerini (yani, göreli düşüş) döndürür.

SORUN

TesterStatistics( ), TÜM açık siparişler için en düşük bakiye değerini döndürür

SORU

TesterStatistics() öğesinin yalnızca bir saatte, örneğin 16:00'da açılan bir sipariş için en düşük bakiye değerini döndürmesini sağlamak için hangi dil yapısı kullanılabilir? Bu durumda kodda belirtilen tüm siparişler aynı anda kodda test edilmelidir. Yani TesterStatistics(), 16:00'da açılan tek bir siparişin tüm emirlerinin bakiye dinamiklerini izlemeli ve test sonunda, sadece 16:00'da açılan emir için en küçük bakiye değerini göstermelidir.

Koduma istediğiniz dil yapısını eklerseniz çok minnettar olurum. Bu, sorunumu çok hızlı bir şekilde çözme algoritmasını anlamamı sağlayacak.
İşte kodum.

 int H;
double    TesterStatistics ( );
void OnTick ()
{
if (H!=Hour( ))
if (Hour( )== 10 ||Hour( )== 16 ||Hour( )== 20 ||Hour( )== 1 )
{
OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 ,Ask+ 400 * Point ,Ask- 200 * Point ,"C2", 123 );
H=Hour( );
}
}
double OnTester ()
{
TesterStatistics ( STAT_BALANCEMIN   );
Print ("----------- TesterStatistics ( STAT_BALANCEMIN   )--------------", TesterStatistics ( STAT_BALANCEMIN   )); 
}
 
ANDREY :

Hepinize iyi günler!
Double OnTester() işlevini ve TesterStatistics() işlevini öğreniyorum. Her gün 10:00'da, 16:00'da 20:00'de ve 01:00'de bir sipariş açan MT4'te Tester için basit bir kod yazdım. Ve testin sonunda, TesterStatistics() işlevi, en küçük bakiye değerini (yani, göreli düşüş) döndürür.

SORUN

TesterStatistics( ), TÜM açık siparişler için en düşük bakiye değerini döndürür

SORU

TesterStatistics()'in yalnızca belirli bir saatte, örneğin 16:00'da açılan bir sipariş için en düşük bakiye değerini döndürmesini sağlamak için hangi dil yapısı kullanılabilir? Bu durumda kodda belirtilen tüm siparişler aynı anda kodda test edilmelidir. Yani TesterStatistics(), 16:00'da açılan tek bir siparişin tüm emirlerinin bakiye dinamiklerini izlemeli ve test sonunda, sadece 16:00'da açılan emir için en küçük bakiye değerini göstermelidir.

Koduma istediğiniz dil yapısını eklerseniz çok minnettar olurum. Bu, sorunumu çok hızlı bir şekilde çözme algoritmasını anlamamı sağlayacak.
İşte kodum.

 int H;
double    TesterStatistics ( );
void OnTick ()

Bu ne?

 
Sergey Tabin:

Bu ne?

Cevabınız için teşekkürler. Sayenizde TesterStatistics ( ); küresel değişken H ...'nin bildirilmesiyle birlikte benim hatamdı. Hata düzeltildi.

 int H;
//double  TesterStatistics( );
void OnTick ()
{
if (H!=Hour( ))
if (Hour( )== 10 ||Hour( )== 16 ||Hour( )== 20 ||Hour( )== 1 )
{
OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 ,Ask+ 400 * Point ,Ask- 200 * Point , "C2" , 123 );
H=Hour( );
}
}
double OnTester ()
{
TesterStatistics ( STAT_BALANCEMIN   );
Print ( "-----------TesterStatistics( STAT_BALANCEMIN  )--------------" , TesterStatistics ( STAT_BALANCEMIN   )); 
}
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
İyi zaman! Grafikte yüksek ve düşük çubuk verilerinin görüntülenmesini nasıl uygulayabilirim. Ve aynı rengi vurgulayarak.???