Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 21

 
bablusut :

Cevabınız için teşekkürler... bu nedenle, işlem geçmişindeki siparişleri yinelemek için, ihtiyacımız olmayan her şeyi attıktan sonra görünen OrdersHistoryTotal işlevini kullanıyoruz:

for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) // - buradaki soru, bıraktığımız fonksiyon şablonunda " acTotal" ne anlama geliyor? ve neden " i--" aldın ve şablondaki gibi " i++" değil mi?
- ikinci işlev OrderComment , önceki OrdersHistoryTotal işlevi tarafından seçilirse, seçilen siparişin yorumunu döndürür:

if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) //- önceki fonksiyondan " i " " i>= 0 " ise ve " SELECT_BY_TICKET" " SELECT_BY_POS " ile değiştirilip " MODE_HISTOR Y " eklendi - neden öyle?

- üçüncü satır tanımdır, gerekli emrin doğrulanması prensipte gerekli değildir, çünkü bu tarihte sadece TP tarafından kapatılan piyasa emirleri. ve SL, ( bekleyen kapalı bir emir olabilir, ancak bu nadir olacaktır), diğer tüm emir parametreleri bizim için önemli değildir. Bir başka önemli şey daha var - tarihteki kapatılan siparişlerin sayısı sürekli artacak, bunu yeniden hesaplarken tüm kapatılan siparişlerin alınmayacağı, ancak son siparişlerin belirli bir sayısının, örneğin 5 - 10 olacağı şekilde yapmak mümkün mü?

- son dört satır genellikle anlaşılabilir, tek soru, kodu her satırdan sonra eklenmesi gereken PlaySound işlevidir " Yazdır ( "..." bu biçimde:  



OrderComment , önceki fonksiyon OrdersHistoryTotal tarafından seçilirse seçilen emrin yorumunu döndürür - bu fonksiyon hiçbir şey seçmez - toplam kapatılan ve silinen emir sayısını döndürür ( Cari hesap geçmişinde yüklenen kapatılan ve silinen emirlerin sayısı istemci terminali. Geçmiş listesinin boyutu, terminalin mevcut ayarlar sekmesi "Hesap geçmişi"ne bağlıdır. Ders kitabından alıntı.)


eğitim örneğinde accTotal:

int i,accTotal= OrdersHistoryTotal (); - Bu, OrdersHistoryTotal değerini alan bir int değişkenidir.
for (i=0;i<accTotal;i++) // Geçmiş listesinde nasıl döngü yapılır, birinciden son sıraya veya tam tersi önemli değil, tüm liste hala sırayla yineleniyor.

Ancak önceki durumda 1 daha az değişken vardır, ancak OrdersHistoryTotal isteği her döngüde işlenir.

SELECT_BY_POS - dizin parametresi listedeki sipariş numarasını içerir, listenin kendisi ikinci operatördür - MODE_HISTORY kapalı olanların listesi, MODE_TRADES - açık veya bekleyenler.
SELECT_BY_TICKET - bilet numarası indeks parametresinde iletilir. Hangi, bir sipariş seçmeden önce bir yere gitmeniz gerekir.


- son dört satır genellikle anlaşılabilir, tek soru, kodu her satırdan sonra eklenmesi gereken PlaySound işlevidir " Yazdır ( "..." bu biçimde:  

bool PlaySound(

string ödeme // dosya adı

);

... yoksa o da bir şekilde dönüştürülmüş mü?

duyuru bool PlaySound( program başlığında - set dosyasında sesi açıp kapatma olanağına sahip olacaksınız extern bool Play = TRUE;

sonra, Baskı ne yazdıracak? Ve hangi koşulda?

Bu eylemin anlamı nedir? Bir siparişi kapatırken bir ses çalın ve bir yorum yazın (TP veya SL ile)?






 
bablusut :
Yardım için Vitalie Postolache'ye teşekkürler, tavsiye için teşekkürler ve muhtemelen altmışlarımda bu ders kitaplarıyla ilgili bilgileri incelemek için çok geç, muhtemelen o kadar çekmem, daha önce yapmak zorunda kaldım, ama vardı. zaman yok. Burada senden oldukça sıkıldım, eğer bir şey olursa özür dilerim, artık olmayacağım - aynen böyle ayrılıyorum.
Ayrı bir konu oluşturmak daha iyi, şöyle ve böyle, böyle çalışmasını istiyorum. Örneğin, farklı seçenekler görmek ve bunlardan hangisinin mantık açısından daha doğru olduğunu bulmak benim için ilginç olacak.
 

Bu arada benim de bir sorum olacak.

Bir yayılma kontrolü yazmanız gerekir.

Sadece değeri için bir istek ve bir sipariş açma yasağı kullandım - eğer spread belirtilen değerden büyükse.

Ama böyle çıktı - spread düşüşü sırasında - danışman bir emir açar ve spread artar.

Şimdi bunu nasıl doğru bir şekilde hesaba katacağımı bulamıyorum: Eğer diziye her bir tik yazılırsa, dizi ne kadar büyük olacak? Yine, ne kadar sürecek?

Tabii ki, benzer değerler yazamazsınız veya sadece daha küçük ve daha büyük olanları alamazsınız, ancak daha sonra bir şekilde sıfırlamanız gerekir.

Ve en önemlisi, anlayamıyorum, minimum ve maksimum yayılımı veya sıçramalarının bir işaretini dikkate almam gerekiyor.
 
struct MqlRates
  {
   datetime time;         // время начала периода
   double    open;         // цена открытия
   double    high;         // наивысшая цена за период
   double    low;           // наименьшая цена за период
   double    close;         // цена закрытия
   long      tick_volume;   // тиковый объем
   int       spread;       // спред
   long      real_volume;   // биржевой объем
  };
Komut istemi, hangi Spread değeri kaydedilecek? Barın açılışının başlangıcındaki durum?
 
A1exPit :
struct MqlRates
  {
   datetime time;         // время начала периода
   double    open;         // цена открытия
   double    high;         // наивысшая цена за период
   double    low;           // наименьшая цена за период
   double    close;         // цена закрытия
   long      tick_volume;   // тиковый объем
   int       spread;       // спред
   long      real_volume;   // биржевой объем
  };
Komut istemi, hangi Spread değeri kaydedilecek? Barın açılışının başlangıcındaki durum?

int yayılma; // yayılmış

yani hayır

 
A1exPit :
struct MqlRates
  {
   datetime time;         // время начала периода
   double    open;         // цена открытия
   double    high;         // наивысшая цена за период
   double    low;           // наименьшая цена за период
   double    close;         // цена закрытия
   long      tick_volume;   // тиковый объем
   int       spread;       // спред
   long      real_volume;   // биржевой объем
  };
Komut istemi, hangi Spread değeri kaydedilecek? Barın açılışının başlangıcındaki durum?
Mevcut çubuğu talep ederseniz - o zaman mevcut spread, eğer geçmişten geliyorsa - o zaman kapanış anında.
 
Vitalie Postolache :
Mevcut çubuğu talep ederseniz - o zaman mevcut spread, eğer geçmişten geliyorsa - o zaman kapanış anında.
Teşekkür ederim.
 

Bir diziye veri yazabilmek için her hücreye kendi değerinin atanması gerektiğini doğru anlıyorum dizi1[i] = x; belirli bir hücre numarasını gösteren

veya diziyi sırayla i=0'dan itibaren doldurmak mümkün mü?

 
A1exPit :

Bir diziye veri yazmak için her hücreye kendi değerinin atanması gerektiğini doğru anlıyorum dizi1[i] = x; belirli bir hücre numarasını gösteren

veya diziyi sırayla i=0'dan itibaren doldurmak mümkün mü?

fark ne? Bence bu sadece iki farklı yol.
 
Renat Akhtyamov :
fark ne? Bence bu sadece iki farklı yol.
Bir diziye veri aktarırken sırayla kendisini dolduracağını kastetmiştim, yani. dizi1[] = x; hücre numarası doğrudan belirtilmezse x değeri hangi hücreye yazılır?