Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 342
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
İşte projenin .cpp dosyası , bir bakacağım ve birkaç kez Google ve Yandex'e gideceğim, beynimi bulandıran bir şey bulamadım, genel olarak anlaşılabilir. Hatta basit görünüyor.
Ama nasıl çalışıyor? Bu ddl'ye nasıl erişeceğimi tam olarak anlamadım - EA kodundan? Nasıl? İlk olarak, bu gibi görünüyor #include <GetIntValue> Hayır, bir sorun var ..
2. Bir dll çağırırken, stüdyoyu açık tutmak gerekli değildir, değil mi? nasıl yapılır?
Lütfen aynı dll'ye mql kodundan erişmenin en basit örneğini gösterin.
ben burdan birşey anlamadım..
ikinci bir tek yönlü sipariş açılırsa parti büyüklüğünün katlanarak (2 çarpanıyla) artması gerekir.
sonuç bu
o zaman böyle
sonuç bu
o zaman böyle
teşekkürler, düşünce trenini anladım.. Daha doğru anladım.
bu hat ne için?
datetime o;
İşte başka bir soru. Bir treylerim var. 1 tek yönlü sipariş açık olduğunda, her şey harika çalışıyor, eğer daha fazlaysa, o zaman nedense çalışmıyor. Niye ya?
{
for(int i = 0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
if(Bid - OrderOpenPrice() > TrailingStop*Point)
{
if (OrderStopLoss() < Bid - (TrailingStop + TrailingStep)*Point)
{
SL = NormalizeDouble(Bid - TrailingStop*Point,Digits);
if (OrderStopLoss() !=SL)
OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0);
}
}
}
if (OrderType() == OP_SELL)
{
if(OrderOpenPrice() - Ask > TrailingStop*Point)
{
if (OrderStopLoss() > Ask + (TrailingStop+ TrailingStep)*Point)
{
SL = NormalizeDouble (Ask+TrailingStop*Point,Digits);
if (OrderStopLoss() !=SL)
OrderModify (OrderTicket(), OrderOpenPrice(), SL,0,0);
}
}
}
}
}
}
}
İşte projenin .cpp dosyası, bir bakacağım ve birkaç kez Google ve Yandex'e gideceğim, beynimi bulandıran bir şey bulamadım, genel olarak anlaşılır. Hatta basit görünüyor.
Ama nasıl çalışıyor? Bu ddl'ye nasıl erişeceğimi tam olarak anlamadım - EA kodundan? Nasıl? İlk olarak, bu gibi görünüyor #include <GetIntValue> Hayır, bir sorun var ..
Yaklaşık olarak bu şekilde. Çalıştırmak için DLL'yi derlemeniz ve bunu uzmanlar/kütüphaneler klasörüne koymanız gerekir (yardımı ve öğreticiyi okuyun, orada her şey ayrıntılı olarak açıklanmıştır).
2. Bir dll çağırırken, stüdyoyu açık tutmak gerekli değildir, değil mi? nasıl yapılır?
İşte başka bir soru. Bir treylerim var. 1 tek yönlü sipariş açık olduğunda, her şey harika çalışıyor, eğer daha fazlaysa, o zaman nedense çalışmıyor. Niye ya?
{
for(int i = 0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
if(Bid - OrderOpenPrice() > TrailingStop*Point)
{
if (OrderStopLoss() < Bid - (TrailingStop + TrailingStep)*Point)
{
SL = NormalizeDouble(Bid - TrailingStop*Point,Digits);
if (OrderStopLoss() !=SL)
OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0);
}
}
}
if (OrderType() == OP_SELL)
{
if(OrderOpenPrice() - Ask > TrailingStop*Point)
{
if (OrderStopLoss() > Ask + (TrailingStop+ TrailingStep)*Point)
{
SL = NormalizeDouble (Ask+TrailingStop*Point,Digits);
if (OrderStopLoss() !=SL)
OrderModify (OrderTicket(), OrderOpenPrice(), SL,0,0);
}
}
}
}
}
}
}
fonksiyona parametre iletmek gerektiğinden, bunu deneyin
bool IfProfTrail=yanlış; // Yalnızca karlı pozisyonlar için kullanın - başabaş modu
int TrailingStop=0; // Takip mesafesi = 0 - izin verilen minimum
int TrailingStep=1; // mesafe adımı
Çok teşekkürler!
Şimdi sorunun ne olduğu ortaya çıktı.
Satın almak için kullanılır:
Bildiğim kadarıyla, satın alma işlemi sor ile yapılıyor ve iClose(Symbol(),Period(),0) fiyatları tekliften alıyor. Sonuç olarak, hata oluşması muhtemeldir.
Ancak, soru hemen ortaya çıkıyor, çünkü danışman bir pip değil, fiyat uzun süredir satın alma bölgesindeydi ve her tik ile güncellendi.Şimdi aşağıdaki kombinasyonu kullanıyorum:
Anlaşma neden açılmıyor? Danışmanın bir hata üzerine donduğu ve başka bir fiyat değişikliği görmediği ortaya çıktı?
Expert Advisor için şablonu buradan aldım https://c.mql5.com/mql4/book/mq4/experts/tradingexpert.mq4
Sizce bu EA'daki hata işleme işlevine 129 ve 138 hataları için bir kontrol eklemeye değer mi?
Evet ise, o zaman nasıl yapılır?
En azından, tüm hataları ele alan pozisyonları açmak/emirleri ayarlamak için kendi işlevinize sahip olmalısınız. İçinde en son fiyatları almanız gerekiyor.
Herhangi bir yapıya bakmadım. Ancak şunu söyleyeceğim: Expert Advisor'da sunucu tarafından döndürülen tüm hataları işlemeniz gerekir. Ve bu yeterli değil. Öngörülemeyen herhangi bir durumda, işlevsellik kaybı olmadan ve algoritması bozulmadan pozisyonlarını alabilmeli ve olağanüstü bir şey olmamış gibi çalışmalarına devam edebilmelidir.
En azından, tüm hataları ele alan pozisyonları açmak/emirleri ayarlamak için kendi işlevinize sahip olmalısınız. İçinde en son fiyatları almanız gerekiyor.
Herhangi bir yapıya bakmadım. Ancak şunu söyleyeceğim: Expert Advisor'da sunucu tarafından döndürülen tüm hataları işlemeniz gerekir. Ve bu yeterli değil. Öngörülemeyen herhangi bir durumda, işlevsellik kaybı olmadan ve algoritması bozulmadan pozisyonlarını alabilmeli ve olağanüstü bir şey olmamış gibi çalışmalarına devam edebilmelidir.
Şablon ders kitabından alınmıştır. Şu anda hata işleme işlevlerinde özellikle güçlü değil.
Emirlerin açılışında RefreshRates() vardır; (dedikleri gibi, teklifler ve talepler piyasa bilgileri aracılığıyla değiştirilir)
Ve hata işleme işlevi:
sormak istedim. Buna 129 hatadan aşağıdaki satırı ekleyebilir miyim, örneğin bunun gibi?