Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1197

 
Alexey Viktorov :

Test cihazında görüntülemek için? Orada. İhtiyacınız olan tüm göstergeleri içeren bir şablon oluşturun ve bir danışman veya isim test cihazı ile kaydedin ve test bu ayarlarla açılacaktır.

Gerçek grafikte ve demo hesap grafiğinde.

 

Selamlar!

Maxim Gutman ile nasıl iletişime geçileceğini bilen var mı?

Trader, otomatik bir ticaret sisteminin geliştiricisi

 
odyn :

Gerçek grafikte ve demo hesap grafiğinde.

Peki, örneğin MACD

Geri kalan her şey aynı.

 

İyi günler, bana pliz'i söyle veya görmem için bir bağlantı gönder

kullanım ömrü belirli bir süreyi aşan açık pozisyonlardan seçim yapma ihtiyacı doğdu.

Pozisyon açılış zamanı ile şimdiki zaman nasıl doğru bir şekilde karşılaştırılır ,,,???

Ben de böyle bir fonksiyon attım ama sonra ne yapacağım aklıma gelmiyor (çok az deneyim var), zaman nasıl karşılaştırılır ???

 //+------------------------------------------------------------------+
bool Selected_Positions_Time_Life( datetime time_life, int &array_base[][observations])
{
int n = 0 ;
int size = ArrayRange (array_base, 0 );

for ( int i= 0 ; i<size; i++)
{
   int index  = Arr_Position[i][ 0 ];
   int ticket = m_position.SelectByIndex(index);
   datetime tl = m_position.Time();
   datetime tc = TimeCurrent ();
 //Вот тут наверное нужно сравнить tl и tc 
 //и если разница превышает time_life, то это наша позиция
}

return (n> 0 );
}
//+------------------------------------------------------------------+
 
Sergey Voytsekhovsky :

İyi günler, bana pliz'i söyle veya görmem için bir bağlantı gönder

kullanım ömrü belirli bir süreyi aşan açık pozisyonlardan seçim yapma ihtiyacı doğdu.

Pozisyon açılış zamanı ile şimdiki zaman nasıl doğru bir şekilde karşılaştırılır ,,,???

Ben de böyle bir fonksiyon attım ama sonra ne yapacağım aklıma gelmiyor (çok az deneyim var), zaman nasıl karşılaştırılır ???

Döngüde bir pozisyon seçin ve biletini alın

 ulong posTicket = PositionGetTicket (i);

Sonraki pozisyon açma zamanını al

 PositionGetInteger ( POSITION_TIME )
ve referans süresi ± ile karşılaştırın.
 
Alexey Viktorov :

Döngüde bir pozisyon seçin ve biletini alın

Sonraki pozisyon açma zamanını al

ve referans süresi ± ile karşılaştırın.

Sadece bu karşılaştırma prosedürünü atın, pliz, pozisyon bileti, açılış zamanı ve sunucu zamanı ile, bir şekilde anladım, karşılaştıramıyorum. Yorumlara baktım, sadece tarihleri aldım.

 
Sergey Voytsekhovsky :

Sadece bu karşılaştırma prosedürünü atın, pliz, pozisyon bileti, açılış zamanı ve sunucu zamanı ile, bir şekilde anladım, karşılaştıramıyorum. Yorumlara baktım, sadece tarihleri aldım.

Bu yüzden tarihleri karşılaştırın. Ancak tutarsızlık dikkate alınmalıdır. Açılma zamanı ile referans zaman arasındaki farkı bir toleransla karşılaştırmak daha iyidir.

 fabs (время_позиции - эталонное_время) < допустимого_отклонения // например 600 секунд
 
Alexey Viktorov :

Bu yüzden tarihleri karşılaştırın. Ancak tutarsızlık dikkate alınmalıdır. Açılma zamanı ile referans zaman arasındaki farkı bir toleransla karşılaştırmak daha iyidir.

Alexey Viktorov :

Bu yüzden tarihleri karşılaştırın. Ancak tutarsızlık dikkate alınmalıdır. Açılma zamanı ile referans zaman arasındaki farkı bir toleransla karşılaştırmak daha iyidir.

Kabul edildi teşekkürler, bilgisayar başına geçer geçmez deneyeceğim (artık cepten).

 

Güzel gün.

Grafikteki dikey çizgileri zamana göre sıralamak istiyorum. Küçük bir senaryo yazdı. Ama sonuç hiç de istediğiniz gibi değil.

Bana nerede hata yaptığımı söyle.

 void OnStart ()
{
int       vlines            = 0 ;
string    vlines_name[];
string    vlines_name_sort[];
datetime tm[];

   vlines = ObjectsTotal ( ChartID (), 0 , OBJ_VLINE );
   if (vlines < 20 * 2 )
   {
       Print ( "вертикальных линий меньше необходимиого. (" ,vlines, " < " , 20 * 2 , ")" );
       return ;
   }
   ArrayResize (vlines_name,vlines);
   ArrayResize (vlines_name_sort,vlines);
   
   for ( int i = 0 ; i < vlines; i++)
   {
      vlines_name[i] = ObjectName ( ChartID (),i, 0 , OBJ_VLINE );
   }
   ArrayPrint (vlines_name);
   
   for ( int i = 0 , n = 0 ; i < 9000 ; i++)
   {
       ArrayFree (tm);
       CopyTime ( Symbol (), Period (),i, 1 ,tm);
      
       for ( int a = 0 ; a < vlines - 1 ; a++)
      {
         datetime tml = ( datetime ) ObjectGetInteger ( ChartID (),vlines_name[a], OBJPROP_TIME );
         if (tml == tm[ 0 ])
         {
            vlines_name_sort[n++] = vlines_name[a];
             break ;
         }
      }
   }
   ArrayPrint (vlines_name_sort);
}

Sonuç:

(GBPUSD,H6)     [ 0 ] "H6 Vertical Line 10771" "H6 Vertical Line 10884" "H6 Vertical Line 12743" "H6 Vertical Line 1371"    "H6 Vertical Line 14306"
(GBPUSD,H6)     [ 5 ] "H6 Vertical Line 16501" "H6 Vertical Line 17907" "H6 Vertical Line 20277" "H6 Vertical Line 23365" "H6 Vertical Line 28358"
(GBPUSD,H6)     [ 10 ] "H6 Vertical Line 28756" "H6 Vertical Line 29445" "H6 Vertical Line 30340" "H6 Vertical Line 31840" "H6 Vertical Line 32885"
(GBPUSD,H6)     [ 15 ] "H6 Vertical Line 33779" "H6 Vertical Line 34048" "H6 Vertical Line 38532" "H6 Vertical Line 38756" "H6 Vertical Line 39075"
(GBPUSD,H6)     [ 20 ] "H6 Vertical Line 39458" "H6 Vertical Line 39649" "H6 Vertical Line 40385" "H6 Vertical Line 41116" "H6 Vertical Line 4150" 
(GBPUSD,H6)     [ 25 ] "H6 Vertical Line 41900" "H6 Vertical Line 42820" "H6 Vertical Line 43071" "H6 Vertical Line 46245" "H6 Vertical Line 48196"
(GBPUSD,H6)     [ 30 ] "H6 Vertical Line 50258" "H6 Vertical Line 50374" "H6 Vertical Line 55171" "H6 Vertical Line 56003" "H6 Vertical Line 56400"
(GBPUSD,H6)     [ 35 ] "H6 Vertical Line 57565" "H6 Vertical Line 59075" "H6 Vertical Line 59881" "H6 Vertical Line 59969" "H6 Vertical Line 63122"
(GBPUSD,H6)     [ 40 ] "H6 Vertical Line 63540" "H6 Vertical Line 63904" "H6 Vertical Line 64359" "H6 Vertical Line 64420" "H6 Vertical Line 65200"
(GBPUSD,H6)     [ 45 ] "H6 Vertical Line 6695"    "H6 Vertical Line 7743"    "H6 Vertical Line 8707"    "H6 Vertical Line 9491"    "H6 Vertical Line 9662" 

(GBPUSD,H6)     [ 0 ] "H6 Vertical Line 46245" "H6 Vertical Line 39075" "H6 Vertical Line 40385" "H6 Vertical Line 55171" "H6 Vertical Line 31840"
(GBPUSD,H6)     [ 5 ] "H6 Vertical Line 63904" "H6 Vertical Line 6695"    "H6 Vertical Line 59075" "H6 Vertical Line 28358" "H6 Vertical Line 10884"
(GBPUSD,H6)     [ 10 ] "H6 Vertical Line 38532" "H6 Vertical Line 29445" "H6 Vertical Line 23365" "H6 Vertical Line 64420" "H6 Vertical Line 7743" 
(GBPUSD,H6)     [ 15 ] "H6 Vertical Line 30340" "H6 Vertical Line 39649" "H6 Vertical Line 38756" "H6 Vertical Line 34048" "H6 Vertical Line 42820"
(GBPUSD,H6)     [ 20 ] "H6 Vertical Line 64359" "H6 Vertical Line 50374" "H6 Vertical Line 14306" "H6 Vertical Line 48196" "H6 Vertical Line 57565"
(GBPUSD,H6)     [ 25 ] "H6 Vertical Line 20277" "H6 Vertical Line 41116" "H6 Vertical Line 12743" "H6 Vertical Line 50258" "H6 Vertical Line 41900"
(GBPUSD,H6)     [ 30 ] "H6 Vertical Line 17907" "H6 Vertical Line 4150"    "H6 Vertical Line 59881" "H6 Vertical Line 56400" "H6 Vertical Line 10771"
(GBPUSD,H6)     [ 35 ] "H6 Vertical Line 63540" "H6 Vertical Line 65200" "H6 Vertical Line 9491"    "H6 Vertical Line 16501" "H6 Vertical Line 63122"
(GBPUSD,H6)     [ 40 ] "H6 Vertical Line 32885" "H6 Vertical Line 1371"    "H6 Vertical Line 33779" null                      null                     
(GBPUSD,H6)     [ 45 ] null                      null                      null                      null                      null                     
 
Сергей Таболин :

Güzel gün.

Grafikteki dikey çizgileri zamana göre sıralamak istiyorum. Küçük bir senaryo yazdı. Ama sonuç hiç de istediğiniz gibi değil.

Bana nerede hata yaptığımı söyle.

Sonuç:

Mantıksal olarak, önce bir dizideki tüm satırları toplamanız gerekir, hemen iki boyutlu bir tane, kuyu veya yapının bir dizisini yapardım, oluşturma süresini ilk boyuta ve satırın adını ikinci boyuta eklerdim. .

Döngüde diziyi tek seferde, döngü dışında dolduruyoruz, doldurduktan sonra diziyi ilk boyutuna göre yani zamana göre sıralıyoruz.

İkinci döngüde sonucu gösteriyoruz.

Sonuç olarak 2 döngü ve aralarında sıralama yapıyoruz.

Sorunu doğru anladıysam bu kadar :)