Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 730
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Barlar[]
Bars adlı derleyici, dünyanın neyi temsil ettiğini azarladı. Bu tasarımı test ettiniz mi, yoksa çalışması gerektiğini mi varsaydınız yoksa yanlış bir şey mi yapıyorum?
Evet, benim hatam. Ad çubukları. Genel olarak fikir, değişkenlere anlamlı isimler vermektir, o zaman varlığı her zaman haklı olmayan ek değişkenler oluşturmak gerekli olmayacaktır.
Bir şeyi ifade etmek için değil, onlarla çalışırken kodu kısaltmak için aradım:
Eh, ve aynı damarda, aksi takdirde - çizgilerin uzunluğu artar
Açıklama için herkese teşekkürler!
Bir şeyi ifade etmek için değil, onlarla çalışırken kodu kısaltmak için aradım:
Eh, aynı damarda, aksi takdirde - çizgilerin uzunluğu artar
Açıklama için herkese teşekkürler!
Kodu minimumda tutmak istiyorsanız, doğrudan veri dizisine bakın.
//| test09.mq5 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
MqlRates bars[]; // массив для хранения данных цен OHLC
int start_bar= 0 ; // с какого бара копируем
int count_bar=4; // сколько баров копируем
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
ArraySetAsSeries (bars, true );
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
//---
if ( CopyRates ( Symbol (), PERIOD_CURRENT , start_bar, count_bar, bars)<count_bar) return ;
if (bars[ 1 ].open<bars[ 1 ].close && bars[ 2 ].close>bars[ 3 ].close && bars[ 1 ].close>bars[ 2 ].close)
{
}
}
//+------------------------------------------------------------------+
Tünaydın!
Bir Expert Advisor'ı boşaltırken (silirken) verilen emirler ve açık pozisyonlar nerede ve nasıl silinir? Kolaysa, lütfen bir örnek paylaşın.
Teşekkür ederim.
Danışmanlardan birinin tuhaf bir saçmalığı var. Danışman normal olarak test edilir, "Tek testi başlat"a tıkladığınızda ilk kez yalnızca bir tanesi çalıştırılır. Ayrıca, tek bir teste tıkladığınızda veya Optimizasyon'da herhangi bir satıra tıkladığınızda, Günlük şunları gösterir:
2017.02.08 13:31:05.165 Test cihazı 4234087422336 geçmek için girdi alamıyor
2017.02.08 13:31:34.829 Test cihazı, 4076312468706 geçiş için girdi alamıyor
2017.02.08 13:31:47.973 Test cihazı geçiş için girdi alamıyor 1004506640527
Danışmanların geri kalanı normal davranıyor. Ne olabilirdi?
Beyler, 10000 * 10000 gibi büyük bir matris yazıyorum
{
//--- запишем файл
ResetLastError ();
int handle= FileOpen (path, FILE_READ | FILE_WRITE | FILE_BIN );
//---
if (handle!= INVALID_HANDLE )
{
for ( int z=ARRAY_SIZE_Y; z> 0 ; z--) // Перебор по барам, колонка Y
{
for ( int q= 0 ; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek (handle, 0 , SEEK_END );
FileWriteArray (handle,arra);
}
FileClose (handle);
}
else
Print ( "Failed to open the file, error " , GetLastError (), " handle " ,handle);
//---
count= 1 ;
}
Sizce bu algoritma hız açısından verimli mi?
1000 * 1000'lik bir matrisle, hız birkaç saniye olduğundan, 10000 * 10000'e kadar bir artışla sistem ayağa kalkar
Beyler, 10000 * 10000 gibi büyük bir matris yazıyorum
{
//--- запишем файл
ResetLastError ();
int handle= FileOpen (path, FILE_READ | FILE_WRITE | FILE_BIN );
//---
if (handle!= INVALID_HANDLE )
{
for ( int z=ARRAY_SIZE_Y; z> 0 ; z--) // Перебор по барам, колонка Y
{
for ( int q= 0 ; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek (handle, 0 , SEEK_END );
FileWriteArray (handle,arra);
}
FileClose (handle);
}
else
Print ( "Failed to open the file, error " , GetLastError (), " handle " ,handle);
//---
count= 1 ;
}
Sizce bu algoritma hız açısından verimli mi?
1000 * 1000'lik bir matrisle, hız birkaç saniye olduğundan, 10000 * 10000'e kadar bir artışla sistem ayağa kalkar
Herhangi bir şeyi karıştırıyor musun?
Dört boyutlu dizilerden daha fazlasına izin verilmezse böyle bir matrisi bu şekilde mi elde edebilirsiniz?
Herhangi bir şeyi karıştırıyor musun?
10000 x 10000 iki boyutlu değil mi?
vb...
Dört boyutlu dizilerden daha fazlasına izin verilmezse, böyle bir matrisi bu şekilde elde edebilirsiniz?
Herhangi bir şeyi karıştırıyor musun?