Nasıl kodlanır? - sayfa 311

 

Merhaba Mladen, her zamanki gibi rock yapıyorsun!

mladen:
Terrance Bu durumda Kapat[0] kullanın. Hemen hemen her EA bu amaçla close kullanıyor, bu yüzden sizin için de işe yarayacağını düşünüyorum
 

...

EA'nız yalnızca çubuk başladığında yürütülürse, bunun birkaç nedeni olabilir:

- sadece yeni bir çubukta çalışmakla sınırlıdır. Bu yaklaşım, takip eden stoplar ve benzeri şeyler yönetilecekse bazı problemlere sahiptir, ancak sabit stop loss ve kar al ile çalışıyorsa, hepsi aynıdır.

- veya kapalı bir çubuktaki sinyalleri kontrol ediyor (bu, sinyalleri kontrol etmenin en yaygın (ve en iyi) yolu). Sonuç olarak, yeni bir çubuk oluştuğunda yapıyormuş gibi görünürken, aslında yeni oluşturulmuş kapalı bir çubuk üzerinde sinyaller alıyor. EA'lardaki en iyi uygulama kapalı çubuk sinyalleri üzerinde çalışmaktır ve EA'nız böyle çalışıyorsa, hiçbir şeyi değiştirmemek daha iyidir

Premeus:
EA'mın M1 zaman diliminde hareket eden fiyatlar arasında çalışmadığını fark ettim. EA'nın her gelen tik tarafından yürütüleceğini biliyorum.

Ama her yeni barda yürütüldüğünü gördüm.

yanlış mı anlıyorum?

ea kuvvetinin gelen her keneyi etkinleştirme şekli var mı?

Kâr ve zararımı kullanarak kâr ve zararımı kontrol etmeye çalışırım. pip olarak değil. Ani artış gerçekleştiğinde EA, yeni çubuk oluşana kadar kar veya zararı belirlemeye ulaştığınızda siparişi kapatmayın.

Herkes bu sorunu çözmeme yardım etsin.

EA kodlamasında yeniyim.

Şimdiden teşekkür ederim.
 

Teşekkürler, mladen.

Önerinizi deneyeceğim.

 

Selamlar Kodlayan Tanrılar,

Aynı fiyattan bir emir zaten mevcutsa, bir emrin açılamaması için emir gönderme yürütmesini kontrol eden bir EA işlevi bulma konusunda yardıma ihtiyacım var.

basit mantık: emir açılış fiyatı ve emir tipi = mevcut bir emir açılış fiyatı ve emir tipi ise, çıkın ve sonraki giriş kriterlerini arayın

Ayrıca, mevcut bir fiyattan x pip uzaktaysa, bir emrin yürütülmesini önleyecek bir fonksiyona ihtiyacım var.

basit mantık: emir açılış fiyatı ve tipi < son emir açılış fiyatı ise ve + x pip yazın, o zaman çıkın ve sonraki giriş kriterlerini arayın

Teşekkürler,

pip

 

...

Bu 2 işlevi deneyin:
Birincisi, tam olarak aynı açılış fiyatına sahip bir emir olup olmadığını öğrenmektir.

İkincisi, istenen fiyattan nnn puanlık bir sipariş olup olmadığını kontrol etmektir.

Fiyat eşitse veya şu anda açılmış bazı emirlerin fiyatından uzaklık belirtilen mesafe içindeyse, her ikisi de true değerini döndürür.

bool existsAtSamePrice(int magicNumber, double price)

{

for (int i=OrdersTotal()-1; i>=0 ; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderMagicNumber()!=magicNumber) continue;

if (CompareDouble(OrderOpenPrice(),price)) return(true);

}

return(false);

}

//

//

//

//

//

bool existsAtApproximatePrice(int magicNumber, double price, double distance)

{

for (int i=OrdersTotal()-1; i>=0 ; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderMagicNumber()!=magicNumber) continue;

if (MathAbs(OrderOpenPrice()-price)< distance) return(true);

}

return(false);

}

//

//

//

//

//

bool CompareDouble(double val1, double val2)

{

return(NormalizeDouble(val1,Digits)==NormalizeDouble(val2,Digits));

}

Pip:
Selamlar Kodlayan Tanrılar,

Aynı fiyattan bir emir zaten mevcutsa, bir emrin açılamaması için emir gönderme yürütmesini kontrol eden bir EA işlevi bulma konusunda yardıma ihtiyacım var.

basit mantık: emir açılış fiyatı ve emir tipi = mevcut bir emir açılış fiyatı ve emir tipi ise, çıkın ve sonraki giriş kriterlerini arayın

Ayrıca, mevcut bir fiyattan x pip uzaktaysa, bir emrin yürütülmesini önleyecek bir fonksiyona ihtiyacım var.

basit mantık: emir açılış fiyatı ve tipi < son emir açılış fiyatı ise ve + x pip yazın, o zaman çıkın ve sonraki giriş kriterlerini arayın

Teşekkürler,

pip
 
mladen:
Bunun birkaç nedeni olabilir, ancak en yaygın olanları:
- zararı durdur ve / veya kar al, mevcut fiyata çok yakın

- komisyoncunuz ECN/STP tipi bir komisyoncudur, bu durumda ilk önce zararı durdur ile bir emir vermeniz ve 0'a ayarlanmış kar almanız gerekir ve sadece bir emir açıldığında zararı durdur ve / veya kar almayı değiştirebilirsiniz. istenen değerler (elbette önceki noktayı onurlandırarak)

Merhaba!

Yardım için teşekkürler!

Yani, eğer doğru anlamazsam, OrderSend'e TakeProfit ve StopLoss'u Exsternal "kurallar" olarak eklersem, bu EA sadece ECN olmayan brokerlerde mi çalışır?

İngilizcem için üzgünüm

 

...

Evet

ECN/STP benzeri brokerler ile zararı durdur ve/veya kârı 0'a ayarlanmış bir emir açmanız gerekir ve emir zaten açıldığında, ancak o zaman zararı durdur ve / veya kar al'ı değiştirebilirsiniz .

pearl1:
Merhaba!

Yardım için teşekkürler!

Yani, eğer doğru anlamazsam, OrderSend'e TakeProfit ve StopLoss'u Exsternal "kurallar" olarak eklersem, bu EA sadece ECN olmayan brokerlerde mi çalışır?

İngilizcem için üzgünüm
 
mladen:
Evet ECN/STP gibi brokerler ile zarar durdur ve/veya kar al 0 olarak ayarlanmış bir emir açmanız gerekir ve emir zaten açıldığında, ancak o zaman zararı durdur ve/veya kar al'ı değiştirebilirsiniz.

Tekrar teşekkürler, peki... Bunu nasıl düzeltebilirim? üzgünüm

 

...

Dediğim gibi 2 adımda yapmanız gerekiyor:

1. adım - zararı durdur ile bir emir açın (OrderSend() kullanarak) ve karı 0'a ayarlayın

2. adım - bu emri değiştirin (OrderModify() kullanarak) zararı durdur ayarını yapın ve kârı istenen değerlere getirin

Bu nedenle, işi bir adım yerine 2 adımda yapmak için kodun değiştirilmesi gerekir.

pearl1:
Tekrar teşekkürler, peki... Bunu nasıl düzeltebilirim? üzgünüm
 

kodlamada yeni

Herkese selam,

Kodlamada yeniyim ve dili ve sözdizimini yavaş yavaş öğreniyorum ancak MT4'ün değişkenleri nasıl güncellediği hakkında bir soru buldum.

Şu anda açık olan bir ticaretin sahip olduğu en yüksek karı gösteren ve yalnızca yeni bir zirveye ulaşıldığında güncellenmesi gereken basit bir EA kodlamaya çalıştım, ancak olan şey, kârın yaptığı gibi miktar aşağı ve yukarı hareket ediyor, yapamam hatamı kod mantığında görüyor gibi görünüyor.

Seçilen ticaretin hala açık olduğundan emin olmak için kontrol ediyorum

t_CloseTime=SiparişKapatTime(); // sipariş kapatılmazsa 0 döndürür

if(t_CloseTime==0) //Sıfır değilse sipariş kapatılır.

{

if(OrderProfit() > LastProfitHigh) LastProfitHigh=OrderProfit();

if(LastProfitHigh >= MinProfit && MinProfitReached==false) MinProfitReached=true;

}//endif

Öyleyse mantık doğruysa, bu "LastProfitHigh" değişkeni neden yukarı ve aşağı gidiyor...

Yardımın için teşekkürler.

Neden: