Nasıl kodlanır? - sayfa 300

 

Aşırı ticareti önlemek

Hepinize merhaba,

EA'mı, siparişleri başlatmak için (diğerlerinin yanı sıra) bir MACD çaprazı kullanarak bir H4 grafiğindeki tüm işaretler yöntemini kullanarak test ettim ve strateji test cihazı ilk birkaç dakika içinde yaklaşık 200 pozisyon açıyor, bu nedenle biraz okuma yaptıktan sonra, sınırlamam gerektiğini anlıyorum. yerleştirdiği işlem sayısı, sistemimde her 4 saatte 1'den fazla işlem yapmamalı çünkü mumun önceden iMACD(... PRICE_CLOSE...) kullanarak kapanmasını bekliyorum ve bunu MACDMainCurrent & MACDSymbolCurrent için 0 olarak dengeliyorum ve MACDMainPrevious ve MACDSymbolPrevious için 1.

Global değişkenlerim:

string hasOrderedGV = "has_ordered_GV";

string barlarGV = "bars_GV";

EA'm uzun veya kısa pozisyonları kontrol etmeden önce bu kodu ekledim:

//--- H4 zaman bloğunda sipariş verilmiş olup olmadığını belirleyin

if ((GlobalVariableGet (barsGV) == 0) || (GlobalVariableGet (barsGV) < Çubuklar))

{

GlobalVariableSet(hasOrderedGV,false);

GlobalVariableSet(barsGV,Bars);

}

//--- Uzun pozisyon (SATIN AL) olasılığını kontrol edin

if (GlobalVariableGet (hasOrderedGV, false))

{

if ... (diğer göstergeler arasında MACD çaprazını gerçekten kontrol ettiğim yer burası).

Ardından sipariş başarıyla açıldıysa:

eğer (Bilet > 0)

{

GlobalVariableSet(hasOrderedGV,true);

{

if (Sipariş Seçimi(Bilet, SELECT_BY_TICKET, MODE_TRADES))

OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), GetTPPriceShort(SLPriceShort, RiskRewardRatio), OrderExpiration(), Green);

vesaire vesaire.

Birisi bana bu konuda doğru yolda olup olmadığımı söyleyebilir mi? Bunu yapmanın daha verimli veya doğru bir yolu olup olmadığını bilmiyordum? Teşekkürler.

 

...

Neden EA'nızın zaten kaç sipariş açtığını saymıyorsunuz ve zaten bir sipariş açtıysa, yeni bir sipariş açmayın?

Sadece bir fikir (ve bir EA tarafından açılan siparişlerin sayısının sınırlı olmasının olağan ve en basit yolu)

crsnape@btinternet.com:
Hepinize merhaba,

EA'mı, siparişleri başlatmak için (diğerlerinin yanı sıra) bir MACD çaprazı kullanarak bir H4 grafiğindeki tüm işaretler yöntemini kullanarak test ettim ve strateji test cihazı ilk birkaç dakika içinde yaklaşık 200 pozisyon açıyor, bu nedenle biraz okuma yaptıktan sonra, sınırlamam gerektiğini anlıyorum. yerleştirdiği işlem sayısı, sistemimde her 4 saatte 1'den fazla işlem yapmamalı çünkü mumun önceden iMACD(... PRICE_CLOSE...) kullanarak kapanmasını bekliyorum ve bunu MACDMainCurrent & MACDSymbolCurrent için 0 olarak dengeliyorum ve MACDMainPrevious ve MACDSymbolPrevious için 1.

Global değişkenlerim:

string hasOrderedGV = "has_ordered_GV";

string barlarGV = "bars_GV";

EA'm uzun veya kısa pozisyonları kontrol etmeden önce bu kodu ekledim:

//--- H4 zaman bloğunda sipariş verilmiş olup olmadığını belirleyin

if ((GlobalVariableGet (barsGV) == 0) || (GlobalVariableGet (barsGV) < Çubuklar))

{

GlobalVariableSet(hasOrderedGV,false);

GlobalVariableSet(barsGV,Bars);

}

//--- Uzun pozisyon (SATIN AL) olasılığını kontrol edin

if (GlobalVariableGet (hasOrderedGV, false))

{

if ... (diğer göstergeler arasında MACD çaprazını gerçekten kontrol ettiğim yer burası).

Ardından sipariş başarıyla açıldıysa:

eğer (Bilet > 0)

{

GlobalVariableSet(hasOrderedGV,true);

{

if (Sipariş Seçimi(Bilet, SELECT_BY_TICKET, MODE_TRADES))

OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), GetTPPriceShort(SLPriceShort, RiskRewardRatio), OrderExpiration(), Green);

vesaire vesaire.

Birisi bana bu konuda doğru yolda olup olmadığımı söyleyebilir mi? Bunu yapmanın daha verimli veya doğru bir yolu olup olmadığını bilmiyordum? Teşekkürler.
 

EA'm genellikle aynı anda birkaç açık pozisyona sahip olduğu için; bu yüzden söylemeyi kullanamadım,

if (SayılıSiparişler > 5)

Kırmak;

Veya buna benzer bir şey, çünkü herhangi bir zamanda kaç pozisyonun açık olacağını bilmiyorum. Düşündüğüm zamanla ilişkilendirmem gerekiyor.

 

Bu EA'yı 5 haneli mt4 hesabıma ekliyorum.. Ama herhangi bir işlem açmıyor....

lütfen, bana yardım edin

Dosyalar:
dipu_2.mq4  5 kb
 

Lütfen 3 adımda stoploss'u taşımak için dis ea'yı düzenlemem gerekiyor

Bu EA'nın zaten bir başabaş yeteneği var ama bu EA'nın benim

karım ulaştığında ilk başabaş noktasından başka bir +20 pip'e kadar stoploss

+27pips ve +50pips'e ulaştığında tekrar +40pips'e taşıyın ve hatta

mümkünse daha fazla.

Dosyalar:
 

Merhaba Mladen,

Söylediğin için teşekkürler! Ben zaten çözmeyi başardım.

Bu arada, iStochastic'te MODE ve SHIFT işlevinin ne yaptığını biliyor musunuz veya daha fazla bilgi sağlayan herhangi bir yer var mı? mql4 web sitesindeki belgeleri okuyorum ama yine de bana mantıklı gelmiyor. Sağladıkları açıklama çok kısa.

Örneğin

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Geçerli + 0);

iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_MAIN, 0);

iStochastic(BOŞ, 0, 5, 3, 3, MODE_SMMA, 0, MODE_SIGNAL,Mevcut + 1);

Mevcut + 0 vb ne işe yarar?

Teşekkürler ve saygılar

teras

mladen:
Terrance Bu bir fonksiyondur. EA'nızın sonuna gönderin ve mevcut bir barda bir siparişin zaten açık olup olmadığını kontrol etmenin uygun olduğunu düşündüğünüz yerlere çağrılar yapın.
 

Merhaba, birisi bana burada nerede yanlış yaptığımı söyleyebilir mi lütfen? Hata kodu ')' alıyorum kırmızı ile vurgulanan satırda yanlış parametreler sayımı - ancak tüm parametreler toplanıyor...

if ((GlobalVariableGet (barsGV) == 0) || (GlobalVariableGet (barsGV) < Çubuklar))

{

GlobalVariableSet(hasOrderedGV,false);

GlobalVariableSet(barsGV,Bars);

}

//--- Uzun pozisyon (SATIN AL) olasılığını kontrol edin

if (GlobalVariableGet (hasOrderedGV, false)) Teşekkürler

 

...

teras

MODE_MAIN, stokastik çizginin değerini okuduğunuz anlamına gelir. MODE_SIGNAL, stokastik sinyal çizgisinin değerini okuduğunuz anlamına gelir.

SHIFT itibariyle: her gösterge için aynıdır (özel olanlar bile). Örnek olarak : SHIFT=0 mevcut çubuk değeri anlamına gelir, SHIFT=1 ilk kapalı çubuk değeri anlamına gelir ve bu böyle devam eder...

tkuan77:
Merhaba Mladen,

Söylediğin için teşekkürler! Ben zaten çözmeyi başardım.

Bu arada, iStochastic'te MODE ve SHIFT işlevinin ne yaptığını biliyor musunuz veya daha fazla bilgi sağlayan herhangi bir yer var mı? mql4 web sitesindeki belgeleri okuyorum ama yine de bana mantıklı gelmiyor. Sağladıkları açıklama çok kısa.

Örneğin

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Geçerli + 0);

iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_MAIN, 0);

iStochastic(BOŞ, 0, 5, 3, 3, MODE_SMMA, 0, MODE_SIGNAL,Mevcut + 1);

Mevcut + 0 vb ne işe yarar?

Teşekkürler ve saygılar

teras
 

...

Hata, GlobalVariableGet() 'in yalnızca bir parametreye (değişken adı) sahip olmasıdır. İkinci parametreye ihtiyacınız yok ( işlevi çağırırken sahip olduğunuz " yanlış ")

crsnape@btinternet.com:
Merhaba, birisi bana burada nerede yanlış yaptığımı söyleyebilir mi lütfen? Hata kodu ')' alıyorum kırmızı ile vurgulanan satırda yanlış parametreler sayımı - ancak tüm parametreler toplanıyor...

if ((GlobalVariableGet (barsGV) == 0) || (GlobalVariableGet (barsGV) < Çubuklar))

{

GlobalVariableSet(hasOrderedGV,false);

GlobalVariableSet(barsGV,Bars);

}

//--- Uzun pozisyon (SATIN AL) olasılığını kontrol edin

if (GlobalVariableGet (hasOrderedGV, false)) Teşekkürler
 

Kodu bununla değiştirdim ve en azından hatasız - tamam mı?

if (GlobalVariableGet (hasOrderedGV) == false)

Neden: