Nasıl kodlanır? - sayfa 232

 

Fikir

tamam erkekler ve kızlar

Sadece bir CUF (Yaygın olarak kullanılan işlevler) oluşturma fikriyle oynuyordum - tüm okuduklarımdan bir EA içinden komut dosyalarını çağıramazsınız.

Buna rağmen - bir geçici çözüm düşünüyorum çünkü her seferinde tekerleği yeniden tasarlamak zorunda kalmaktan hoşlanmıyorum çünkü işlerin bu şekilde daha iyi yürümesini sağlayacağından eminim.

Herkesin bildiği gibi komut dosyaları, orada bir şey yapın, ardından kısayol tuşlarınıza basmadığınız sürece bir daha asla yüklenmemek üzere boşaltın.

Bu, tüm EA'larda gördüğüm büyük bir sorun, devam etmeden önce bir süre koşulu veya bazı kaba "uyku" koşullarının geçmesini beklerken sıkışıp kalmış gibi görünüyorlar. Bu, son derece değişken koşullarda birkaç saniye içinde bir servet kazanabileceğiniz büyük bir başarısızlık olan, bir saniye içinde iptal etmeyi ve satmayı pek olası kılmaz.

Çözüm? Global değişkenler üzerinde çalışan bir CUFF göstergesi yapın? Bunu deneyen var mı? Gösterge her keneyi çevirir , böylece mükemmeldir.

 

Birden çok gösterge ve çubuk koşulu karşılandığında sesli veya e-posta uyarıları gönderecek bir uyarı nasıl kodlanır?

 

merhaba,

bir acemi olarak, yerleşik metastock işlevinin: ref() ve stochmomentum()'un metatrader'daki bazı işlevler tarafından uygulanıp uygulanmadığını sormak istiyorum.

teşekkürler

 

Darian, yukarıdaki küresel örneğime bakın. e-posta gönderen/ıslık çalan/istediğinizi yapan bir komut dosyası bulun ve onu kodlayın. Hepsinin tam olarak aynı anda çalışmayacağını düşünmeniz gerekeceğini unutmayın, bu nedenle değişkenleri 0'a sıfırlamadan önce birkaç saniye/dakika gecikme yapmanız gerekecek.

 

Küresel ile

Bunun gibi bir Göstergeye GlobalVarible ekleyebilir miyim?

if ( trend[2]0 && Volume[0]>1 && !UpTrendAlert)

{

GlobalVariableSet("trend"+Symbol(),1);

// Print("UP" + GlobalVariableGet("trend"+Symbol()));

Mesaj = " Satın Al "+Symbol()+" M"+Period()+": SATIN AL sinyali";

if ( AlertMode>0 ) Alert (Mesaj);

UpTrendAlert=true; DownTrendAlert=yanlış;

daha sonra bir EA'da GlobalVariable'ı arayın

int init() {

GlobalVariableDel("trend"+Symbol());

trend = GlobalVariableGet("trend"+Symbol());

Satın al = (trend == 1);

Sat = (trend == 2);

tüm yardımlar takdir edildi

 

Ancak, işe yaramayacak 1 para biriminden fazla ticaret yaparsanız yapabilirsiniz.

 

Dizilerle ilgili sorun, biraz yardıma ihtiyacınız var!

Merhaba,

Herhangi bir açık siparişin bir kesme noktasından (örneğin, -1000$) daha fazla para kaybedip kaybetmediğini belirleyen bir işlev yapmaya çalışıyorum.

Daha sonra işlevin OrderTicket() ve OrderProfit()'i iki ayrı dizide saklaması ve kesme noktasına ulaşıldığını belirtmek için dönüş (1) ile çıkması beklenir.

Bu dizilerdeki değerleri saklamadan önce, bu siparişin zaten dosyalanmış olup olmadığını görmek için OrderTicket() dizisini kontrol etmelidir.

OrderTicket numarası dizide zaten kayıtlıysa, siparişin EK 1000$ kayıp olup olmadığını belirlemesi gerekir ve eğer öyleyse: OrderProfit() dizisindeki değeri yeni bir değerle değiştirin ve return(1) ile çıkın. YENİ bir kesme noktasına ulaşıldığını belirtir. Sipariş ek 1000$ kaybetmediyse (Kesim olarak adlandırılır), o zaman hiçbir siparişin ek 1000$ kaybetmediğini belirtmek için (0) döndürmelidir.

Sanırım hemen hemen çalışıyor (emin değilim??), Ama nedense dizi, meşru değerlerle birlikte birçok '0' değeriyle doluyor. Dizinin çıktısı aşağıdaki gibidir:

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 431 ResumeArrayPrices[k] = -3042

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 425 ResumeArrayPrices[k] = -3042

ResumeArrayTickets[k] = 386 ResumeArrayPrices[k] = -1008

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 371 ResumeArrayPrices[k] = -12933

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 320 ResumeArrayPrices[k] = -6057

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 249 ResumeArrayPrices[k] = -5076

ResumeArrayTickets[k] = 241 ResumeArrayPrices[k] = -1017

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 230 ResumeArrayPrices[k] = -13122

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 186 ResumeArrayPrices[k] = -4068

ResumeArrayTickets[k] = 128 ResumeArrayPrices[k] = -1008

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

[/code]

The following is my actual code:

[code]

int CheckForResume()

{

ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;

}

int arraycount1 =1;

int arraycount2 =1;

bool found = false;

int k;

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

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))

{

if (OrderProfit()< Cutoff)

{

for (k=0; k<ArraySize(ResumeArrayTickets); k++)

{

if ((ResumeArrayTickets[k] == OrderTicket()) && ResumeArrayTickets[k] !=0)

{

found = true;

if (ResumeArrayPrices[k] + Cutoff < OrderProfit())

{

return (0);

}

else

{

Print ("ELSE");

arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1);

arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);

ResumeArrayTickets[k] = OrderTicket();

ResumeArrayPrices[k] = OrderProfit();

return (1);

}

}

}

if (found == false)

{

arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1)'

arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);

ResumeArrayTickets[k] = OrderTicket();

ResumeArrayPrices[k] = OrderProfit();

return (1);

}

}

}

return (0);

}

}

 

Barda bir kez EA'yı yenileme

Merhaba, bir EA'yı ilk başlatıldığındaki gibi tepki verecek şekilde yenilemenin bir yolu var mı? (Yeniden başlatma gibi) Bir kez Bar'da yapılması gerekir. Örneğin, her 30 dakikada bir.

RefreshRates() ve WindowRedraw() bunu düzgün yapmaz.

Ayrıca birkaç değişkeni de korumak ve verileri kaybetmemek istiyorum.

Bunu yapmanın bir yolu var mı?

Bunu bir gösterge için de yapabilmek isterim.

Çok teşekkürler.

 

Programlama Yardımı

Hepinize merhaba,

Grafiğin zamanına göre para biriminin gücünü göstermek için bir para birimi gücü ölçeri değiştirmeye çalışıyorum. Şu anda kullanılan kod şudur:

aHigh = MarketInfo(mySymbol,MODE_HIGH); // set a high today

aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today

aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid

aAsk = MarketInfo(mySymbol,MODE_ASK);

MODE_HIGH ve MODE_LOW'un mevcut günlerin en yüksek ve en düşük seviyesini aldığını anlıyorum. Bunun yerine mevcut zaman çerçevesinin en yüksek ve en düşük değerlerini nasıl alabilirim?

Teşekkürler!

Not Ben bir programcı değilim, bu yüzden lütfen küçük kelimeler kullanın :)

 

iHigh ve iLow işlevleri için yardım kılavuzuna bakın.

iyi şanslar

Lüks