MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 197

 
Aleksandr Verkhozin :


Harici bir göstergeyle çalışma hakkında bir video izledim, test cihazındaki arabellek değerlerini görüntülemek için küçük bir kod yazdım:

geçersiz OnTick()

{

double Buf1=iCustom(NULL,0,"Shved-Supply-and-Demand-e600",0,1);

double Buf2=iCustom(NULL,0,"Shved-Supply-and-Demand-e600",1,1);

double Buf3=iCustom(NULL,0,"Shved-Arz-ve-Talep-e600",2,1);

double Buf4=iCustom(NULL,0,"Shved-Arz-ve-Talep-e600",3,1);

Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);

}

Görüntüleme modundaki bölgeler görünür ve kaybolur. Ve tamponların değeri hep aynı, her zaman sıfır. Bu bölgeleri kodda resmileştirmek gerçekten imkansız mı?

Belki iCustom'un yanı sıra bu tür göstergeler için uygun olan bazı işlevler vardır? Belki birileri benzer göstergelere sahip baykuşlar yazdı?


Gösterge arabellekleriyle hiçbir şekilde, fraktal değerleri depolarlar.

Gösterge özelliklerinde fraktals_show = true; onları grafikte göreceksin

Bölgeler, grafik nesnesi OBJ_RECTANGLE

kullanarak bu bölgelerin anlamını öğrenebilirsiniz.


ObjectGet

Belirtilen nesne özelliğinin değerini döndürür.

çift ObjectGet (
    sicim     nesne_adı , // nesne adı
    int        dizin          // özellik tanımlayıcısı
);


Bir döngüde, tüm nesneleri gözden geçirirsiniz, ihtiyacınız olanı ve yolu bulursunuz.

 int obj_total= ObjectsTotal (); 
   string name; 
   for ( int i= 0 ;i<obj_total;i++) 
    { 
     name = ObjectName (i);
     Print (i, " - объект " ,name); 
    }

Yaklaşık olarak böyle bir şey.

 
Artyom Trishkin :
Biliyorsunuz, tam bu başlıkta, kendisine iletilen gösterge değerini hesaplamalarında kullanan trol için bir şablon yayınladım. Arayın tembel olmayın.

Açık pozisyonların karı için doğru takibe ihtiyacım var. sonuçta bunlardan 1 veya 3 tane vardır ve bunlar Step adımının değeriyle, yani dur-açma sistemiyle bağlantılıdır. Bu nedenle karmaşıklık ve belki de tam tersi, CalculateProfit() işlevini kullanarak tüm siparişleri takip etmek daha kolaydır. Şimdi, bu emirlerle çalışma şemasında, göstergenin değerinin, açık pozisyonların toplam karı ile takip ile nasıl ilişkilendirilebileceğini anlayamıyorum.
 
geratdc :

Açık pozisyonların karı için doğru takibe ihtiyacım var. sonuçta bunlardan 1 veya 3 tane vardır ve bunlar Step adımının değeriyle, yani dur-açma sistemiyle bağlantılıdır. Bu nedenle karmaşıklık ve belki de tam tersi, CalculateProfit() işlevini kullanarak tüm siparişleri takip etmek daha kolaydır. Şimdi, bu emirlerle çalışma şemasında, göstergenin değerinin, açık pozisyonların toplam karı ile takip ile nasıl ilişkilendirilebileceğini anlayamıyorum.

Sonuçta bir gösterge, değeri, yalnızca istenen çubuktaki Mashki'nin değeri olamaz. Pozisyonların toplam stopunu hareket ettirmek için hesaplanan fiyat değerini takip edene geçmek mümkündür.

Ancak, açık pozisyonların kârı için ne tür bir iziniz olduğu belli değil - tam olarak neyi ve ne zaman takip ediyor.

 
geratdc : Kâr için doğru takibe ihtiyacım var

Tüm yollar burada. TrailingFuncLib.mq4 dosyasından TrailingStairs - TRAILING STANDARD-STAGED işlevini alıyorum. Her sipariş bağımsız olarak takip edilir.

 
Artyom Trishkin :

Sonuçta bir gösterge, değeri, yalnızca istenen çubuktaki Mashki'nin değeri olamaz. Pozisyonların toplam stopunu hareket ettirmek için hesaplanan fiyat değerini takip edene geçmek mümkündür.

Ancak, açık pozisyonların kârı için ne tür bir iziniz olduğu belli değil - tam olarak neyi ve ne zaman takip ediyor.


Prensip olarak, evet, bir zamanlar ortalama bir fiyata trol avlamam teklif edildi. Her şey mantıklı görünüyor, ancak ortalama fiyat ne anlama geliyor? Bu (1 sipariş fiyatı + Adım*Puan + (2 sipariş fiyatı + Adım*Puan) + 3 sipariş fiyatı) / 3 ? Yani, birçok parametre var - açık pozisyonları ve her pozisyonun mevcut fiyatını aramanız gerekiyor. Evet, genel olarak, bu takip beni EA'nın testlerde birleşmesi gerçeği kadar rahatsız etmiyor. Gerçek hayatta da böyle olacak. Hayır, kurabilirsiniz ama yine döviz grafiğinin bir hafta veya bir ayda ne kadar ciro alacağını bilmiyoruz, yani tek bir zayıflık var - 3 emir açıksa ve piyasa karşıysa - hareket eder - danışman bir düşüşten birleşir. Bu nedenle, mevduat sıfıra sıfırlanmadan önce, düşüşü sınırlamayı ve pozisyonları kapatmayı düşünmeniz gerekir. Kısacası, şu anda en çok Fox ile ilgileniyorum)))
 

Bunu kendim de düşünemiyorum ve belirli bir bilgi de bulamadım ((Bunun özü, fiyat sınırlarını, göstergenin oluşturduğu en yakın bölgeleri kodda belirtmektir. Kodu yazmaya başladım, ancak Kafam karıştı ve doğru yapıp yapmadığımı bilmiyorum, bir göz atın ve doğru yolu gösterin lütfen.

 int obj_total=ObjectsTotal();       

  string name; 

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

  {

  name = ObjectName(i); 

  if(ObjectType(name)==OBJ_RECTANGLE)

  {

    pr1=ObjectGet(name,OBJPROP_PRICE1);// верхняя цена зоны

    pr2=ObjectGet(name,OBJPROP_PRICE2);// нижняя цена зоны

  }  

  }  

Ve kodum neden orijinalinde olduğu gibi buraya eklenmiyor, böylece çok renkli ve satırlar yan yana?
 
-Aleks- :

Anladım - görünüşe göre terminalin yeterli belleği yoktu - birkaç tabloyu kapattım ve işe yaradı.

Teşekkürler - gerçekten de hesaplamalar yapılıyor.

Değişkenler int türünde değil de bool türündeyse, ne yapmalı?


 //+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link        "http://vinin.ucoz.ru"
#property version    "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N= 162 ;   //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   for ( int n= 0 ;n<N;n++)
   {
       int tmp=n;
       int a=( int ) MathMod (tmp, 3 );
      tmp=(tmp-a)/ 3 ;
       int b=( int ) MathMod (tmp, 3 );
      tmp=(tmp-b)/ 3 ;
       bool c= ( bool ) MathMod (tmp, 2 );
      tmp=(tmp-c)/ 2 ;
       int d=tmp;
   
       Print ( "N=" ,n, "; A=" , 2 + 2 *a, "; B=" , b+ 1 , "; C=" ,c, "; D=" , 16 + 4 *d);
   }
  }
//+------------------------------------------------------------------+
 
Victor Nikolaev :

Üzgünüm ama bu kod öncekinden farklı mı?
 
-Aleks- :

Üzgünüm ama bu kod öncekinden farklı mı?


Farklılıklar minimumdur. Değişkenlerden biri booleandır.

Çıktı doğru veya yanlış diyecek

 
Victor Nikolaev :


Farklılıklar minimumdur. Değişkenlerden biri booleandır.

Çıktı doğru veya yanlış diyecek

En son gönderdiğiniz koda baktığınızdan emin misiniz? Eğer öyleyse, dinlenmeye ihtiyacım var... teşekkürler.