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

 
Karputov Vladimir :

Bu yüzden hemen böyle bir İstek Listesi belirlemeniz gerekiyor :).

Durum şu şekildedir - grafikte bir çubuk varsa , gösterge arabelleğindeki bir hücre buna karşılık gelir. Siz bu hücreye bir şey yazana kadar çöpler bu hücrede depolanacaktır.

Ve neden MT4'te çöp değil, ancak bu çubuğun altındaki göstergeyi göstermiyor?
 
Aleksey Lebedev :

Tam sayıları bölerken (int, long, datetime, vb.), sonuç bir tamsayıdır, yani. kalan atılır. Bugün 00:00 ve dün 23:59:59 aradaki fark 1 gün olacaktır.

İlk olarak, bu böyle değil - göstergede deneysel olarak kanıtlanmıştır.

İkincisi, nasıl sonuçlanacak 1 - başlangıçta saniyeler içinde bir hesaplamamız olduğu gerçeğini dikkate alarak matematiksel olarak gösterin.

 
Alexey Kozitsyn :
Aynı şekilde, basit türlerin geçersiz kılınması gibi. Onlara 0 değerini atayarak. Gerekli alanlara 0 değerleri atanır atanmaz, StructToTime() ters işlemini kullanın.

Sıfırlandı:

MqlDateTime str1;
datetime  Open_timePos=iTime(_Symbol,0,pos);
TimeToStruct(Open_timePos,str1);
   str1.hour=0;
   str1.min=0;
   str1.sec=0;
datetime  start_time=StructToTime(str1);
Print("день=",TimeToStr(start_time));

Her şey yolunda gitti!
 

Aleksey Lebedev :
При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.

-Aleks- :

İlk olarak, bu böyle değil - göstergede deneysel olarak kanıtlanmıştır.

Temelleri sorgulamaya gerek yok

-Aleks- :

İkincisi, nasıl sonuçlanacak 1 - başlangıçta saniyeler içinde bir hesaplamamız olduğu gerçeğini dikkate alarak matematiksel olarak gösterin.

 datetime today= D'2016.03.09 00:00:00' ;
datetime yesterday= D'2016.03.08 23:59:59' ;
Print ( "today=" , 86400 *(today/ 86400 ), " value=" , int (today));
Print ( "yesterday=" , 86400 *(yesterday/ 86400 ), " value=" , int (yesterday));
Print ( "разница в днях = " , int (today/ 86400 -yesterday/ 86400 ));

Anlaşılması daha kolaysa yapı dönüştürmeyi kullanın.

 
Aleksey Lebedev :

Temelleri sorgulamaya gerek yok

Anlaşılması daha kolaysa yapı dönüştürmeyi kullanın.

Anladığını anlıyor. Kodunuzu çalıştırmayı denemedim, ancak sanırım bunu kendiniz yaptınız, bu yüzden bana bunun nasıl olduğunu makul olmadığını açıklayın:

86401/86400-86400/86400, matematik kurallarına göre 1.000012-1=0.000012 ise 1'e eşittir ve int bir tamsayıya yuvarlanmalıdır, yani. 0.

 
-Aleks- :

Anladığını anlıyor. Kodunuzu çalıştırmayı denemedim, ancak sanırım bunu kendiniz yaptınız, bu yüzden bana bunun nasıl olduğunu makul olmadığını açıklayın:

86401/86400-86400/86400, matematik kurallarına göre 1.000012-1=0.000012 ise 1'e eşittir ve int bir tamsayıya yuvarlanmalıdır, yani. 0.

ama çalıştırın)

00:00:00'da günün başlangıcı kalansız 86400'e bölünür, önceki en az 1 saniye daha azdır. Yuvarlatılmış - tüm ifade değil, bölümün geri kalanı atılır.

86400/86400=1

86399/86400=0

 
Aleksey Lebedev :

ama çalıştırın)

00:00:00'da günün başlangıcı kalansız 86400'e bölünür, önceki en az 1 saniye daha azdır. Yuvarlatılmış - tüm ifade değil, bölümün geri kalanı atılır.

86400/86400=1

86399/86400=0

bu beni o kadar şaşırttı ki, ifadenin içinde bir tür yuvarlama meydana geldi - bir değişkene değer atarken virgülden sonraki değerin atıldığını düşündüm.
 
Çocuklar! Grafikte bir göstergeyi programlı olarak görüntülemek mümkün müdür? Yoksa sadece eller mi?
 
Vladimir Tkach :
Çocuklar! Göstergeyi çizelgede programlı olarak görüntülemek mümkün müdür? Yoksa sadece eller mi?
https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd yapabilirsiniz.
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
mql5'te ve mql4'te mi?