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

 
forexman77 :

Çok teşekkürler! İşler.

mql5 mantığını açıklayın. mql4'te zamanı saat olarak belirlemek için int Hour() kullanılıyor, anladığım kadarıyla beşte böyle bir sabit yok.

1. Program, saati saat olarak istediğimizi nasıl anlıyor? MqlDateTime'dan tahmin ediyorum?

2. Şimdiki zamanı saat cinsinden şimdiki zamana dakika olarak eklemek, yani şimdiki zamanı dakika olarak bulmak için yapı aşağıdaki gibi olacaktır:

1. Evet

2. Doğru.

 

İkinci gün danışmanı mql 4'ten mql 5'e yeniden çalışıyorum.

1. 01/01/1970 tarihinden itibaren günlük barın açılış saatini saniye cinsinden bulmak gerekmektedir. Bu işlevi forumda buldum:

 //--- переменные для указания параметров функции
int start = 0 ; // индекс бара
int count = 1 ; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime ( _Symbol , PERIOD_D1 ,start,count,tp);
//--- вывод результата
Alert (tp[ 0 ]);

İşlevin son çubuğun veya ilk çubuğun zamanını bulup bulmadığı tam olarak belli değil mi?

İşlem gününün başlangıcında gerekli olan saat, tarih ve saat şeklinde görüntülenir.

2.01.01.1970 tarihinden itibaren ilk sorudaki zaman saniyeye nasıl çevrilir? StringToTime işlevini buldum, ihtiyacı olanı yapıyor gibi görünüyor, ancak çeşitli kombinasyonları denedikten sonra, elmanın kapısını açmak için hangi düğmeye basacağını bilmeyen bir şempanze gibi hissediyorum.

3.   mql 5'te iBarShift , iLow, iLowest işlevleri yoktur. Asıl sorun bunların içinde kodu oluşturmaktır. Her gün belirli bir süre için minimumu nasıl bulacağımı veya bu görevi uygulamak için mql 5'te hangi işlevlerin kullanılması gerektiğini söyleyebilir misiniz?

Документация по MQL5: Преобразование данных / StringToTime
Документация по MQL5: Преобразование данных / StringToTime
  • www.mql5.com
Преобразование данных / StringToTime - Документация по MQL5
 
forexman77 :

İkinci gün danışmanı mql 4'ten mql 5'e yeniden çalışıyorum.

1. 01/01/1970 tarihinden itibaren günlük barın açılış saatini saniye cinsinden bulmak gerekmektedir. Bu işlevi forumda buldum:

2. 01/01/1970 tarihinden itibaren ilk sorudaki süreyi saniyeye nasıl çevirebilirim? StringToTime işlevini buldum, ihtiyacı olanı yapıyor gibi görünüyor, ancak çeşitli kombinasyonları denedikten sonra, elmanın kapısını açmak için hangi düğmeye basacağını bilmeyen bir şempanze gibi hissediyorum.

3.   mql 5'te iBarShift , iLow, iLowest işlevleri yoktur. Asıl sorun bunların içinde kodu oluşturmaktır. Her gün belirli bir süre için minimumu nasıl bulacağımı veya bu görevi uygulamak için mql 5'te hangi işlevlerin kullanılması gerektiğini söyleyebilir misiniz?

1.2. Burada okuyoruz.

3. Burayı okuyun.

 
DC2008 :

1.2. Burada okuyoruz.

3. Burayı okuyun.

İkinci soruda. Her şeyi tarihe göre yeniden okuyun. "datetime türü, 01 Ocak 1970'den bu yana geçen saniye sayısı olarak bir tarih ve saati depolamak için tasarlanmıştır."

Öyleyse, uyarı çağrıldığında, neden saniye sayısı değil, 2013.10.02 00:00:00 görüntülenir.

 
forexman77 :

İkinci soruda. Her şeyi tarihe göre yeniden okuyun. "datetime türü, 01 Ocak 1970'den bu yana geçen saniye sayısı olarak bir tarih ve saati depolamak için tasarlanmıştır."

Öyleyse, uyarı çağrıldığında, neden saniye sayısı değil, 2013.10.02 00:00:00 görüntülenir.

Şimdi burayı okuyun. Bir uyarıda görüntülemek için tarih saat türünü int'ye çevirmeniz gerekir.

 
DC2008 :

Şimdi burayı okuyun. Bir uyarıda görüntülemek için tarih saat türünü int'ye çevirmeniz gerekir.

Şöyle bir tasarım yaptım:

 int start = 0 ; // индекс бара
int count = 1 ; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime ( _Symbol , PERIOD_D1 ,start,count,tp);
//--- вывод результата
int st=tp[ 0 ];
Alert ( "st=" ,st);

metatrader 4 göstergesi ile karşılaştırıldığında, aynı sayı elde edilir.

Sadece şimdi mql5 derlenirken sarı bir mesaj görünüyor:

tür dönüştürme nedeniyle olası veri kaybı

Böyle yapmaya çalıştı:

 int start = 0 ; // индекс бара
int count = 1 ; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime ( _Symbol , PERIOD_D1 ,start,count,tp);
//--- вывод результата
Alert ( IntegerToString (tp[ 0 ]));
Hata yok. Ancak , EA tarafından hesaplamalar için kullanılacağından, değeri uyarı olmadan almak için IntegerToString'i nereye yapıştıracağımı bilmiyorum. Sadece bir dize değeri olacağını anlamadım, yani başka bir sayı ile karşılaştırma olarak kullanmak mümkün olacak mı?
 
forexman77 :

Şöyle bir tasarım yaptım:

metatrader 4 göstergesi ile karşılaştırıldığında, aynı sayı elde edilir.

Sadece şimdi mql5 derlenirken sarı bir mesaj görünüyor:

tür dönüştürme nedeniyle olası veri kaybı

Evet, her şey daha kolay!

 //--- вывод результата
Alert ( "st=" ,( int )tp[ 0 ]);
 

söyle bana, bir zamanlar başka birine abone olmuşsam nasıl bir sinyal oluşturabilirim ?

Onlar. Ben zaten onu takipten çıktım. İmkansız mı?

2 haftadan daha kısa sürede %100 yapıldı ve kimseyle paylaşamıyorum(

 
bu soru da ilginç
 
DC2008 :

Evet, her şey daha kolay!

Yine de, "st" değişkenine yalnızca Alert 'da değil, aynı zamanda hesaplamalar için de ihtiyacım olacak ve derlerken, "tür dönüşümü nedeniyle veri kaybı mümkün" uyarısı beliriyor.

Sanırım 10 basamaklı bir sayı olduğu ve int'de maksimum değer 2 147 483 647 olduğu için şu anda 1 380 758 400 alıyorum. Belki uzun kullanmak mantıklıdır ve muhtemelen danışman çok fazla tüketecektir. Bu kısımda Kaynaklar?

Документация по MQL5: Общие функции / Alert
Документация по MQL5: Общие функции / Alert
  • www.mql5.com
Общие функции / Alert - Документация по MQL5