![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Niye ya?
string symbol_name, // имя символа
MqlTick & ticks_array[], // массив для приёма тиков
uint flags = COPY_TICKS_ALL , // флаг, определяющий тип получаемых тиков
ulong from = 0 , // дата, начиная с которой запрашиваются тики
uint count = 0 // количество тиков, которые необходимо получить
);
string symbol_name, // имя символа
MqlTick & ticks_array[], // массив для приёма тиков
uint flags = COPY_TICKS_ALL , // флаг, определяющий тип получаемых тиков
ulong from = 0 , // дата, начиная с которой запрашиваются тики
uint count = 0 // количество тиков, которые необходимо получить
);
string symbol_name, // имя символа
MqlTick & ticks_array[], // массив для приёма тиков
uint flags = COPY_TICKS_ALL , // флаг, определяющий тип получаемых тиков
ulong from = 0 , // дата, начиная с которой запрашиваются тики
uint count = 0 // количество тиков, которые необходимо получить
);
Evet, önbellekteki kenelerin boyutu belgelerde açıkça belirtilebilir. Tam olarak önbelleğin tamamını almanız gerekiyorsa, belgelere bakın ve aşağıdaki gibi parametrelerle bir işlevle gerekli numarayı isteyin:
int CopyBuffer (
int gösterge_belirteç , // gösterge tutamacı
int buffer_num , // gösterge arabellek numarası
int start_pos , // nereden başlamalı
int say , // ne kadar kopyalanacak
çift tampon[] // verilerin kopyalanacağı dizi
);
Sonuçta, neden yeni bir şey icat ettiğini zaten anladınız mı?
Varsayılan ayarları kaydetmeye çalışmaktansa, tarihten bugüne yükleme yapmanın çok daha önemli olduğunu düşünüyorum.
Yani tarihten bugüne olacak. Sadece adında Copy olduğu için CopyTick'leri sözdiziminde Kopyalama işlevlerine sığdırmaya çalışmak kolaylık sağlamayacaktır. Kullanışlı ve haklı, bu, bunun gibi önişlemci şeyler yapabileceğiniz zamandır.
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define DEFINE_TIMESERIE(NAME,FUNC,T) \
class CLASS ##NAME \
{ \
public : \
static T Get( const string Symb, const int TimeFrame, const int iShift ) \
{ \
T tValue[]; \
\
return ((Copy ##FUNC((Symb == NULL ) ? _Symbol : Symb, _Period , iShift, 1 , tValue) > 0 ) ? tValue[ 0 ] : - 1 ); \
} \
\
T operator []( const int iPos ) const \
{ \
return (CLASS ##NAME::Get(_Symbol, _Period , iPos)); \
} \
}; \
\
CLASS ##NAME NAME; \
\
T i ##NAME( const string Symb, const int TimeFrame, const int iShift ) \
{ \
return (CLASS ##NAME::Get(Symb, TimeFrame, iShift)); \
}
DEFINE_TIMESERIE( Volume , TickVolume, long )
DEFINE_TIMESERIE( Time , Time , datetime )
DEFINE_TIMESERIE( Open , Open , double )
DEFINE_TIMESERIE( High , High , double )
DEFINE_TIMESERIE( Low , Low , double )
DEFINE_TIMESERIE( Close , Close , double )
Yani tarihten bugüne olacak. Sadece adında Copy olduğu için CopyTick'leri sözdiziminde Kopyalama işlevlerine sığdırmaya çalışmak kolaylık sağlamayacaktır. Bunun gibi önişlemci şeyler yapabilmeniz uygun ve haklıdır.
class CLASS ##NAME \
{ \
public : \
static T Get( const string Symb, const int TimeFrame, const int iShift ) \
{ \
T tValue[]; \
\
return ((Copy ##FUNC((Symb == NULL ) ? _Symbol : Symb, _Period , iShift, 1 , tValue) > 0 ) ? tValue[ 0 ] : - 1 ); \
} \
\
T operator []( const int iPos ) const \
{ \
return (CLASS ##NAME::Get(_Symbol, _Period , iPos)); \
} \
}; \
\
CLASS ##NAME NAME; \
\
T i ##NAME( const string Symb, const int TimeFrame, const int iShift ) \
{ \
return (CLASS ##NAME::Get(Symb, TimeFrame, iShift)); \
}
DEFINE_TIMESERIE( Volume , TickVolume, long )
DEFINE_TIMESERIE( Time , Time , datetime )
DEFINE_TIMESERIE( Open , Open , double )
DEFINE_TIMESERIE( High , High , double )
DEFINE_TIMESERIE( Low , Low , double )
DEFINE_TIMESERIE( Close , Close , double )
Siz forumda görünmeden önce, elbette sizin sayenizde böyle bir yazıya rastlamadım, ancak bu türün birçok programcı ile rezonansa gireceğinden emin değilim.
Demonuzda, gerçekten de öyle. BCS'de - hayır
2016.10 . 18 15 : 12 : 32.949 Test14 (Si- 12.16 ,M1) Time: 29089 msc for 1503 records
2016.10 . 18 15 : 12 : 32.822 Test14 (Si- 12.16 ,M1) Time: 33207 msc for 1501 records
2016.10 . 18 15 : 12 : 32.639 Test14 (Si- 12.16 ,M1) Time: 21389 msc for 1500 records
2016.10 . 18 15 : 12 : 31.959 Test14 (Si- 12.16 ,M1) Time: 21926 msc for 1500 records
Ve Alpari gerçekten kötü
2016.10 . 18 15 : 14 : 47.159 Test14 (GBPUSD,M1) Time: 31086 msc for 1836 records
2016.10 . 18 15 : 14 : 46.999 Test14 (GBPUSD,M1) Time: 30698 msc for 1836 records
2016.10 . 18 15 : 14 : 46.779 Test14 (GBPUSD,M1) Time: 46306 msc for 1836 records
2016.10 . 18 15 : 14 : 46.612 Test14 (GBPUSD,M1) Time: 30440 msc for 1836 records
2016.10 . 18 15 : 14 : 46.532 Test14 (GBPUSD,M1) Time: 36227 msc for 1836 records
Yukarıda Kopitiklerin rahatsızlığından bahsetti. Sunulan gösterge, CopyTix'i birkaç kez çağırması gerektiğinden yavaşlar. Ve tüm frenler onun yüzünden. Ve işte olay
Çözüm önerildi
Şimdi tarihler arası kene indirmek için ilk tarihten başlayarak UNKNOWN kaç tik talebinde bulunmanız gerekiyor. Ardından, bitiş tarihine ulaşılıp ulaşılmadığını görmek için her seferinde bakın. Ve her kopya talebinin çok pahalı olduğu göz önüne alındığında ve bu tür frenler elde edilir.
Gerçek açılıştan elde edilen veriler, yalnızca yeni keneler yükleniyor:
2016.10 . 20 18 : 47 : 06.499 GetTickHistory: Получены все доступные тики. Время [ 0 ]: 2016.10 . 20 16 : 47
2016.10 . 20 18 : 47 : 06.499 GetTickHistory: Получено 3 тиков за 20 мкс (пинг = 62214 мкс)
2016.10 . 20 18 : 47 : 06.499 GetTickHistory: Получены все доступные тики. Время [ 0 ]: 2016.10 . 20 16 : 47
2016.10 . 20 18 : 47 : 06.499 GetTickHistory: Получено 3 тиков за 19 мкс (пинг = 62214 мкс)
2016.10 . 20 18 : 47 : 06.499 GetTickHistory: Получены все доступные тики. Время [ 0 ]: 2016.10 . 20 16 : 47
2016.10 . 20 18 : 47 : 06.540 GetTickHistory: Получено 8 тиков за 107 мкс (пинг = 62214 мкс)
2016.10 . 20 18 : 47 : 06.540 GetTickHistory: Получены все доступные тики. Время [ 0 ]: 2016.10 . 20 16 : 47
2016.10 . 20 18 : 47 : 06.540 GetTickHistory: Получено 5 тиков за 19 мкс (пинг = 62214 мкс)
2016.10 . 20 18 : 47 : 06.540 GetTickHistory: Получены все доступные тики. Время [ 0 ]: 2016.10 . 20 16 : 47
2016.10 . 20 18 : 47 : 06.540 GetTickHistory: Получено 5 тиков за 19 мкс (пинг = 62214 мкс)
2016.10 . 20 18 : 47 : 06.540 GetTickHistory: Получены все доступные тики. Время [ 0 ]: 2016.10 . 20 16 : 47
2016.10 . 20 18 : 47 : 06.540 GetTickHistory: Получено 5 тиков за 18 мкс (пинг = 62214 мкс)
2016.10 . 20 18 : 47 : 06.540 GetTickHistory: Получены все доступные тики. Время [ 0 ]: 2016.10 . 20 16 : 47
CopyTicks() bir zaman uyumsuz işlev gibi görünüyor?
Terminale işkence etti. Senaryo
{
MqlTick Ticks[];
Print ( CopyTicks ( _Symbol , Ticks));
Print ( GetLastError ());
}
donuyor. Manuel silme günlükleri
2016.10 . 28 16 : 48 : 57.737 Test (GBPUSD,M1) - 1
TF ve sembolün değişimi - benzer şekilde. Yeniden başlatmanın ardından çalıştı.