Ve MT5'in yeni sürümü ne zaman ve içinde ne beklendiğini nereden öğreneceksiniz? - sayfa 26

 

Kene geçmişinin derinliğini belirlemenin programlı bir yolu var mı?

Bu şekilde denedim:

 void OnStart ()
  {
MqlTick ExTicks[];  
datetime tm= StringToTime ( "1971.01.01 00:00:00" );
//--- вывод результата
ulong m=tm* 1000 ; 
int copied= CopyTicks ( _Symbol ,ExTicks, COPY_TICKS_ALL ,m);
Print ( "Получено тиков: " ,copied, " код ошибки: " , GetLastError ());
 
  }

her zaman 2000 tik alın. Yardımda, zaman belirtilmezse, 2000'den fazla kene iletilmediği yazılır. Milisaniye cinsinden gösterilen süre, saniyenin 1000 ile çarpımıdır.

Yardım ayrıca bunların geçerli oturum için işaretler olduğunu gösterir. Yani, geçmiş verilere erişilemediği ortaya çıktı mı?

 
forexman77 :

Kene geçmişinin derinliğini belirlemenin programlı bir yolu var mı?

Bu şekilde denedim:

her zaman 2000 tik alın. Yardımda, zaman belirtilmezse, 2000'den fazla kene iletilmediği yazılır. Milisaniye cinsinden gösterilen süre, saniyenin 1000 ile çarpımıdır.

Yardım ayrıca bunların geçerli oturum için işaretler olduğunu gösterir. Yani, geçmiş verilere erişilemediği ortaya çıktı mı?

Tüm keneleri almak istiyor musunuz? :)

İlk olarak, bilgisayarınızın bu kadar çok tıklama alıp almayacağını kontrol edin (bilgisayarınız yanarsa, bu benim suçum değil):

 //+------------------------------------------------------------------+
//|                                                CopyTicks_1_02.mq5|
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.031"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
input int   ticks= 200000000000 ;   // количество запрашиваемых тиков
input datetime start= D'1971.01.01 23:59' ; // с какой даты запрашивать тики
//---
MqlTick ExTicks[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//--- запросим тики
   int copied= CopyTicks ( _Symbol ,ExTicks, COPY_TICKS_ALL ,( ulong )start* 1000 ,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask  
   Print ( "Получено тиков: " ,copied, " код ошибки: " , GetLastError ());
   if (copied> 1 )
     {
       Print ( "Тик: " ,ExTicks[ 0 ].time, " bid: " ,ExTicks[ 0 ].bid, " ask: " ,ExTicks[ 0 ].ask, " last: " ,ExTicks[ 0 ].last, " [0]" );
       Print ( "Тик: " ,ExTicks[copied- 1 ].time, " bid: " ,ExTicks[copied- 1 ].bid, " ask: " ,ExTicks[copied- 1 ].ask, " last: " ,ExTicks[copied- 1 ].last, " [" ,copied- 1 , "]" );

       //datetime Start =D'2015.10.16 23:59';   // время наступления 2015 года
       //datetime End   =D'2015.10.19 00:02';   // время наступления 2015 года
       //for(int i=0;i<copied-1;i++)
       //   if(ExTicks[i].time>Start && ExTicks[i].time<End)
       //      Print("Тик: ",ExTicks[i].time," bid: ",ExTicks[i].bid," ask: ",ExTicks[i].ask," last: ",ExTicks[i].last," [i]");
     }
   Print ( "Size " ,(( long )copied* sizeof ( MqlTick ))>> 20 , " Mb" );
  }
//+------------------------------------------------------------------+
Dosyalar:
 
Karputov Vladimir :

Tüm keneleri almak istiyor musunuz? :)

İlk olarak, bilgisayarınızın bu kadar çok tık alıp almayacağını kontrol edin (bilgisayarınız yanarsa, bu benim suçum değil):

Evet, hangi tarihten itibaren veri olduğunu bilmem gerekiyor (yani, hangi tarihten itibaren gerçek keneler üzerinde test yapabilirsiniz).

Ve bir bilgisayarın ne kadarını talep etmesi sorun teşkil etmez? Muhtemelen yakmak için abarttınız, asılması daha olası mı?

 
forexman77 :

Evet, hangi tarihten itibaren veri olduğunu bilmem gerekiyor (yani, hangi tarihten itibaren gerçek keneler üzerinde test yapabilirsiniz).

Ve bir bilgisayarın ne kadarını talep etmesi sorun teşkil etmez? Muhtemelen yakmak için abarttınız, asılması daha olası mı?

"200000000000" yerine "20000" ve tarihi 1971'deki herhangi bir tarihle değiştirin. Bu durumda, komut dosyasını birden fazla kez çalıştırmanız gerekebilir. Gerçek şu ki, ilk istekte, tüm geçmişin indirilmesi başlatılır (sonuçta, geçmiş 1971'den beri sipariş edilmiştir) ve komut dosyası uzun süre yanıt vermezse, mevcut veriler verilecektir. , ancak indirme daha da ileri gidecek. Bu nedenle, ikinci sorgu daha derin bir geçmiş gösterebilir.
 
forexman77 :

Kene geçmişinin derinliğini belirlemenin programlı bir yolu var mı?

Bu şekilde denedim:

her zaman 2000 tik alın. Yardımda, zaman belirtilmezse, 2000'den fazla kene iletilmediği yazılır. Milisaniye cinsinden gösterilen süre, saniyenin 1000 ile çarpımıdır.

Yardım ayrıca bunların geçerli oturum için işaretler olduğunu gösterir. Yani, geçmiş verilere erişilemediği ortaya çıktı mı?

INT_MAX'tan fazla varsa, bir sembol için tüm onayları alamayacaksınız, çünkü dönüş değeri

Fonksiyonlar CopyTicks - tamsayı. Bu nedenle, onları parçalar halinde almanız gerekir.

 
prostotrader :

INT_MAX'tan fazla varsa, bir sembol için tüm onayları alamayacaksınız, çünkü dönüş değeri

Fonksiyonlar CopyTicks - tamsayı. Bu nedenle, onları parçalar halinde almanız gerekir.

Ancak, yalnızca 20.000 (yirmi bin) tik talep ederek kenelerin başlangıç tarihini öğrenebilirsiniz - ana şey, bu tarihte kene olmadığını garanti eden başlangıç tarihini belirtmektir ve 1971 bunun için en uygunudur.
 
Karputov Vladimir :
Ancak, yalnızca 20.000 (yirmi bin) tik talep ederek kenelerin başlangıç tarihini öğrenebilirsiniz - ana şey, bu tarihte kene olmadığını garanti eden başlangıç tarihini belirtmektir ve 1971 bunun için en uygunudur.

Çok fazla veri istedim, gerçekten güçlü bir fren başladı:

 2016.08 . 21 22 : 24 : 03.918 CopyTicks (EURUSD,H1)   Size 2826 Mb
2016.08 . 21 22 : 24 : 03.918 CopyTicks (EURUSD,H1)   Тик: 2016.05 . 25 16 : 54 : 25 bid: 1.11497 ask: 1.11505 last: 0.0 [ 56999999 ]
2016.08 . 21 22 : 24 : 03.918 CopyTicks (EURUSD,H1)   Тик: 2016.01 . 13 09 : 45 : 44 bid: 1.08206 ask: 1.08236 last: 0.0 [ 0 ]
2016.08 . 21 22 : 24 : 03.903 CopyTicks (EURUSD,H1)   Получено тиков: 57000000 код ошибки: 0

Görevim için 100 tik bile yeterli. Genel olarak, teşekkürler!

 2016.08 . 21 22 : 36 : 42.234 CopyTicks (EURUSD,H1)   Size 0 Mb
2016.08 . 21 22 : 36 : 42.234 CopyTicks (EURUSD,H1)   Тик: 2016.01 . 13 09 : 46 : 01 bid: 1.08206 ask: 1.08236 last: 1.08215 [ 99 ]
2016.08 . 21 22 : 36 : 42.234 CopyTicks (EURUSD,H1)   Тик: 2016.01 . 13 09 : 45 : 44 bid: 1.08206 ask: 1.08236 last: 0.0 [ 0 ]
2016.08 . 21 22 : 36 : 42.234 CopyTicks (EURUSD,H1)   Получено тиков: 100 код ошибки: 0
 
Renat Fatkhullin :
Evet, özel grafikler ve kendi veri beslemeleri yakında kullanıma sunulacak.

Merhaba Renat, bu özelliklerle ilgili herhangi bir güncelleme var mı? (başka yerde bulamadıysam kusura bakmayın).

Merhaba Renat, bu özelliklerden haber var mı? (Bu zaten bir yerde varsa özür dilerim, bulamadım).