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ı?
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ı?