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

 
Alexander Antoshkin :

Ne yapabilirsin...?

Bir ampulü değiştirmek için kaç hobbit gerekir?

Serbest çalışana gönderilsin mi? "Orada oku" yaz?

Örnekte olduğu gibi bir dizi siparişi kapatmak için işlemin koordinatını geçmişte nasıl bulabilirim (burada bir çizgi çizmeyi planlıyorum)

Bu konunun 151 sayfasında zaten bir soru sordum, ancak anlaşılır bir çözüm bulunamadı. https://www.mql5.com/ru/forum/160683/page151



Aynı kapanış çubuğuna sahip bir dizi sipariş için geçmiş aranıyor. Bu çubuğun zamanı istenen olacaktır.
 
Alexander Antoshkin :

Ne yapabilirsin...?

Bir ampulü değiştirmek için kaç hobbit gerekir?

Serbest çalışana gönderilsin mi? "Orada oku" yaz?

çok şey yapabiliriz :)

Hobbitlerle ilgili sorunun kesin bir çözümü yok...

Anlamadıysanız, cevabım Vitalie Postolache'nin alıntıladığı aynı videodandı.

Ama ciddice:

Örnekte olduğu gibi bir dizi siparişi kapatmak için anlaşmanın koordinatını geçmişte nasıl bulabilirim (burada bir çizgi çizmeyi planlıyorum)

Bu konunun 151 sayfasında zaten bir soru sordum, ancak anlaşılır bir çözüm bulunamadı. https://www.mql5.com/ru/forum/160683/page151

Linkteki konuyu okumadım. Ama şunu yapardım:

Birkaç emrin (aynı veya farklı türden) X puanları dahilinde (gerçekte tüm işlemlerin aynı fiyattan kapatılamaması için bir dizi X puanı gereklidir) kapatılması gerçeğini belirleyin, ortalama kapanış fiyatını belirleyin ve bir bunun üzerine çizgi.

 
Artyom Trishkin :
Aynı kapanış çubuğuna sahip bir dizi sipariş için tarihte arıyorsunuz. Bu çubuğun zamanı istenen olacaktır.
İşte benim çözüm yöntemimdekiyle aynı sorun: ping ve sipariş sayısına bağlı olarak, bir mum üzerindeki tüm işlemler kapanmayabilir...
 
Alexey Kozitsyn :
İşte benim çözüm yöntemimdekiyle aynı sorun: ping ve sipariş sayısına bağlı olarak, bir mum üzerindeki tüm işlemler kapanmayabilir...
M1'e katılıyorum. Diğerleri için bu inanılmaz. Sadece mumun açılmasından önce kapatma emri geldi. İki takım sipariş olacak. Bitişik iki sonuncuyu alın.
 
Artyom Trishkin :
M1'e katılıyorum. Diğerleri için bu inanılmaz. Sadece mumun açılmasından önce kapatma emri geldi. İki takım sipariş olacak. Bitişik iki sonuncuyu alın.

Burada, çözüm için çok az veri verildi: bir mum üzerinde birkaç paket kapatılabilir (örneğin, saatlik veya günlük mumları kontrol ederseniz).

 
Vitalie Postolache :


Paralel kırmızı çizgilere ihtiyacım var, ancak kesişmeleri ve üçünün yeşil, geri kalanı mor olması için)))

Oh, evet ve bir kedi yavrusu şeklinde düz bir çizgi!

Görev size doğru ayarlanmamış gibi mi görünüyor?

 
Alexey Kozitsyn :

Burada, çözüm için çok az veri verildi: bir mum üzerinde birkaç paket kapatılabilir (örneğin, saatlik veya günlük mumları kontrol ederseniz).

Her durumda, ne kadar kesin olursa o kadar iyidir.

siparişlerimin takip eden durdurma koşuluna göre kayıpsız kapatıldığı varyantta

onlar

eğer(b+s>0)
{
for(i=0; i<SiparişToplam(); i++)
{
if(Sipariş Seçimi(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
{
ipucu = OrderType();
OSL = NormalizeDouble (OrderStopLoss(),Digits);
OTP = NormalizeDouble(OrderTakeProfit(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(), Rakamlar);
SL=OSL;
if(tip==OP_BUY)
{
SL=NormalizeÇift(Teklif-SondakiDurma*Noktası,Rakamlar);
if(SL>OSL && SL>NLb)
{
if(!OrderModify(OrderTicket(),OOP,SL,0,0,Beyaz)) Print("Hata Düzeni Değiştirme",GetLastError());
}
}
if(tip==OP_SEL )
{
SL=NormalizeÇift(Sor+Son Durak*Nokta,Rakamlar);
if((SL<OSL || OSL==0) && SL<NLs)
{
if(!OrderModify(OrderTicket(),OOP,SL,0,0,Beyaz)) Print("Hata Düzeni Değiştirme",GetLastError());
}

 
Alexey Kozitsyn :
Yeni bir çubuk oluştuğu anda girilen değerler olan ek bir arabellek içeren kendi MA göstergenizi yazın.

Hareketli ortalamaların ortalamasını almanın farklı yöntemleri de dahil olmak üzere, sorunu çözmek için algoritmayı tartışmak istiyorum.

 
Alexey Kozitsyn :

çok şey yapabiliriz :)

Birkaç emrin (aynı veya farklı türden) X puanları dahilinde (gerçekte tüm işlemlerin aynı fiyattan kapatılamaması için bir dizi X puanı gereklidir) kapatılması gerçeğini belirleyin, ortalama kapanış fiyatını belirleyin ve bir bunun üzerine çizgi.

 int TotalPos=- 1 ;

void start()
{
   if (OrdersTotal()!=TotalPos) { // не мучаем каждый тик
   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
     if (OrderSymbol()==Symbol() && OrderType()<= 1 ) {
      History();
     }
  }}} TotalPos=OrdersTotal(); // запомним количество
//--
} 
 
 void History() {
   string Ticket=( string )OrderTicket();
  color col=Red;
   if (OrderType()== 0 )col=Blue;
  datetime a=OrderOpenTime();
   double b=OrderOpenPrice();
  datetime c=OrderCloseTime();
   double d=OrderClosePrice();
   double prSep=OrderProfit()+OrderCommission()+OrderSwap();
   double prAll= 0 ;
   int     cn= 0 ;
   string hTicket;
   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
     if (OrderSymbol()==Symbol() && OrderType()<= 1 ) {
      datetime ct=OrderCloseTime();
       // 60 секунд разницы между закрытием первой и последней в сетке
       if (c<=ct+ 60 && c>=ct- 60 ) {
        prAll+=OrderProfit()+OrderCommission()+OrderSwap();
        hTicket=( string )OrderTicket();
        cn++;
      }
   }}}
   ObjectCreate(Ticket+ 'Open' ,OBJ_ARROW, 0 ,a,b);
   ObjectSet(Ticket+ 'Open' ,OBJPROP_COLOR,col);
   ObjectSet(Ticket+ 'Open' ,OBJPROP_ARROWCODE, 1 );
      
   ObjectCreate(Ticket+ 'Line' ,OBJ_TREND, 0 ,a,b,c,d);
   ObjectSet(Ticket+ 'Line' ,OBJPROP_COLOR,col);
   ObjectSet(Ticket+ 'Line' ,OBJPROP_WIDTH, 1 );
   ObjectSet(Ticket+ 'Line' ,OBJPROP_STYLE,STYLE_DOT);
   ObjectSet(Ticket+ 'Line' ,OBJPROP_RAY, 0 );
      
   ObjectCreate(Ticket+ 'Close' ,OBJ_ARROW, 0 ,c,d);
   ObjectSet(Ticket+ 'Close' ,OBJPROP_COLOR,Green);
   ObjectSet(Ticket+ 'Close' ,OBJPROP_ARROWCODE, 3 );
  
   Ticket=cn> 1 ?hTicket:Ticket;
   ObjectCreate(Ticket+ 'Profit' ,OBJ_TEXT, 0 ,c,d);
   ObjectSet(Ticket+ 'Profit' ,OBJPROP_ANCHOR, 0 );
   ObjectSetText(Ticket+ 'Profit' ,DoubleToString(prAll, 2 ), 10 , 'Arial' ,White);
   ObjectSet(Ticket+ 'Profit' ,OBJPROP_PRICE1,d);
   ObjectSet(Ticket+ 'Profit' ,OBJPROP_TIME1,c+Period()* 60 * 2 );

bunun bir şekilde betiğe bağlanması gerekiyor.

bir dizi kapanış Satış emri varsa

ObjectCreate(Ticket+'Borç B', OBJ_HLINE ,0,0,d);
ObjectSet(Ticket+'Borç B',OBJPROP_COLOR,LimeGreen);
ObjectSet(Ticket+'Borç B',OBJPROP_WIDTH,1);

bir dizi kapanış emri satın alırsa

ObjectCreate(Ticket+'Borç M',OBJ_HLINE,0,0,d);
ObjectSet(Ticket+'Borç M',OBJPROP_COLOR,Kırmızı);
ObjectSet(Ticket+'Borç M',OBJPROP_WIDTH,1);

Yardım?
 
-Aleks- :

Hareketli ortalamaların ortalamasını almanın farklı yöntemleri de dahil olmak üzere, sorunu çözmek için algoritmayı tartışmak istiyorum.

Terminalin Include klasöründeki MovingAverages.mqh dosyasına bakın.