Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 21
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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)?
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.
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.{
datetime time; // время начала периода
double open; // цена открытия
double high; // наивысшая цена за период
double low; // наименьшая цена за период
double close; // цена закрытия
long tick_volume; // тиковый объем
int spread; // спред
long real_volume; // биржевой объем
};
{
datetime time; // время начала периода
double open; // цена открытия
double high; // наивысшая цена за период
double low; // наименьшая цена за период
double close; // цена закрытия
long tick_volume; // тиковый объем
int spread; // спред
long real_volume; // биржевой объем
};
int yayılma; // yayılmış
yani hayır
{
datetime time; // время начала периода
double open; // цена открытия
double high; // наивысшая цена за период
double low; // наименьшая цена за период
double close; // цена закрытия
long tick_volume; // тиковый объем
int spread; // спред
long real_volume; // биржевой объем
};
Mevcut çubuğu talep ederseniz - o zaman mevcut spread, eğer geçmişten geliyorsa - o zaman kapanış anında.
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ü?
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.