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

 
Yaroslav Nykula :

... USD'nin bulunduğu tüm döviz çiftlerini geçin ...

Kodun, ticaret için fonlardan kullanılan marjın bir hesaplamasına sahip olduğunu varsayacağım - USD dışı bir hesap açmayı deneyin ve testin geçip geçmediğine bakın.
 

Kodun, ticaret için fonlardan kullanılan marjın bir hesaplamasına sahip olduğunu varsayacağım - USD dışı bir hesap açmayı deneyin ve testin geçip geçmediğine bakın.



Kodda "ticaret öz sermayesinden kullanılmış marj" hesaplaması yok... ve ilk gönderimin sonunda fark ettim   "Test cihazında mevduat para biriminin türünü değiştirmek sorunu çözmez."

 
Yaroslav Nykula :

Kodda "ticaret öz sermayesinden kullanılmış marj" hesaplaması yok ... ve ilk gönderimin sonunda fark ettim   "Test cihazında mevduat para biriminin türünü değiştirmek sorunu çözmez."

Sonra telepatik yeteneklerim sona erdi - kodu düzenleyin.

 

Soru için özür dilerim, bir tampon kullanarak EA'ya harici bir gösterge ekleyebilirim... Ama bu göstergenin bir tamponu yok, üst ve alt fiyatları nasıl alabilirim.




//+------------------------------------------------------------------+

//|                                                trendlinesDay.mq4 |

//|                      Copyright © 2008, MetaQuotes Software Corp. |

//|                                        https://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "nsi2000"

#property link      "http://www.expert-mt4.nm.ru"

//----

#property indicator_chart_window

//---- input parameters

extern int nPeriod=10;

extern int Limit=350;

   double Up[];

   double Dn[];

///---- int Widners Oscilator

int cnt,nCurBar=0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int init()

  {      

//---- Output in Char

   for(cnt=0; cnt<=5; cnt++)

     {

      ObjectCreate("WSO-"+cnt,OBJ_HLINE,0,0,0);

      ObjectSet("WSO-"+cnt,OBJPROP_COLOR,Red);

      if(cnt<5)

        {

         ObjectCreate("Trend DN-"+cnt,OBJ_TREND,0,0,0,0,0);

         ObjectSet("Trend DN-"+cnt,OBJPROP_COLOR,Magenta);

        }

      //----

      ObjectCreate("WRO-"+cnt,OBJ_HLINE,0,0,0);

      ObjectSet("WRO-"+cnt,OBJPROP_COLOR,Blue);

      if(cnt<5)

        {

         ObjectCreate("Trend UP-"+cnt,OBJ_TREND,0,0,0,0,0);

         ObjectSet("Trend Up-"+cnt,OBJPROP_COLOR,Aqua);

        }

     }

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function                       |

//+------------------------------------------------------------------+

int deinit()

  {

//---- TODO: add your code here

   for(cnt=0; cnt<=5; cnt++)

     {

      ObjectDelete("Trend UP-"+cnt);

      ObjectDelete("Trend DN-"+cnt);

      ObjectDelete("WSO-"+cnt);

      ObjectDelete("WRO-"+cnt);

     }

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int start()

  {

//---- TODO: add your code here


   double r1,r2,r3,r4,r5,r6;

   int rt1,rt2,rt3,rt4,rt5,rt6;

   double s1,s2,s3,s4,s5,s6;

   int st1,st2,st3,st4,st5,st6;


//---- Линии сопротивления и поддержки

   if(Bars<Limit) Limit=Bars-nPeriod;

   for(nCurBar=Limit; nCurBar>0; nCurBar--)

     {

      if(Low[nCurBar+(nPeriod-1)/2]==Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar)])

        {

         s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+(nPeriod-1)/2];

         st6=st5; st5=st4; st4=st3; st3=st2; st2=st1; st1=nCurBar+(nPeriod-1)/2;

        }

      if(High[nCurBar+(nPeriod-1)/2]==High[Highest(NULL,0,MODE_HIGH,nPeriod,nCurBar)])

        {

         r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+(nPeriod-1)/2];

         rt6=rt5; rt5=rt4; rt4=rt3; rt3=rt2; rt2=rt1; rt1=nCurBar+(nPeriod-1)/2;

        }

     }

//---- Move Object in Chart


   ObjectMove("Trend DN-0",1,Time[st1],s1);

   ObjectMove("Trend DN-0",0,Time[st2],s2);


//----

   ObjectMove("Trend UP-0",1,Time[rt1],r1);

   ObjectMove("Trend UP-0",0,Time[rt2],r2);

//----

   return(0);

  }

//+------------------------------------------------------------------+


 
Vyacheslav Kornev :

Soru için özür dilerim, bir tampon kullanarak EA'ya harici bir gösterge ekleyebilirim... Ama bu göstergenin bir tamponu yok, üst ve alt fiyatları nasıl alabilirim?


"Trend DN-0", "Trend UP-0" (göstergenin bazı seviyeleri gösterdiği satırlar) adlarıyla grafikte c grafik nesneleri alın ve onlardan gerekli verileri okuyun

 
Maxim Kuznetsov :

"Trend DN-0", "Trend UP-0" (göstergenin bazı seviyeleri gösterdiği satırlar) adlarıyla grafikte c grafik nesneleri alın ve onlardan gerekli verileri okuyun


nasıl yaz lütfen göstergenin kendisinde mi? ve daha sonra bunları EA'da kullanmak için bu değerlerden 2 tampon yapın?

fiyat nasıl alınır nerede yazarmısınız

 
Vyacheslav Kornev :

nasıl yaz lütfen göstergenin kendisinde mi? ve daha sonra bunları EA'da kullanmak için bu değerlerden 2 tampon yapın?

fiyat nasıl alınır nerede yazarmısınız

Gösterge, onlardan iki arabellek hesaplamak ve bunları çizmek için zaten tüm verilere sahiptir.

Ve size göstergeyi değiştirmemeniz, gösterge tarafından çizilen çizgilerin verilerini danışmandan okumanız teklif edildi.
Doğru, bu, test cihazının kullanımına kısıtlamalar getirir - yalnızca görsel modda danışmanı test edebilirsiniz.

 
Artyom Trishkin :

Gösterge, onlardan iki arabellek hesaplamak ve bunları çizmek için zaten tüm verilere sahiptir.

Ve size göstergeyi değiştirmemeniz, gösterge tarafından çizilen çizgilerin verilerini danışmandan okumanız teklif edildi.
Doğru, bu, test cihazının kullanımına kısıtlamalar getirir - yalnızca görsel modda danışmanı test edebilirsiniz.


Yani, göstergeye yazmam gerekiyor

#özellik göstergesi_tamponları 2

double BufferUp[], BufferDn[];


int OnInit()

{

SetIndexBuffer (0, BufferUp)

SetIndexBuffer(1, BufferDn)

}



Ve sonra tam olarak neyle? bu 2 tamponu bağlamalı mıyım?

 
Vyacheslav Kornev :

Yani, göstergeye yazmam gerekiyor

#özellik göstergesi_tamponları 2

double BufferUp[], BufferDn[];


int OnInit()

{

SetIndexBuffer(0, BufferUp)

SetIndexBuffer(1, BufferDn)

}



Ve sonra tam olarak neyle? bu 2 tamponu bağlamalı mıyım?

Bakın: kodunuzda satırlar hareket ediyor:

 ObjectMove ( "Trend DN-0" , 1 , Time [st1],s1);
ObjectMove ( "Trend DN-0" , 0 , Time [st2],s2);
//----
ObjectMove ( "Trend UP-0" , 1 , Time [rt1],r1);
ObjectMove ( "Trend UP-0" , 0 , Time [rt2],r2);

Çizgilerin referans noktalarının zamanı - Zaman[st1], Zaman[st2] ve bu referans noktalarının fiyatı s1, s2 - bir hat için,
Zaman[rt1], Zaman[rt2], r1, r2 - başka bir satır için.

Düz bir çizginin denklemini kullanarak bu noktalar arasındaki her bir çubuk için tampon değeri hesaplayabilir ve bu değeri tampona girebilirsiniz.

 
Artyom Trishkin :

Bakın: kodunuzda satırlar hareket ediyor:

Çizgilerin referans noktalarının zamanı - Zaman[st1], Zaman[st2] ve bu referans noktalarının fiyatı s1, s2 - bir hat için,
Zaman[rt1], Zaman[rt2], r1, r2 - başka bir satır için.

Düz çizgi denklemini kullanarak bu noktalar arasındaki her bir çubuk için tampon değeri hesaplayabilir ve bu değeri tampona girebilirsiniz.


yani sadece çubuğun üstündeki çizginin fiyatını alamazsınız... Düz bir çizginin denklemini nasıl hesaplayacağımı bilmiyorum, mümkünse nasıl görünmesi gerektiğini yazın.

Ve genel olarak, değer noktalar arasında değil, 0 veya 1 bar üzerinde alınmalıdır.