Tnew[1] - dizinin ötesine geçer, dizi Tnew[1] olarak tanımlanır, bu nedenle dizinin öğelerine yalnızca Tnew[0] olarak erişilebilir, çünkü dizin sıfırdan başlar.
Sonuç nedir? Bu durumda, Tnew[1] geçersiz bir ifadedir, ancak geçerli midir? Doğru ifade Tnew[0] , Tnew[] veya başka bir şey mi? EA'nın çalışmasının sonucu Tnew[1], Tnew[0], Tnew[] kullanıldığında değişmiyor gibi görünüyor
ias : Sonuç nedir? Bu durumda, Tnew[1] geçersiz bir ifadedir, ancak geçerli midir? Doğru ifade Tnew[0] , Tnew[] veya başka bir şey mi? Uzmanın çalışmasının sonucu Tnew[1],Tnew[0],Tnew[] kullanıldığında değişmiyor gibi görünüyor
Sonuç aynı olamaz, en azından diziden veri mevcut olmayan bir dizinde okunuyorsa. Sizce Tnew[1]'de ne yatıyor?
Hesapta emin değil yazıyor, aralıktan çıkarken uzman bir hata bildirebilir ve devam edebilir. sadece bu durumda Tnew[0]'da ne olacak?
CopyTime'dan sonra(sembol, zaman çerçevesi, 0, 1, Tnew); adres Tnew[1] önceki çubuğun başlangıç zamanını içermelidir.
sırayla alalım
Bu iki satır, biri dinamik - (Told) olan ve ikincisi - (Tnew) olan dizileri bildirir, anladığım kadarıyla yalnızca bir girdi içerir.
staticdatetime Told[];
datetime Tnew[ 1 ];
Burada dinamik bir dizinin boyutunu değiştirme girişimi var. Dizideki girdilerin sayısının boyuta eşit olduğu varsayılır.
if ( ArrayResize (Told, size) == - 1 )
Bu satır, 0 numaralı çubuktan başlayarak bir kaydı (çubuk tarihi) Tnew dizisine kopyalar. Bundan sonra, bu tarih şu şekilde kullanılabilir hale gelir Tnew[0] (çünkü dizi ZERO 'dan numaralandırılmıştır).
CopyTime (symbol, timeframe, 0 , 1 , Tnew);
Burada, Tnew dizisinin tek girişi, Told dizisinin hücresindeki Number-1 sayısı altındaki girişle karşılaştırılır (numaralandırmanın 0'dan olduğunu unutmayın) .
Her şeyi senkronize etmek çok zor, göstergede her şeyi hesaba katmaya çalıştım ama bu deliklerle başa çıkmak çok zor
2010.07.19 02:20:12 Kontrol delikleri (EURUSD,M1) Geçmişteki delik sayısı 2010.07.09 21:35:00 tarihinden itibaren 260 2010.07.19 02:20:12 Delikleri kontrol etme (EURUSD,M1) GBPUSD deliği 2010.07.19 00:20:00 2010.07.19 02:20:12 Delikleri kontrol etme (EURUSD,M1) USDJPY deliği 2010.07.19 00:15:00 2010.07.19 02:20:12 Deliklerin kontrol edilmesi (EURUSD,M1) EURGBP deliği 2010.07.16 22:43:00 2010.07.19 02:20:12 Deliklerin kontrol edilmesi (EURUSD,M1) GBPUSD deliği 2010.07.16 22:43:00 2010.07.19 02:20:12 Deliklerin kontrol edilmesi (EURUSD,M1) GBPUSD deliği 2010.07.16 22:38:00 2010.07.19 02:20:12 Deliklerin kontrol edilmesi (EURUSD,M1) Delik AUDUSD 2010.07.16 22:21:00
vb.....
//+------------------------------------------------------------------+//| Проверка дыр.mq5 |//| Привалов С.В. |//| https://www.mql5.com/ru/users/Prival |//+------------------------------------------------------------------+#property copyright "Привалов С.В."#property link "https://www.mql5.com/ru/users/Prival"#property version "1.00"#property indicator_separate_window#property indicator_buffers 1#property indicator_plots 1#property indicator_color1 Blueint MaxBars= 7200 ; // точка стартаstring mas_0[]={ "USDCHF" , "GBPUSD" , "EURUSD" , "USDJPY" , "USDCAD" , "AUDUSD" , "EURGBP" , "EURAUD" , "EURCHF" , "EURJPY" , "GBPJPY" , "GBPCHF" };
int count_symbol= 12 ;
double Buffer[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit ()
{
SetIndexBuffer ( 0 ,Buffer, INDICATOR_DATA );
PlotIndexSetInteger ( 0 , PLOT_DRAW_TYPE , DRAW_HISTOGRAM );
//--- на старте сразу же пошлем асинхронные запросы на поднятие таймфреймов в памятьfor ( int i= 0 ; i<count_symbol; i++) CheckOtherSymbol(mas_0[i],MaxBars);
return ( 0 );
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate ( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---if (rates_total<MaxBars) return ( 0 ); // ничего не считаем и ничего не рисуем на графике int start_pos=rates_total-MaxBars- 1 ; // точка стартаif (close[start_pos]== 0 ) return ( 0 ); // ничего не считаем и ничего не рисуем на графике //--- снова пошлем асинхронные запросы на поднятие таймфреймов в памятьfor ( int i= 0 ; i<count_symbol; i++)
{
if (!CheckOtherSymbol(mas_0[i],MaxBars)) return ( 0 );
}
if (prev_calculated== 0 )
{
Print ( "Дата начала тестирования " ,time[start_pos]);
Print ( "Символ " , _Symbol , " приод " , _Period );
}
else start_pos=prev_calculated- 1 ;
int sum= 0 ;
//--- расчет индикатораfor ( int i=start_pos;i<rates_total;i++)
{
Buffer[i]= 0 ;
for ( int j= 0 ; j<count_symbol; j++)
{
if (!CheckTimeOtherSymbol(mas_0[j],time[i]))
{
Print ( "Дыра " ,mas_0[j], " " ,time[i]);
sum++;
}
}
}
Print ( "Количество дыр в истории " ,sum, " от даты " ,time[start_pos]);
//--- return value of prev_calculated for next callreturn (rates_total);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Проверка символов с асинхронным возбуждением |//+------------------------------------------------------------------+//| вход |//| symbol - символ |//| count_Bars - необходимое количество баров |//+------------------------------------------------------------------+bool CheckOtherSymbol( string symbol, int bars)
{
datetime ctm[ 1 ];
datetime checktime= TimeCurrent ()-bars* PeriodSeconds ( _Period ); // требуемое времяbool res=true;
// скопируем время требуемого бараif ( CopyTime (symbol, _Period ,checktime, 1 ,ctm)!= 1 ) res=false;
if (!res) Print ( "Нет данных по символу " ,symbol);
//--- вернем результатreturn (res);
}
//+------------------------------------------------------------------+//| Проверка синхронности символов |//+------------------------------------------------------------------+bool CheckTimeOtherSymbol( string symbol, datetime time)
{
datetime ctm[ 1 ];
bool res=false;
//--- скопируем время бараif ( CopyTime (symbol, _Period ,time, 1 ,ctm)== 1 )
{
// сравним его с требуемымif (ctm[ 0 ]==time) res=true;
}
// if(!res) Print("Нет синхронизации по символу ",symbol," time[0]=",ctm[0]," нужно ",time);//--- вернем результатreturn (res);
}
//+------------------------------------------------------------------+
ve ikinci soru: Bu çoklu para birimi göstergesinde kontrol etmediğim başka tuzaklar var mı?
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Belgelerde MqlTradeCheckResult kontrol sonucu yapısı için yanıt kodlarının (Retcode) bir açıklamasını bulamadım. Yapacaklar mı?
Tüm açıklamalar belgelerde bulunmaktadır.
OrderSend işlevine , MqlTradeResult yapısına ve ticari yanıt kodları listesine bakın.
Told - boyutu olmayan boş bir dizi
Tnew[1] - dizinin ötesine geçer, dizi Tnew[1] olarak tanımlanır, bu nedenle dizinin öğelerine yalnızca Tnew[0] olarak erişilebilir, çünkü dizin sıfırdan başlar.
Tüm açıklamalar belgelerde bulunmaktadır.
OrderSend işlevine , MqlTradeResult yapısına ve ticari yanıt kodları listesine bakın.
Sonuç nedir? Bu durumda, Tnew[1] geçersiz bir ifadedir, ancak geçerli midir? Doğru ifade Tnew[0] , Tnew[] veya başka bir şey mi? Uzmanın çalışmasının sonucu Tnew[1],Tnew[0],Tnew[] kullanıldığında değişmiyor gibi görünüyor
Sonuç aynı olamaz, en azından diziden veri mevcut olmayan bir dizinde okunuyorsa. Sizce Tnew[1]'de ne yatıyor?
Hesapta emin değil yazıyor, aralıktan çıkarken uzman bir hata bildirebilir ve devam edebilir. sadece bu durumda Tnew[0]'da ne olacak?
Renat, seni doğru anladıysam dönüş kodları ENUM_TRADE_RETURN_CODES MqlTradeResult yapısı için MqlTradeCheckResult yapısı için de geçerlidir
Evet, tüm ticaret işlevleri alanı için yalnızca bir ticaret hata kodu veritabanı vardır.
Yeni işlevlerin açıklamalarını düzelteceğiz - hemen zamanımız olmadı.
Sonuç aynı olamaz, en azından diziden veri mevcut olmayan bir dizinde okunuyorsa. Sizce Tnew[1]'de ne yatıyor?
Hesapta emin değil yazıyor, aralıktan çıkarken uzman bir hata bildirebilir ve devam edebilir. sadece bu durumda Tnew[0]'da ne olacak?
EA işleminin sonucu, datetime Tnew[ 1 ];Tnew[0];Tnew[]; kullanıldığında değişmez. enstrümanlar" , işlev
çalışmıyor?
Sizce Tnew[1]'de ne yatıyor?
CopyTime'dan sonra(sembol, zaman çerçevesi, 0, 1, Tnew); adres Tnew[1] önceki çubuğun başlangıç zamanını içermelidir.
EA işleminin sonucu, datetime Tnew[ 1 ];Tnew[0];Tnew[]; kullanıldığında değişmez. enstrümanlar" , işlev
çalışmıyor?
Sizce Tnew[1]'de ne yatıyor?
CopyTime'dan sonra(sembol, zaman çerçevesi, 0, 1, Tnew); adres Tnew[1] önceki çubuğun başlangıç zamanını içermelidir.
sırayla alalım
Bu iki satır, biri dinamik - (Told) olan ve ikincisi - (Tnew) olan dizileri bildirir, anladığım kadarıyla yalnızca bir girdi içerir.
Burada dinamik bir dizinin boyutunu değiştirme girişimi var. Dizideki girdilerin sayısının boyuta eşit olduğu varsayılır.
Bu satır, 0 numaralı çubuktan başlayarak bir kaydı (çubuk tarihi) Tnew dizisine kopyalar. Bundan sonra, bu tarih şu şekilde kullanılabilir hale gelir Tnew[0] (çünkü dizi ZERO 'dan numaralandırılmıştır).
Burada, Tnew dizisinin tek girişi, Told dizisinin hücresindeki Number-1 sayısı altındaki girişle karşılaştırılır (numaralandırmanın 0'dan olduğunu unutmayın) .
Bu tarihler eşleşmezse Told dizisinin hücresine Tnew dizisinin değerini yazarız .
Belgelerde MqlTradeCheckResult kontrol sonucu yapısı için yanıt kodlarının (Retcode) bir açıklamasını bulamadım. Yapacaklar mı?
MetaTrader 5\MQL5\Include\ErrorDescription.mqh dosyasında
Bir sorum var. Deliksiz grafik sorunu değerlendiriliyor mu? https://www.mql5.com/ru/forum/100491
Her şeyi senkronize etmek çok zor, göstergede her şeyi hesaba katmaya çalıştım ama bu deliklerle başa çıkmak çok zor
2010.07.19 02:20:12 Kontrol delikleri (EURUSD,M1) Geçmişteki delik sayısı 2010.07.09 21:35:00 tarihinden itibaren 260
2010.07.19 02:20:12 Delikleri kontrol etme (EURUSD,M1) GBPUSD deliği 2010.07.19 00:20:00
2010.07.19 02:20:12 Delikleri kontrol etme (EURUSD,M1) USDJPY deliği 2010.07.19 00:15:00
2010.07.19 02:20:12 Deliklerin kontrol edilmesi (EURUSD,M1) EURGBP deliği 2010.07.16 22:43:00
2010.07.19 02:20:12 Deliklerin kontrol edilmesi (EURUSD,M1) GBPUSD deliği 2010.07.16 22:43:00
2010.07.19 02:20:12 Deliklerin kontrol edilmesi (EURUSD,M1) GBPUSD deliği 2010.07.16 22:38:00
2010.07.19 02:20:12 Deliklerin kontrol edilmesi (EURUSD,M1) Delik AUDUSD 2010.07.16 22:21:00
vb.....
ve ikinci soru: Bu çoklu para birimi göstergesinde kontrol etmediğim başka tuzaklar var mı?