Zhunko : Bir grafik açıldığında ve güncellendiğinde, sunucuya yeni veriler için bir istek gönderilir. Bazı açgözlü DC'ler, paralarını daha güçlü sunucularda ve daha geniş bir kanalda değil, ceplerine koymayı tercih ediyor. Zayıf sunucunun "askıda kalmaması" için terminalden gelen istek sayısını sınırlamaları gerekir. MRC'nin günde yalnızca 2000 isteği vardır. Bu, ticaret taleplerini hesaba katmadan, TF'lerin sayısı ile çarpılan enstrümanlarının sayısından 10 kat daha azdır.
Bu, bu tür mutfaklardan kaçınmanız gerektiği anlamına gelir. MRC hakkında, ilk defa bir olumsuzluk duyuyorum, bileceğim. Burada, yalnızca terminali veya aynı şeyi açıklığa kavuşturmak için kalır, işlevler de (ticaret hariç) sunucuya erişir. Bu soruyu destek olarak sordum (yukarıda bunun hakkında zaten yazdım, henüz cevap vermediler). Sadece değilse, o zaman her şey yerine oturur ve yalnızca terminal ise, genellikle terminalin başlatılması saçmadır ve teklifleri güncellemek için sunucuyla iletişim kurarsa, ticaret yapmadan sınırı aşacaktır. Bence bu yeterli değil ve yine de Victor'un dediği gibi ticaret dışında işlevler sunucuya erişmiyor.
Zhunko :
MQL4'teki eklemeler, kodu düzenlemeye yardımcı olur. Örneğin, göstergem 3000 satır için böyle görünüyor.
Gerçek şu ki, kütüphaneleri gördüm ve belgelerde de genellikle global değişkenlerin bildirildiği kodun en üstünde include bildirdikleri söyleniyor. Eğer içermelerde fonksiyonlar varsa, o zaman global değişkenlerin bildirildiği yerde, o yere dahil edilmesinin bir sonucu olarak aslında bir fonksiyonun olacağını ve bir seçenek olarak, bir şekilde değişkenlerin bir şekilde olacağını hayal etmek bence garip. . Kodlar böyle yazılmaz. Expert Advisor'da kullanılan değişkenler ve harici kullanıcı değişkenleri en üstte bildirilmişse, kimse bunların yanına işlev koymaz! Ancak, işlevlerin bulunduğu içerme yerleştirilir ve bu, anladığım kadarıyla normal kabul edilir. Burada kafamı en çok karıştıran şey bu.
Nedense mantıklı gelmiyor...
Öte yandan, içerme bir yere yerleştirilirse. Diyelim ki bir bazda bir alım satım sinyali almaktan sorumlu olan birkaç fonksiyon yerine, bu mantıklı ve okunabilir bir an olacaktır.
Zhunko :
Ne yazık ki, derleyici tek bir içermenin aynı modülde birden fazla kullanılmasına izin vermiyor. Bu genellikle tekrarlayan koddan tasarruf sağlar.
Eh, bu zaten bir önemsememek. Sonuçta, ana şey, ana hacimli işlevleri ve kod parçalarını ana koddan çıkarmak ve bunları bir içerme yoluyla çağırmaktır. Ve daha sonra zaten içeride, fonksiyon adına dahil ettiğim fonksiyona erişmek mümkün olacak ... Ve belirli bir kısıtlama olduğu gerçeğiyle uğraşmanıza gerek kalmayacak.
MarketInfo ( ) ve Print ( ) fonksiyonlarını öğrenme
İşte bu işlevleri kullanan basit bir kod
Test cihazı, TF 60 dak.
double T ;
int start()
{
T = MarketInfo( "EURUSD" ,MODE_HIGH); // в глобальную переменную Т запоминаем максимум дневной свечи,который должна возвращать MarketInfo ( )
Print ( " corresponds to " , T ); //
if ( T > iHigh( Symbol (), 0,10) ) // если максимум текущей дневной свечи > High свечи N10 (ТФ60 мин)OrderSend(Symbol(),OP_SELL,0.1,Bid,1,0,0,"jfh",123 ); открыть ордер
}
return ;
ПРОБЛЕМА
1.Ордер не открывается
2.Print() постоянно возвращает 0
ПРИМЕЧАНИЕ.
Для открытия ордера - мне нужной сравнивать параметры свечей разных ТФ (60 мин и 1440 мин.)
Подскажите пожалуйста как это можно сделать.
Спасибо.
Integer : Grafikten gelen istek, RefreshRates'e değil, CopyRates ArrayCopySeries'e benzer. CopyRates, ticari olmayan tek sunucu kıpırdatma işlevidir.
RefreshRates() kontrol edildi. Bu Expert Advisor, örneğin EURUSD'de başlatılırsa ve ayarlara başka bir enstrüman eklenirse, uzun süredir açılmamış bir pencere (böylece geçmiş yok), o zaman geçmiş görünür.
TarasBY : GetProfitFromDateInCurrency () kullanıyorsanız (orijinal olan ÖNEMLİ: Orada sürümünüzde ne "alabileceğinizi" bilmiyorum), o zaman şöyle çağırmanız gerekir:
ve fonksiyon, cari günün başlangıcından beri kapatılan siparişlerde kârı döndürür.
Ve koddaki TÜM saçmalıklar Print () aracılığıyla yakalanır.
çalışmıyor. Tüm geçmiş için işlemlerde mevcut tüm karı verir.
işte orijinal işlev ve doğal olarak hiçbir şeyi değiştirmedim
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит в валюте депозита |//| закрытых с определённой даты позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) |//+----------------------------------------------------------------------------+double GetProfitFromDateInCurrency( string sy= "" , int op=- 1 , int mn=- 1 , datetime dt= 0 )
{
double p= 0 ;
int i, k=OrdersHistoryTotal();
if (sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn< 0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
}
return (p);
}
RefreshRates() kontrol edildi. Bu Expert Advisor, örneğin EURUSD'de başlatılırsa ve ayarlara başka bir enstrüman eklenirse, uzun süredir açılmamış bir pencere (böylece geçmiş yok), o zaman geçmiş görünür.
Yine de RefreshRates() sunucuyu çağırır ve geçmişi hızlandırır. Sonuç olarak, tarihin gelişini kontrol etmek gerekir.
Ve destek olarak, tek bir işlevin sunucuya doğrudan erişmediğini söyleyecekler. Gibi, her şey terminalden yapılır :-)
Vadim, senaryonu ana dallar ve yen ile çaprazlar dışında hiçbir enstrümanı açmadığım terminalde çalıştırdım. Genel olarak, işte ekran görüntüsü:
Hiçbir şey indirilmiyor, tk. yorumlara bakılırsa piyasa veri dizisi boş..
Kontrol edilen RefreshRates(). Bu Expert Advisor, örneğin EURUSD'de başlatılırsa ve ayarlara başka bir enstrüman eklenirse, uzun süredir açılmamış bir pencere (böylece geçmiş yok), o zaman geçmiş görünür.
Yine de RefreshRates() sunucuyu çağırır ve geçmişi hızlandırır. Sonuç olarak, tarihin gelişini kontrol etmek gerekir.
Ve destek olarak, tek bir işlevin sunucuya doğrudan erişmediğini söyleyecekler. Gibi, her şey terminalden yapılır :-)
Etkileyici düzeyde şiddet içeren fanteziler. Veriler neden sadece bazı semboller (henüz açılmamış) için ortaya çıktı ve piyasa incelemesinde bulunanların tümü için görünmüyor? RefreshRates() işlevi, bazı karakterlerin güncellenmesi gerektiğini ve bazılarının gerekmediğini zor bir şekilde nasıl öğrendi?
Pekala, sorun değil. Fonksiyonu satır satır "okuyorsunuz" ve nasıl çalıştığını anlayacağım, eğer kendiniz yazarsanız ve her şey yerine oturacaktır ..
Bir işlev parametreniz var:
iTime ( NULL , PERIOD_D1 , 0 )
günün son çubuğunun açılış saati, yani. o gün açılmadan önce kapatılan tüm pozisyonlar hesaplanacak ve özetlenecektir! mantıklı mı? Bu yüzden ihtiyacınız olan veya elinizde ne varsa başka bir çubuk koyun. Ama kendin gör.
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.
Bir grafik açıldığında ve güncellendiğinde, sunucuya yeni veriler için bir istek gönderilir. Bazı açgözlü DC'ler, paralarını daha güçlü sunucularda ve daha geniş bir kanalda değil, ceplerine koymayı tercih ediyor. Zayıf sunucunun "askıda kalmaması" için terminalden gelen istek sayısını sınırlamaları gerekir. MRC'nin günde yalnızca 2000 isteği vardır. Bu, ticaret taleplerini hesaba katmadan, TF'lerin sayısı ile çarpılan enstrümanlarının sayısından 10 kat daha azdır.
MQL4'teki eklemeler, kodu düzenlemeye yardımcı olur. Örneğin, göstergem 3000 satır için böyle görünüyor.
Gerçek şu ki, kütüphaneleri gördüm ve belgelerde de genellikle global değişkenlerin bildirildiği kodun en üstünde include bildirdikleri söyleniyor. Eğer içermelerde fonksiyonlar varsa, o zaman global değişkenlerin bildirildiği yerde, o yere dahil edilmesinin bir sonucu olarak aslında bir fonksiyonun olacağını ve bir seçenek olarak, bir şekilde değişkenlerin bir şekilde olacağını hayal etmek bence garip. . Kodlar böyle yazılmaz. Expert Advisor'da kullanılan değişkenler ve harici kullanıcı değişkenleri en üstte bildirilmişse, kimse bunların yanına işlev koymaz! Ancak, işlevlerin bulunduğu içerme yerleştirilir ve bu, anladığım kadarıyla normal kabul edilir. Burada kafamı en çok karıştıran şey bu.
Nedense mantıklı gelmiyor...
Öte yandan, içerme bir yere yerleştirilirse. Diyelim ki bir bazda bir alım satım sinyali almaktan sorumlu olan birkaç fonksiyon yerine, bu mantıklı ve okunabilir bir an olacaktır.
Ne yazık ki, derleyici tek bir içermenin aynı modülde birden fazla kullanılmasına izin vermiyor. Bu genellikle tekrarlayan koddan tasarruf sağlar.
Herkese iyi günler.
MarketInfo ( ) ve Print ( ) fonksiyonlarını öğrenme
İşte bu işlevleri kullanan basit bir kod
Test cihazı, TF 60 dak.
Grafikten gelen istek, RefreshRates'e değil, CopyRates ArrayCopySeries'e benzer. CopyRates, ticari olmayan tek sunucu kıpırdatma işlevidir.
RefreshRates() kontrol edildi. Bu Expert Advisor, örneğin EURUSD'de başlatılırsa ve ayarlara başka bir enstrüman eklenirse, uzun süredir açılmamış bir pencere (böylece geçmiş yok), o zaman geçmiş görünür.
Yine de RefreshRates() sunucuyu çağırır ve geçmişi hızlandırır. Sonuç olarak, tarihin gelişini kontrol etmek gerekir.
Ve destek olarak, tek bir işlevin sunucuya doğrudan erişmediğini söyleyecekler. Gibi, her şey terminalden yapılır :-)
GetProfitFromDateInCurrency () kullanıyorsanız (orijinal olan ÖNEMLİ: Orada sürümünüzde ne "alabileceğinizi" bilmiyorum), o zaman şöyle çağırmanız gerekir:
ve fonksiyon, cari günün başlangıcından beri kapatılan siparişlerde kârı döndürür.
Ve koddaki TÜM saçmalıklar Print () aracılığıyla yakalanır.
çalışmıyor. Tüm geçmiş için işlemlerde mevcut tüm karı verir.
işte orijinal işlev ve doğal olarak hiçbir şeyi değiştirmedim
işte onun meydan okuması ve baskısı
RefreshRates() kontrol edildi. Bu Expert Advisor, örneğin EURUSD'de başlatılırsa ve ayarlara başka bir enstrüman eklenirse, uzun süredir açılmamış bir pencere (böylece geçmiş yok), o zaman geçmiş görünür.
Yine de RefreshRates() sunucuyu çağırır ve geçmişi hızlandırır. Sonuç olarak, tarihin gelişini kontrol etmek gerekir.
Ve destek olarak, tek bir işlevin sunucuya doğrudan erişmediğini söyleyecekler. Gibi, her şey terminalden yapılır :-)
Vadim, senaryonu ana dallar ve yen ile çaprazlar dışında hiçbir enstrümanı açmadığım terminalde çalıştırdım. Genel olarak, işte ekran görüntüsü:
Hiçbir şey indirilmiyor, tk. yorumlara bakılırsa piyasa veri dizisi boş..
Vadim, senaryonu ana dallar ve yen ile çaprazlar dışında hiçbir enstrüman açmadığım terminalde çalıştırdım. Genel olarak, işte ekran görüntüsü:
Hiçbir şey indirilmiyor, tk. yorumlara bakılırsa piyasa veri dizisi boş..
Evet. Ayrıca, EA'sında sadece RefreshRates() değil, MarketInfo() olduğunu da fark etmedi.
Kontrol edilen RefreshRates(). Bu Expert Advisor, örneğin EURUSD'de başlatılırsa ve ayarlara başka bir enstrüman eklenirse, uzun süredir açılmamış bir pencere (böylece geçmiş yok), o zaman geçmiş görünür.
Yine de RefreshRates() sunucuyu çağırır ve geçmişi hızlandırır. Sonuç olarak, tarihin gelişini kontrol etmek gerekir.
Ve destek olarak, tek bir işlevin sunucuya doğrudan erişmediğini söyleyecekler. Gibi, her şey terminalden yapılır :-)
Etkileyici düzeyde şiddet içeren fanteziler. Veriler neden sadece bazı semboller (henüz açılmamış) için ortaya çıktı ve piyasa incelemesinde bulunanların tümü için görünmüyor? RefreshRates() işlevi, bazı karakterlerin güncellenmesi gerektiğini ve bazılarının gerekmediğini zor bir şekilde nasıl öğrendi?
Junko, saçmalamayı kes.
çalışmıyor. Tüm geçmiş için işlemlerden elde edilen tüm karı dağıtır.
işte orijinal işlev ve doğal olarak hiçbir şeyi değiştirmedim
işte onun meydan okuması ve baskısı
Pekala, sorun değil. Fonksiyonu satır satır "okuyorsunuz" ve nasıl çalıştığını anlayacağım, eğer kendiniz yazarsanız ve her şey yerine oturacaktır ..
Bir işlev parametreniz var:
günün son çubuğunun açılış saati, yani. o gün açılmadan önce kapatılan tüm pozisyonlar hesaplanacak ve özetlenecektir! mantıklı mı? Bu yüzden ihtiyacınız olan veya elinizde ne varsa başka bir çubuk koyun. Ama kendin gör.
Evet. Ayrıca, EA'sında sadece RefreshRates() değil, MarketInfo() olduğunu da fark etmedi.
Diğer tüm özellikler:
DoubleToStr(iOpen(sTool, 0, i), Rakamlar), " ",
DoubleToStr(iLow(sTool, 0, i), Rakamlar), " ",
DoubleToStr(iHigh(sTool, 0, i), Rakamlar), " ",
DoubleToStr( iClose (sTool, 0, i), Rakamlar), " ",
DoubleToStr(iVolume(sTool, 0, i), 0), "\n");
Doğal olarak, veriler güncellenecektir.