Nasıl kodlanır? - sayfa 79

 

Harika teşekkürler çocuklar, önerilerin ikisi de muhtemelen üzerinde çalıştığımdan daha iyi.

 

Biri bana yardım etsin lütfen....

Merhaba...

Umarım buradaki biri bana bunu nasıl kodlayacağıma yardımcı olabilir. Bu martiangle EA ve yapmak istediğim şey:

1. 2. katman gönderisi açıldığında, 1. katmandaki hedef noktanın 2. katmandaki hedef noktaya taşınmasını istiyorum. Böylece hedef nokta 2. katmana çarptığında, bu 2 posta aynı anda kapanabilir. 3. katman açıksa, bu 1. ve 2. katman hedefi nokta 3. hedef nokta fiyatına hareket edebilir. Böylece aynı anda kapatabiliriz. 4. katman, 5. katman ve diğer katman açıksa aynı şey olur. Tüm Hedef Noktayı mevcut katman Hedef Noktasına veya postasına taşımanız yeterlidir.

2. Pip kilidi gerekir. 1. katman açıldığında ve kar örneği 15 pip (TP 32) olduğunda, ea sl fiyatında kilitleme yapar (örnek 5 pip) Böylece fiyat 10 pip tersine döndüğünde o post otomatik olarak 5 pip kârla kapanabilir. Sadece 1. katman post only.2nd katmanı için bu martiangle EA nedeniyle etkinleştirilmeye gerek yoktur.

Kötü ingilizcem için çok üzgünüm. Birisinin bu EA'ya bir kod koymama yardımcı olabileceğini umuyorum. Teşekkür ederim

martiangle_rsi_.mq4

Saygılarımızla

Gerçekten Yardıma İhtiyacım Var

Dosyalar:
 

yorum yardım lütfen

Ekranda gösterilecek bir yorum kurmaya çalışıyorum ama pek şansım yok

Tek bir çift için pip sayısını almayı başardım ancak birden fazla çift için harmanlanmış toplamı gösteremiyorum

Herhangi bir yardım harika olurdu

bu o kodun bir örneği

//========== FONKSİYON getPipValue

double getPipValue(çift ord,int dir)

{

çift val;

Yenileme Oranları();

if(dir == 1) val=(NormalizeDouble(ord,Digits) -

NormalizeDouble(Sor,Rakamlar));

else val=(NormalizeDouble(Teklif,Digits) - NormalizeDouble(ord,Digits));

val = val/Nokta*co;

dönüş(val);

}

//== işlevi sonlandır

int getSpread()

{

int spread=MarketInfo(Symbol(),MODE_SPREAD);

dönüş(yayılma);

}

//========== FONKSİYON getOpenOrders

geçersiz getOpenOrders()

{

int nsl, nsd;

string mngMagic, iz;

int toplam siparişler = SiparişlerToplam();

for(int j=0; j<totalorders;j++)

{

OrderSelect(j, SELECT_BY_POS, MODE_TRADES);

if((OrderType() == OP_BUY || OrderType() == OP_SEL) &&

OrderSymbol() == Symbol()&&(MagicNumber==0 || MagicNumber ==

SiparişMagicNumber()))

{

double val=getPipValue(OrderOpenPrice(),OrderType());

//int val = OrderProfit()/(OrderLots()*10);

}

if(MagicNumber == 0)

mngMagic = "Tüm "+Symbol()+" işlemleri.";

başka

mngMagic = "Sihirli sayı ile işlemler = "+MagicNumber;

//YenilemeOranları();

Comment("Bakiye: ",AccountBalance(),", Hesap Sermayesi: ",AccountEquity(),", Hesap Karı: ",HesapKar(),"Sipariş Açma: ",OrderOpenPrice(),

"\nPip Sayısı: ", val,

"\nHesabım Kesme Limitim: ",Open_Loss_To_CloseTrades,

"\nYönetim: ", mngMagic);

Şerefe

 

Mevcut bir emrin pip değeri şu şekilde elde edilebilir:

( OrderClosePrice() - OrderOpenPrice() ) / MarketInfo( OrderSymbol(), MODE_POINT )

Eğer "teklif" ve "ask" kullanmak istiyorsanız, emir sembolü ile ilgili olanları da kullanmanız gerekir, yani MarketInfo(OrderSymbol(), MODE_BID) ve MarketInfo(OrderSymbol(), MODE_ASK).

 

ralph.ronnquist

günaydın

Kullandığım kod için teşekkürler, ancak tüm çiftlerin toplamı değil, yalnızca bir çift için geçerlidir.

Çeşitli senaryolar deniyorum ama hala çalışmıyor

3 pozisyon açan bir ea'm var ve 5 per üzerinde çalıştırıyorum, her bir per için pip sayısını görebiliyorum ama toplu değil.

 
Beno:
ralph.ronnquist

günaydın

Kullandığım kod için teşekkürler, ancak tüm çiftlerin toplamı değil, yalnızca bir çift için geçerlidir.

Çeşitli senaryolar deniyorum ama hala çalışmıyor

3 pozisyon açan bir ea'm var ve 5 per üzerinde çalıştırıyorum, her bir per için pip sayısını görebiliyorum ama toplu değil.

Pekala, eğer global değişkenlere aşina iseniz, onları her bir sembol tarafından referans verilen her bir çiftte pip bilgisini saklamak için kullanabilirsiniz. Toplam pip değerine başvuran başka bir global değişken oluşturun ve bu özel global değişkeni çağırın, pip arttıkça güncelleyin, saklayın. Global değişkenler, MT4'ün hafızasında saklandığı için her biri tarafından erişilebilir.

İsterseniz sizin için kodlamaya yardımcı olabilirim.

 

Gidday ShahJB

Daha önce kodda global değişkenler görmüştüm ama onlarla sıfır deneyimim vardı, bu yüzden evet, bunu kodlamak için yardımınızı kabul etmek istiyorum, çünkü bu beni deli ediyor

 
Beno:
Gidday ShahJB Daha önce kodda global değişkenler görmüştüm ama onlarla sıfır deneyimim vardı, bu yüzden evet, bunu kodlamak için yardımınızı kabul etmek istiyorum, çünkü bu beni deli ediyor

Hemen aşağıdakileri kodladım. Neden önce bu kodu eklemiyorsun? Başarısız olursa bana bir şans ver. Biraz uyumaya ihtiyacım var.

string val_old_string = "val_old" + Symbol();

int val_old = GlobalVariableGet(val_old_string);

if(val !=val_old)

{

int pip_increment_decrement;

int current_total_pips;

string sayacı = "Pip Sayacı";

double pips_counter = GlobalVariableGet(sayaç);

if (val>val_old)

{

pips_increment_decrement = val - val_old;

current_total_pips = pip_increment_decrement + pip_counter;

GlobalVariableSet(sayaç, current_total_pips);

GlobalVariableSet(val_old_string, val);

}

başka

{

pips_increment_decrement = val_old - val;

current_total_pips = pip_counter - pip_increment_decrement;

GlobalVariableSet(sayaç, current_total_pips);

GlobalVariableSet(val_old_string, val);

}

}

 

Bu neden çalışmıyor???

Merhaba,

Programlamaya tamamen yeni başlayan biriyim. Bu sitedeki gönderiler ve öğrenme kaynakları sayesinde, biri Lguerre'yi tetikleyicilerden biri olarak kullanacak birkaç EA oluşturmaya çalışmak için cesaret kazandım (bu web sitesini bana yardımcı olması için kullandım; MetaTrader 4 için Expert Advisor Builder ). EA'mdaki sorun, tetikleyiciler vurulduğunda satın alma siparişlerini açmamasıdır. Yukarıda bahsedilen siteyi kullanarak birkaç EA oluşturdum ve uzun ve kısa pozisyonlar için emirleri gayet iyi yerine getiriyorlar (EA'lar RSI'ları kullandı). Lütfen ekteki EA, 3-28'e bir göz atın ve neyi yanlış yaptığımı bana bildirin.... bir ticaret yapılmadan önce ulaşılması gereken seviyeler için yanlış formatı mı kullanıyorum? Laguerre'nin ek parametrelere ihtiyacı var mı?

Bunun için çok utanç verici bir zaman harcadım ve pes etmenin eşiğindeyim.... herhangi bir yardım BÜYÜK makbule geçer!!!!!

Cevabı buldum gibi görünüyor ... neden EA'mda Laguerre'yi çarpmam gerekiyor?????

Dosyalar:
3-31.mq4  10 kb
 

Pozisyonları kapatırken bir sorunla karşılaştım. Yardım lütfen

Nasıl çözeceğimi bilmediğim bir problemle karşılaştım. Programımın birkaç açık emri var ve hepsini birlikte kapatıyor ama bazen bazı emirlerin yerine getirilmediğini düşünüyorum, bu yüzden doldurulana kadar bekliyor ve bu da programımı kilitliyor. Tüm açık siparişleri kapatmanın en iyi yolu olarak ne buldunuz? Yardımınız için teşekkür ederim.

işte kod:

int SiparişlerToplamUzun()

{

int sipariş_toplam = 0;

for (int i = 0; i < OrdersTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS, MODE_TRADES);

if (OrderType() == OP_BUY)

sipariş_toplam++;

}

iade(sipariş_toplam);

}

int MaxLongOrder()

{

int sıra = 0;

çift lotsatın alındı = 0;

for (int i = 0; i < OrdersTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS, MODE_TRADES);

if ((OrderType() == OP_BUY) && (OrderLots() > çok satın alındı))

{

lotbuyed = OrderLots();

sıra = ben;

}

}

iade(sipariş);

}

int KapatUzun()

{

while (OrdersTotalLong() > 0) //Sipariş açılmayıncaya kadar (tümünü kapat)

{

(OrderSelect(MaxLongOrder(), SELECT_BY_POS, MODE_TRADES) == false) devam ederse;

OrderClose(OrderTicket(),OrderLots(), Bid, 3, Green);

}

}

dönüş(0);

}

Neden: