"ADX göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?" makalesi için tartışma - sayfa 2

 
Merhaba. birkaç aydır adx ve dmi hakkında bilgi edinmeye başladım. ve bunun için bir ea olmasını diliyorum. bu gecikmeli gösterge olduğu için. belki zaman çerçevesi M15 daha uygundur. bir tane yapabilir misin? terim ve koşul için sizinle nerede iletişime geçebilirim? teşekkür ederim
 

Merhaba Mohamed,

Onun yerine:

   double ADXArray0[];
   double ADXArray1[];
...
   double ADXValue=NormalizeDouble(ADXArray0[0],2);
   double ADXValueLast=NormalizeDouble(ADXArray1[1],2);

Bu yeterli olmaz mı?

      double ADXArray[];
...
      double ADXValue=NormalizeDouble(ADXArray[0],2);
      double ADXValueLast=NormalizeDouble(ADXArray[1],2);

Saygılar,

Juan Luis

Learn how to design a trading system by ADX
Learn how to design a trading system by ADX
  • www.mql5.com
In this article, we will continue our series about designing a trading system using the most popular indicators and we will talk about the average directional index (ADX) indicator. We will learn this indicator in detail to understand it well and we will learn how we to use it through a simple strategy. By learning something deeply we can get more insights and we can use it better.
 
Juan Luis De Frutos Blanco #:

Merhaba Mohamed,

Onun yerine:

Bu yeterli olmaz mı?

Saygılar,

Juan Luis

Merhaba Juan,

Haklısınız, sizin bahsettiğiniz gibi de olabilir.


Saygılarımla,

 
Güzel makale: şu anda inşa ettiğim EA'nın ayaklarından biri.
Teşekkürler Mohamed. 🏅🏅🏅

 
Harika bir makaleniz var.ADX'i ölçeklendirmem için kullanmayı seviyorum.ADX çizgisi 25'in üzerinde ve dmi artı dmi eksi yukarı geçtiğinde, mumun renginin yeşil renge dönüşmesi trendin yükselişe geçtiğini ve bunun tersi olduğunu gösteriyor. kodlamaya çalışıyorum ama şimdiye kadar şanslı değilim.
 
1
 

Mükemmel makale! Bununla birlikte, makalelerden birinde bir hata tespit ettim ve ayrıca bir ipucu fırsatı yakaladım . Hata CopyBuffers ile ilgilidir ve aynı tanıtıcı için aynı arabellek indeksini kullanır. MQL5'teki bir gösterge tanıtıcısı, CopyBuffer() işlevine yapılan bir çağrıda yalnızca karşılık gelen benzersiz arabellek indeksini kullanarak belirli bir arabelleğe erişebilir.


Yani şunu yazdığınızda:

CopyBuffer(ADXDef,0,0,3,ADXArray0);
CopyBuffer(ADXDef,0,0,2,ADXArray1);
CopyBuffer(ADXDef,1,0,3,PDIArray);
CopyBuffer(ADXDef,2,0,3,NDIArray);


Olmalıdır:

CopyBuffer(ADXDef,0,0,3,ADXArray0);
CopyBuffer(ADXDef,1,0,2,ADXArray1);
CopyBuffer(ADXDef,2,0,3,PDIArray);
CopyBuffer(ADXDef,3,0,3,NDIArray);


Gösterge tutamaçları ve tamponlarla ilgili kilit noktalar şunlardır:
  • Benzersiz İndeksleme: Her gösterge tanıtıcısı, her biri benzersiz bir dizinle (0'dan başlayarak) tanımlanan bir dizi dahili arabelleği yönetir.
  • Bir Tanıtıcı, Bir Dizin: CopyBuffer(handle, buffer_index, ...) kullandığınızda , o handle ile ilişkilihangi tek tampondan veri kopyalamak istediğinizi belirtmiş olursunuz .
  • Çoklu Çağrılar: Bir göstergenin birden fazla veri tamponu varsa (örneğin, bir kanalın yüksek ve düşük bandı), CopyBuffer() işlevini aynı tanıtıcıyı kullanarak ancak farklı tampon dizinleriyle (örneğin, üst bant için dizin 0, alt bant için dizin 1) birden çok kez çağırmanız gerekir.
Aynı tanıtıcı içinde aynı arabellek dizini için bir şekilde farklı verilere işaret eden iki ayrı CopyBuffer çağrısı yapamazsınız, çünkü dizin bu tanıtıcı içindeki veri serileri için benzersiz bir tanımlayıcıdır


Bunun bir yazım hatası olduğunu tahmin ediyorum, ancak başka birinin kafası karışırsa diye belirtmem gerektiğini düşündüm. Tam kodda doğruydu, sadece örnekte değil.


Şimdi küçük ipucuna gelelim...

Önemli bir şey değil ama yazarken sizi gereksiz tuş vuruşlarından kesinlikle kurtaracaktır:


 Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue,
   "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue,
   "\n""-DI Value is ", NDIValue);


İhtiyacınız olmayan bazı ekstra tırnak işaretleri var. Basitleştirmek için bunu yapabilirsiniz:


 Comment("Simple ADX System - Signal is ",signal,"\nADX Value is ", ADXValue,
   "\nADX Value Last is ", ADXValueLast, "\n+DI Value is ", PDIValue,
   "\n-DI Value is ", NDIValue);


Bunun dışında, makaleyi çok bilgilendirici ve ayrıntılı buldum.


 

Buraya ekleyeceğim tek şey OnInit() ve DeOnit() işlevlerinde hata işleme ve ADXDef olan değişken adını h_ADXDef (veya handle_ADXDef) olarak değiştirmektir, böylece kodu okurken daha net olur ve özel amacını gösteren daha iyi bir tanımlayıcı olur.

In OnInit():


  if(h_ADXDef == INVALID_HANDLE)
   {
      Print("Error creating indicator handles: ", GetLastError());
      return(INIT_FAILED);
   }


Ve DeOninit() içinde:


if(h_ADXDef != INVALID_HANDLE) IndicatorRelease(h_ADXDef);