Escapee : ; Komut dosyasının, bir emir açarken, mevcut finansal araç için sunucudaki olası minimum durdurma kaybını otomatik olarak ayarlaması gerekir. Buraya ne yazılmalı? OrderSend(Symbol(),OP_BUY,0.01,Sor,10,?,0);
Bekleyen bir emir verirken açılış fiyatı piyasaya çok yakın olamaz. Bekleyen fiyatın mevcut piyasa fiyatından puan cinsinden minimum mesafesi de MODE_STOPLEVEL parametresi ile MarketInfo() işlevi kullanılarak elde edilebilir. Bekleyen bir emrin açılış fiyatının yanlış olması durumunda 130 hatası (ERR_INVALID_STOPS) üretilir.
В документации есть 2 момента касательно индикаторов.
Özel sabitlerde bunlar:
" Indicator_buffers Göstergeyi hesaplamak için maksimum 8'e kadar arabellek sayısı
Özel göstergeler bölümünde:
" Özel bir göstergeyi hesaplamak için kullanılan arabellekler için bellek ayırır. Tampon sayısı 8'i geçemez ve gösterge_buffers özelliğinde belirtilen değerden az olamaz. Özel bir gösterge saymak için ek arabellek gerektiriyorsa, toplam sayısını belirtmek için bu işlevi kullanın. tamponlar."
Arabellek sayısı belirtilirse, bence bu zaten arabellekler için bellek ayırmak anlamına gelir. Bunun başka bir anlamı varsa düzeltin lütfen.
Güzel gün. Dosya işaretçisi hakkında bir soru... MQL4'te bulunan MQL 4 hakkındaki kitapta. "Standart İşlevler " bölümünde, "Dosya İşlemleri" bölümünde, bir dosyadan veri okumak ve bir sembol penceresinde grafik nesneleri görüntülemek için tasarlanmış timetablenews.mq4 komut dosyasının bir örneği vardır:
//--------------------------------------------------------------------// timetablenews.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
Stl; // Стиль вертикальной линииstring File_Name= "News.csv" , // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)color Col; // Цвет вертикальной линии//--------------------------------------------------------------- 3 --
Handle= FileOpen (File_Name, FILE_CSV | FILE_READ , ";" ); // Открытие файлаif (Handle< 0 ) // Неудача при открытии файла
{
if ( GetLastError ()== 4103 ) // Если файла не существует,..Alert ( "Нет файла с именем " ,File_Name); //.. извещаем трейдера else// При любой другой ошибке..Alert ( "Ошибка при открытии файла " ,File_Name); //..такое сообщPlaySound ( "Bzrrr.wav" ); // Звуковое сопровождениеreturn ; // Выход из start()
}
//--------------------------------------------------------------- 4 --while ( FileIsEnding (Handle)==false) // До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm = FileReadString (Handle); // Дата и время события(дата)
Text = FileReadString (Handle); // Текст описания событияif ( FileIsEnding (Handle)==true) // Файловый указатель в концеbreak ; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm = StrToTime (Str_DtTm); // Преобразование типа данных
Instr = StringSubstr (Text, 0 , 3 ); // Извлекаем первые 3 символа
One= StringSubstr ( Symbol (), 0 , 3 ); // Извлекаем первые 3 символа
Two= StringSubstr ( Symbol (), 3 , 3 ); // Извлекаем вторые 3 символа
Stl= STYLE_DOT ; // Для всех - стиль пунктир
Col= DarkOrange ; // Для всех - цвет такойif (Instr==One || Instr==Two) // А для событий по нашему ..
{ // .. финансовому инструменту..
Stl= STYLE_SOLID ; // .. такой стиль..
Col= Red ; // .. и такой цвет верт. линии
}
//--------------------------------------------------------- 7 --
Obj_Name= "News_Line " +Str_DtTm; // Имя объектаObjectCreate (Obj_Name, OBJ_VLINE , 0 ,Dat_DtTm, 0 ); //Создаем объект..ObjectSet (Obj_Name, OBJPROP_COLOR , Col); // ..и его цвет,..ObjectSet (Obj_Name, OBJPROP_STYLE , Stl); // ..стиль..ObjectSetText (Obj_Name,Text, 10 ); // ..и описание
}
//--------------------------------------------------------------- 8 --FileClose ( Handle ); // Закрываем файлPlaySound ( "bulk.wav" ); // Звуковое сопровождениеWindowRedraw (); // Перерисовываем объектыreturn ; // Выход из start()
}
//--------------------------------------------------------------- 9 --
Aşağıda, MQL 4 Kitabında bu komut dosyası analiz edilirken şu ifade verilmektedir: " Belirtilen kontrol (5. ancak bundan sonra while döngüsü sonlandırma koşulu çalışacak ve kontrol 8-9 "bloğa aktarılacaktır.
Doğru mu anladım???... Dosya işaretçisi METİN KARAKTERLERİ ARASINDA DEĞİLDİR (örn: tek | st, burada|bir dosya işaretçisidir), ancak AYRIŞTIRMALI bir işaretçidir, örneğin: te k st , burada k , dosya işaretçisi tarafından vurgulanan " k " karakteridir. Bu, hatların varlığının gerekliliğini açıklar (bkz. s. 164):
if (FileIsEnding(Handle)== true ) // Файловый указатель в концеbreak ; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Gerçekten. Sondan bir önceki yinelemede, LAST nesnesinin oluşturulmasından sonra
(burada o , dosya işaretçisi tarafından vurgulanan " o " sembolüdür). Ardından, while ifadesinin başına denetimi aktarırken, FileIsEnding(handle) işlevi açıkçatrue değerini döndürür ,çünkü dosya işaretçisi dosyanın SONUNDA DEĞİL, o dosyanın SON KARAKTERİNDEDİR. Ardından, ilk iki satır yürütüldüğünde, dosya işaretçisi BOŞ'a hareket edecek ve satır yoksa
if (FileIsEnding(Handle)== true ) // Файловый указатель в концеbreak ; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
komut dosyası, boş bir açıklama ve 0'a karşılık gelen bir zaman koordinatıyla bir grafik (yani bir satır) oluşturacaktır. " Belirtilen kontrol (blok 5-6'daki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulacaktır. " ifadesinde kastedilen budur.
Soru : Doğru mu anladım:
a) bir dosya işaretçisinin tanımlanması;
b) " ifadesinin anlamı, eğer belirtilen kontrol (5. bloktaki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulacaktır. Ve ancak bundan sonra while döngüsü sonlandırma koşulu olacaktır. iş ve kontrol 8-9 bloğa aktarılacak "
P.S. forumu kirletmemek adına şimdiden teşekkürler
Lütfen söyle bana, hiç deneyimim yok, eğer iki tik arasında programım sunucuya birkaç komut gönderirse, hepsi mi yürütülecek yoksa sadece ilk komut mu? Bu konu hakkında nereden bilgi bulabilirsiniz?
Lütfen söyle bana, hiç deneyimim yok, eğer iki tik arasında programım sunucuya birkaç komut gönderirse, hepsi mi yürütülecek yoksa sadece ilk komut mu? Bu konu hakkında nereden bilgi bulabilirsiniz?
Merhaba! MQL4'teki göstergelerle ilgili bir soru hakkında endişeliyim ve tam olarak anlayamıyorum... Örneğin, basit bir fraktal gösterge var:
Bu formda derlenirse, grafiğin sol kenarını genişletirken ve geçmişi yüklerken, başarısız olmaya başlar ve olmaması gereken yerlerde işaretler gösterir (ekteki ekran görüntüsüne bakın). Kodun bir kısmını yorumlarsanız:
Sonra bu tür aksaklıklar ortadan kalkar... gösterge dizisinin yalnızca "boş olmayan" öğeleri doldurulursa ve etiketin olmadığı yerde gösterge değeri sıfıra ayarlanmadıysa, geçmiş yüklendiğinde aynı hatalar görünür...
Bu neden oluyor? Görünüşe göre, geçmişi yüklerken tüm göstergeyi yeniden hesaplamak gerekli mi? Ve neden "boş" öğelerin değerlerini geçersiz kılmak gerekli? sıralamak?
Çubuklar soldan sağa indekslenirse, geçmiş yüklenirken, çubuk indeksleri değişecek ve yeniden hesaplama yapılmadan gösterge yanlış görüntülenecekti, o zaman böyle bir aksaklık anlaşılabilirdi… Ama MT4'te çubuklar indekslenir. sağdan sola, yani geçmişi yüklerken, bu çubukların endeksleri , olan, aynı kalmalıydı (ve gösterge değerleri de), o zaman göstergeyi neden yeniden hesapla ve bu etiket kaymaları nereden geliyor?
Geçmişi yüklerken neden tüm göstergeyi yeniden hesaplamak gerekiyor? Ve neden "boş" öğelerin değerlerini geçersiz kılmak gerekli? sıralamak? Ve bu yapılmazsa, göstergeler yanlış görüntüleniyor ...
Lütfen bana 1 değeri ve zaten yeniden çizilen gösterge değerini ayrı bir göstergede yeniden çizilen 2 satır şeklinde nasıl göstereceğimi söyleyin? Anlayamıyorum, sürekli en son yeniden çizilen değeri gösteriyor.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Komut dosyasının, bir emir açarken, mevcut finansal araç için sunucudaki olası minimum durdurma kaybını otomatik olarak ayarlaması gerekir. Buraya ne yazılmalı? OrderSend(Symbol(),OP_BUY,0.01,Sor,10, ? ,0);
Okuma
В документации есть 2 момента касательно индикаторов.
Özel sabitlerde bunlar:
" Indicator_buffers Göstergeyi hesaplamak için maksimum 8'e kadar arabellek sayısı
Özel göstergeler bölümünde:
" Özel bir göstergeyi hesaplamak için kullanılan arabellekler için bellek ayırır. Tampon sayısı 8'i geçemez ve gösterge_buffers özelliğinde belirtilen değerden az olamaz. Özel bir gösterge saymak için ek arabellek gerektiriyorsa, toplam sayısını belirtmek için bu işlevi kullanın. tamponlar."
Arabellek sayısı belirtilirse, bence bu zaten arabellekler için bellek ayırmak anlamına gelir. Bunun başka bir anlamı varsa düzeltin lütfen.
Güzel gün. Dosya işaretçisi hakkında bir soru... MQL4'te bulunan MQL 4 hakkındaki kitapta. "Standart İşlevler " bölümünde, "Dosya İşlemleri" bölümünde, bir dosyadan veri okumak ve bir sembol penceresinde grafik nesneleri görüntülemek için tasarlanmış timetablenews.mq4 komut dosyasının bir örneği vardır:
Aşağıda, MQL 4 Kitabında bu komut dosyası analiz edilirken şu ifade verilmektedir: " Belirtilen kontrol (5. ancak bundan sonra while döngüsü sonlandırma koşulu çalışacak ve kontrol 8-9 "bloğa aktarılacaktır.
Doğru mu anladım???... Dosya işaretçisi METİN KARAKTERLERİ ARASINDA DEĞİLDİR (örn: tek | st , burada | bir dosya işaretçisidir), ancak AYRIŞTIRMALI bir işaretçidir, örneğin: te k st , burada k , dosya işaretçisi tarafından vurgulanan " k " karakteridir. Bu, hatların varlığının gerekliliğini açıklar (bkz. s. 164):
Gerçekten. Sondan bir önceki yinelemede, LAST nesnesinin oluşturulmasından sonra
2007.05.11 18:30; JPY Endüstriyel üretim
dosya işaretçisi son nesnenin konumundadır, yani:
2007.05.11 18:30; JPY Endüstriyel üretim
(burada o , dosya işaretçisi tarafından vurgulanan " o " sembolüdür). Ardından, while ifadesinin başına denetimi aktarırken, FileIsEnding ( handle ) işlevi açıkça true değerini döndürür , çünkü dosya işaretçisi dosyanın SONUNDA DEĞİL, o dosyanın SON KARAKTERİNDEDİR. Ardından, ilk iki satır yürütüldüğünde, dosya işaretçisi BOŞ'a hareket edecek ve satır yoksa
komut dosyası, boş bir açıklama ve 0'a karşılık gelen bir zaman koordinatıyla bir grafik (yani bir satır) oluşturacaktır. " Belirtilen kontrol (blok 5-6'daki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulacaktır. " ifadesinde kastedilen budur.
Soru : Doğru mu anladım:
a) bir dosya işaretçisinin tanımlanması;
b) " ifadesinin anlamı, eğer belirtilen kontrol (5. bloktaki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulacaktır. Ve ancak bundan sonra while döngüsü sonlandırma koşulu olacaktır. iş ve kontrol 8-9 bloğa aktarılacak "
P. S. forumu kirletmemek adına şimdiden teşekkürler
Lütfen söyle bana, hiç deneyimim yok, eğer iki tik arasında programım sunucuya birkaç komut gönderirse, hepsi mi yürütülecek yoksa sadece ilk komut mu? Bu konu hakkında nereden bilgi bulabilirsiniz?
Lütfen söyle bana, hiç deneyimim yok, eğer iki tik arasında programım sunucuya birkaç komut gönderirse, hepsi mi yürütülecek yoksa sadece ilk komut mu? Bu konu hakkında nereden bilgi bulabilirsiniz?
Okuma:
https://book.mql4.com/ru/basics/common
Okuma:
https://book.mql4.com/ru/basics/common
Merhaba! MQL4'teki göstergelerle ilgili bir soru hakkında endişeliyim ve tam olarak anlayamıyorum... Örneğin, basit bir fraktal gösterge var:
Bu formda derlenirse, grafiğin sol kenarını genişletirken ve geçmişi yüklerken, başarısız olmaya başlar ve olmaması gereken yerlerde işaretler gösterir (ekteki ekran görüntüsüne bakın). Kodun bir kısmını yorumlarsanız:
Sonra bu tür aksaklıklar ortadan kalkar... gösterge dizisinin yalnızca "boş olmayan" öğeleri doldurulursa ve etiketin olmadığı yerde gösterge değeri sıfıra ayarlanmadıysa, geçmiş yüklendiğinde aynı hatalar görünür...
Bu neden oluyor? Görünüşe göre, geçmişi yüklerken tüm göstergeyi yeniden hesaplamak gerekli mi? Ve neden "boş" öğelerin değerlerini geçersiz kılmak gerekli? sıralamak?
Çubuklar soldan sağa indekslenirse, geçmiş yüklenirken, çubuk indeksleri değişecek ve yeniden hesaplama yapılmadan gösterge yanlış görüntülenecekti, o zaman böyle bir aksaklık anlaşılabilirdi… Ama MT4'te çubuklar indekslenir. sağdan sola, yani geçmişi yüklerken, bu çubukların endeksleri , olan, aynı kalmalıydı (ve gösterge değerleri de), o zaman göstergeyi neden yeniden hesapla ve bu etiket kaymaları nereden geliyor?
Geçmişi yüklerken neden tüm göstergeyi yeniden hesaplamak gerekiyor? Ve neden "boş" öğelerin değerlerini geçersiz kılmak gerekli? sıralamak? Ve bu yapılmazsa, göstergeler yanlış görüntüleniyor ...
GöstergeBuffers , kullanımdaki toplam arabellek sayısını gösterir.
Misal.
#özellik göstergesi_tamponları 2
................................................................................
Gösterge Tamponları 3
İki satır çiziyoruz, üçüncü arabellek görüntülenmiyor, ancak ara hesaplamalar için kullanılıyor.