[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 22

 
skyjet :

Merhaba! Amacım bir fonksiyon oluşturarak göstergeyi bir EA'ya aktarmak.

İlk aşama - yani işlevin oluşturulmasını tamamladım. Ama bir sonraki - kontrol, çalışmıyor.

Gösterge kanalları çizer. 4 tamponu ve bir sürü harici değişkeni vardır. Bütün bunları bir fonksiyona koydum.

Ancak, göstergeyi ve işlevimi karşılaştırarak işin doğruluğunu doğrulamak için bir test EA'sı oluştururken - derlemesini sağlayamıyorum.

İşlev oluşturulurken mevcut olmayan harici değişkenlerin kalıcı hataları EA'da su yüzüne çıktı.

Lütfen bana tavsiye verin veya bir örneğe bağlantı verin. GODZILLA makalelerini kullandım ama onun örnekleri benimkinden farklı.

Şema şöyle bir şeydir:

  • göstergenin init() içindeki her şeyi ayrı bir işleve aktarın, örneğin, fInit_Indicator() ve bunu danışmanın init() öğesine yazın, ancak göstergenin başlatılmasıyla ilgili her şeyi koddan çıkarmayı unutmadan tamponlar .
  • tüm global gösterge değişkenlerini kopyalayın ve bunları EA global değişkenlerine yerleştirin. Bir EA'da bildirirken gösterge arabelleklerini tanımlamayı unutmayın. gd_Buf1[100], gd_Buf2[100] vb. gibi. 100 değerin sizin için yeterli olacağını düşünüyorum.
  • göstergenin start() işlevini yeniden adlandırın, örneğin, fMyIndicator() ve onu, siparişleri açma kodundan önce (bir karar vermek için) EA'nın start() işlevine aktarın.
  • gösterge arabelleğinin "gösterge olmayan" olandan farklı olduğunu unutmamalıyız. Bunun için birkaç çözüm var:
  • yeni bir çubuk geldiğinde, "gösterge olmayan" dizideki tüm veriler kaydırılır ve yeni hesaplanan değerin yerleştirildiği 0. dizin serbest bırakılır.
  • yine, yeni bir çubuk geldiğinde, "gösterge olmayan dizinin" tamamını yeniden hesaplayın.

Alıştırma - karmaşık bir şey yok.

 
999666 :
n-siparişleri açtıktan sonra danışmanın partiyi ikiye katlayacağı bir koşul yazmaya yardımcı olun
 if (MyOrders >= n) Lots *= 2 ;
 

Tünaydın!

Dizilerle uğraşmaya devam ediyorum.

Her yeni tikte diziye nokta sayısının değerlerini yüklemem gerekiyor.

Dizinin boyutu her seferinde farklı olacaktır. Bu durumda nasıl olunur, döngünün her yinelemesinde ArrayResize kullanılır mı?

 

Tünaydın. diziler konusunda.

böyle bir hücre var

12345,s,fgh,2011-01-01,55,66

55 nasıl çıkar ?

UV ile teşekkür etmek.

 

Dizi heterojense, muhtemelen tüm öğeleri dize türüne çevirmeniz ve ardından istediğiniz birini aşağıdakiler aracılığıyla aramanız gerekir.

StringFinde ( https://www.mql5.com/ru/forum/138609/page22#613148 ). Yanlışsa düzeltin.

 
TarasBY :

Yardımcı olmadı: zor değilse, iki koşul vardır if (LotConst_or_not) gd_200 = Lot;

else gd_200 = AccountBalance() * RiskPercent / 100.0 / 10000.0;

danışmanın bakiyeden değil, açık siparişlerin sayısından sayılması için ne değiştirilir.

Cevap için minnettar olacağım.

 
TarasBY : zor değilse iki koşul vardır if (LotConst_or_not) gd_200 = Lot;

else gd_200 = AccountBalance() * RiskPercent / 100.0 / 10000.0;

danışmanın bakiyeden değil, açık siparişlerin sayısından sayılması için ne değiştirilir.

Cevap için minnettar olacağım.


 
Snegovik :

Tünaydın. diziler konusunda.

böyle bir hücre var

12345,s,fgh,2011-01-01,55,66

55 nasıl çıkar ?

UV ile teşekkür etmek.


https://book.mql4.com/en/variables/arrays
 
999666 :
n-siparişleri açtıktan sonra danışmanın partiyi ikiye katlayacağı bir koşul yazmaya yardımcı olun
Aşağıdakilerin (4, vb.) 2 x lot ile zaten açık olan 3 siparişle açılmasını istiyorsanız, o zaman:
 int Opened_pos= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{ if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
  { if ( OrderSymbol ()== Symbol () && ( OrderType ()==OP_BUY || OrderType ()==OP_SELL))
    { Opened_pos++;
} } }
if (Opened_pos>=4) double lot=lot* 2 ;
 
Fox_RM :

Tünaydın!

Dizilerle uğraşmaya devam ediyorum.

Her yeni tikte diziye nokta sayısının değerlerini yüklemem gerekiyor.

Dizinin boyutu her seferinde farklı olacaktır. Bu durumda nasıl olunur, döngünün her yinelemesinde ArrayResize kullanılır mı?

1: başlangıçta dizi boyutunu değiştirme felsefeniz kusurlu, gösterge okumalarını işlemek için 100 hücreden 99'unda 10 hücre ile alabilirsiniz;

2: Bu göstergeleri her kene üzerinde yeniden hesaplamak, yetersiz bilgilendirilmiş bir beynin kaprisidir.

Neden: