Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 412
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Merhaba, yeni başlayanlar için bir problemim var ...
Sistemi belirli bir süre için son çubuğun kapanış değerini yüksek ve düşük değerlerle karşılaştırmaya zorlayamam, örneğin
son 20 bar. Neyi yanlış yapıyorum?
Alert üzerinden kontrol ettim ve anlamadığım nedenlerden dolayı test cihazı en son tikten itibaren hesaplamadan maksimum değeri veriyor ama bu değeri veriyor
keneler olduğu kadar, sipariş açılmaz.
Ve ikinci sorun, EA'nın bir sonraki bar açılana kadar (30m periyodu) nasıl bekletileceğidir? Kontrol noktalarıyla test ederken her şey yolundadır, ancak keneler varsa,
daha sonra danışman, stop loss ile kapandığı yerde hemen aynı çubukta açılır, örneğin...
Bir kene olup olmadığına bakılmaksızın bir ticareti nasıl kapatabilirsiniz? örneğin, 30m'lik bir periyotta, çubuğun bitiminden 5 saniye önce siparişi kapatmak istiyorum (29.55, 59.55)
o andaki tüm verilere dayanarak. Bu aşamada sorun şu ki, 5 saniye içinde bir kene oluşmazsa, bu nedenle oluşmaz.
mantıksal işlem yok, sinyal alınmadı ve bir sonraki sinyale kadar an kaçırıldı :( teoride, çöp, ama gerçekte test cihazında bir sonraki sinyal olabilir
nedense birkaç mumdan sonra bile ortaya çıkıyor.
Şimdiden teşekkürler!1. Kodda son 20 bar ile ilgili bir şey göremedim, biraz daha yakından bakalım.
2. Yeni bir çubuğun ilk işareti nasıl belirlenir
3. Bir kene olup olmadığına bakmaksızın bir anlaşmayı nasıl kapatabilirsiniz?
OnTick ile çalışmaktan uzaklaşmak ve OnTimer ile çalışmak, zamanlayıcıyı 1 saniye aralıklarla ayarlamak ve içindeki zamanı kontrol etmek gerekiyor. Zamanlayıcı, kenelerin gelişine bağlı değildir.
O_o ATP başka ne olduğunu bilmiyordu ve terminal hatanın nerede olduğunu dürttü, ilk defa kritik bir hatayla karşılaştım.
ona tükürmek.
Elbette tükürecektir, dizinin 3. elemanına 2 - mas [ 2 ]++ boyutunda erişiyorsunuz.
Alexey Volchanskiy :
Так у тебя в комменте стоит управляющий символ "\n " - это символ перевода строки. Если его убрать, многострочия не будет.
Bu bir şaka. Şimdi satırın sonuna bir yorum ekler... ve metin sağa kaçar. ;-)
İyi akşamlar. Tenkan ve kinjun'un kesiştiği noktada basit bir Uzman Danışman yazmaya çalışıyorum. İşte kod:
geçersiz OnTick()
geçersiz OnTick()
{
TradeSignal_20();
}
int TradeSignal_20()
{
int işaret=0;
if(h_ich==INVALID_HANDLE)
{
h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
dönüş(0);
}
başka
{
if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
}
//--- koşulu kontrol edin ve sig için değeri ayarlayın
if (ich1_buffer[1]>ich2_buffer[1]) sig=1;
else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
başka işaret=0;
if (ich1_buffer[1]>ich2_buffer[1])
if (ich1_buffer[2]<ich2_buffer[2])
Alert(Symbol()+": satın al");
if (ich1_buffer[1]<ich2_buffer[1])
if (ich1_buffer[2]>ich2_buffer[2])
Alert(Symbol()+": satış");
//--- ticaret sinyalini döndür
dönüş(sig);
}
//+------------------------------------------- --------------------+
Uyarının sürekli değil, yalnızca bir kez çağrılması için nasıl yapılır?
1. Kodda son 20 bar ile ilgili bir şey göremedim, biraz daha yakından bakalım.
2. Yeni bir çubuğun ilk işareti nasıl belirlenir
3. Bir kene olup olmadığına bakmaksızın bir anlaşmayı nasıl kapatabilirsiniz?
OnTick ile çalışmaktan uzaklaşmak ve OnTimer ile çalışmak, zamanlayıcıyı 1 saniye aralıklarla ayarlamak ve içindeki zamanı kontrol etmek gerekiyor. Zamanlayıcı, kenelerin gelişine bağlı değildir.
İyi akşamlar. Tenkan ve kinjun'un kesiştiği noktada basit bir Uzman Danışman yazmaya çalışıyorum. İşte kod:
geçersiz OnTick()
geçersiz OnTick()
{
TradeSignal_20();
Uyarının sürekli değil, yalnızca bir kez çağrılması için nasıl yapılır?Peki, kapanış fiyatını son 20 barın en yüksekleri ile nasıl karşılaştırabilirim? Ve eğer son fiyat, 20 barlık maksimum değere eşit veya bundan büyükse, o zaman açılma sinyali vardır.
Bence sorun sıfır çubuğa, yani mevcut olana erişmekte. Bir önceki cevapta verdiğim yeni bir çubuğun başlangıcını belirlemek ve tüm karşılaştırmaları sadece yeni çubuğun ilk tikinde yapmak gerekiyor. Ve indekslemeyi değiştirin. Son kapatılan çubuğun iHighest'e düşmemesi gerekir. Ve şimdi her tikte ortaya çıkan mevcut çubuğa erişiyorsunuz, sonuçlar en garip olacak.
double HIGHEST = High[iHighest(Symbol(),0,MODE_HIGH,20, 2 )]; if(Close[1] > SMMA && Close[1] > BB_UP && Close[1] >= HIGHEST) { ***********
koda bakıyoruz
Bence sorun sıfır çubuğa, yani mevcut olana erişmekte. Bir önceki cevapta verdiğim yeni bir çubuğun başlangıcını belirlemek ve tüm karşılaştırmaları sadece yeni çubuğun ilk tikinde yapmak gerekiyor. Ve indekslemeyi değiştirin. Son kapatılan çubuğun iHighest'e düşmemesi gerekir. Ve şimdi her tikte ortaya çıkan mevcut çubuğa erişiyorsunuz, sonuçlar en garip olacak.
Teşekkür ederim, yardımcı oldu gibi görünüyor :) ama ben de aynısını yaptığımı ve işe yaramadığıma yemin etmeye hazırım...
OnTimer()'ı önerdin ama nedense benimle işbirliği yapmak istemiyor. Tüm yardımları inceledikten ve daha anlaşılır açıklamalar veya örnekler bulamayınca çıkmaza girdim.
Yani, bu banal kod da yürütülmüyor, her şey referans kitabında belirtilmiş olmasına rağmen ... Bu programı araştırırken, OnTimer () testte çalışmıyor dediklerine rastladım.
modu. Her ne kadar bu an mql5'in piyasaya sürülmesiyle ortadan kaldırılmış gibi görünse de. Anlamama yardım et :) Teşekkürler!
Imminence :
Bu programı aratınca OnTimer() test modunda çalışmaz dedikleri gerçeğiyle karşılaştım. Her ne kadar bu an mql5'in piyasaya sürülmesiyle ortadan kaldırılmış gibi görünse de. Anlamama yardım et :) Teşekkürler!
Bu doğru, test cihazındaki MT4'te zamanlayıcı pulluk yapmıyor ve bu belgelenmedi! Servise yazdım böyle bir şey yapmayacaklarını söylediler. OnTick'te OnTimer'a yapılan aramadan çıktım. Zamanlayıcım bir saniyeye ayarlı.
Yani, test cihazındaki keneler saniyede 1 defadan daha sık gelirse, fazla olanlar atlanır, daha az sıklıkta ise 1 saniyenin katları olan bir seri oluşturulur. Bu zaman TimeCurrStruct yapısındadır ve herhangi bir moddaki ana sınıfım sadece bu yapıdan zaman alır. Bence bu hatayı yenmenin tek yolu bu. İşte fonksiyon, fazlalığı çıkardım, sadece et))
Din, SRC düğmesine basmanıza izin vermiyor mu?