Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 815

 
evillive :

Sizce bu döngü ne zaman bitmeli?

?

Sabit:

if(R==0)

{

 while(true)

 {

  Sleep(30000);

  Alert("Ошибка!");

  DeleteBuy=OrderDelete(OrderTicketBuy);

  DeleteSell=OrderDelete(OrderTicketSell);

  return(1);

 }

}

Kâr hesabı da.

while (true) döngüsüne bir mesaj ve hata işleme eklendi. Döngü çalışıyor, mesaj yazılıyor, hata yok. Ancak koşula göre geçmiyor, veriler güncellenmiş gibi görünmüyor.

Dosyalar:
test3_7.mq4  16 kb
 
CJIeCaPb :

while (true) döngüsüne bir mesaj ve hata işleme eklendi. Döngü çalışıyor, mesaj yazılıyor, hata yok. Ancak koşula göre geçmiyor, veriler güncellenmiş gibi görünmüyor.

Sana daha fazla ipucu vereceğim.

Bu döngü tüm siparişleri dikkate almaz, ayrıca aynı türden birden fazla sipariş varsa (örneğin, üç ara sipariş verilir), o zaman ne olacak?

 for (i= 1 ;i<= OrdersTotal ();i++)
{
 Alert (i);
 if ( OrderSelect (i- 1 ,SELECT_BY_POS)== true )
 {
   if (OrderSymbol()!=Symb) continue ;
   if (OrderType()==OP_BUYSTOP)
  {
   OrderTicketBuy=OrderTicket();
   Alert ( "Buy" );
   }
   if (OrderType()==OP_SELLSTOP)
   {
   OrderTicketSell=OrderTicket();
   Alert ( "Sell" );
   }
  }
}


Burada önce emir tipine bakılır ve ancak ondan sonra bu emir seçilir, genel olarak tam tersi olması gerekir, önce emir seçilir, eğer emir seçilirse tipine bakıp her şekilde alay eder. :

 while (OrderType()==OP_BUY) //Buy
{
 RefreshRates();
 
 SelectBuy= OrderSelect (OrderTicketBuy,SELECT_BY_TICKET);
 ...
}
 
//--------------------------------------------------------------------------
//Sell
while (OrderType()==OP_SELL)
{
 RefreshRates();
  
 SelectSell= OrderSelect (OrderTicketSell,SELECT_BY_TICKET);
 ...
}
 


Ve "troll-stoploss tipini değiştir" de, neden tam olarak her yerde devam ??? Ve bu satır bir ve ikinci anahtarda ne zaman yürütülecek?

    CloseBuy=OrderClose(OrderTicketBuy,Lote,Bid, 1 ); continue ;//119
-----
    CloseSell=OrderClose(OrderTicketSell,Lote,Ask, 1 ); continue ; //119
 
evillive :


Burada önce emir tipine bakılır ve ancak ondan sonra bu emir seçilir, genel olarak tam tersi olması gerekir, önce emir seçilir, eğer emir seçilirse tipine bakıp her şekilde alay eder. :

Yani burada:

if(R==1)//238

{

 Alert("yes");

 R=0;

 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);

}


if(R==2)//245

{

 Alert("yes");

 R=0;

 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);

}

Ve "hangi-tür-trol-stoploss-stoploss değiştir" ( = D. Neyi sevmiyorsun? Bence seçenek çok açık. ), neden her yere devam ??? Ve bu satır bir ve ikinci anahtarda ne zaman yürütülecek?

Böylece koşulu kırar:

 Timen=OrderCloseTime();

 if(Timen>0)

 {

  DeleteSell=OrderDelete(OrderTicketSell);

  OldProfit=0;

  WarBuy=true;

  break;

 }

Genel olarak, evet, ara, OrderClose satırında daha iyi görünecektir. Daha sonra OrderDelete'i de kaydetmeniz gerekecektir.

kötü canlı :

Sana daha fazla ipucu vereceğim.

Bu döngü tüm siparişleri dikkate almaz, ayrıca, aynı türden birden fazla sipariş varsa (örneğin, üç bystop siparişi verilir), o zaman ne olacak?

OrdersTotal 1'den ve OrderSelect 0'dan gelir. Bu doğru.

1 finansal araçta aynı türden birden fazla emir mi var? Hariç tutuldu. Ama tekrar bakacağım.

Buna mümkün olduğunca yakın bir koşula ihtiyacınız var: "if MA==fiyat, o zaman".

Bu gidecek:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))

Not: Yeni Yılınız Kutlu Olsun!

 
Bazıları için Yeni Yıl, Yeni Yıl değildir. Yeni Yılın Kutlu Olsun!!!
 

Yeni Yılın Kutlu Olsun!

Geçenlerde MQL 4 öğrenmeye başladım ve bir soru sormak istedim:

Örneğin, bir sipariş açmak için bir şartım var:

if (Teklif>=SS+5*Puan)

OrderSend (Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

Şimdi asıl soru şu: İlk emrin 10 puan veya daha fazla kârı varsa ikinci emrin açılması için hangi koşul yazılmalıdır?

 
lexdemon :

Yeni Yılın Kutlu Olsun!

Geçenlerde MQL 4 öğrenmeye başladım ve bir soru sormak istedim:

Örneğin, bir sipariş açmak için bir şartım var:

if (Teklif>=SS+5*Puan)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

Şimdi asıl soru şu: İlk emrin 10 puan veya daha fazla kârı varsa ikinci emrin açılması için hangi koşul yazılmalıdır?

Burada arama yapın, hemen hemen tüm durumlar için birçok işlev vardır.

https://www.mql5.com/ru/forum/131859

 
lexdemon :

Yeni Yılın Kutlu Olsun!

Geçenlerde MQL 4 öğrenmeye başladım ve bir soru sormak istedim:

Örneğin, bir sipariş açmak için bir şartım var:

if (Teklif>=SS+5*Puan)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

Şimdi asıl soru şu: İlk emrin 10 puan veya daha fazla kârı varsa ikinci emrin açılması için hangi koşul yazılmalıdır?

Önceden Order OrderSelect'i seçmiş olmak (birinci siparişin Bilet_si, SELECT_BY_TICKET);

if(OrderOpenPrice()+10*Puan==Sor)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);

 
CJIeCaPb

 Нужно условие максимально приближенное к этому: "если MA==цене, то".

Такое  пойдет:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))


Yaşasın, işe yarıyor gibi görünüyor. Gereksiz işlemlerin yapılmaması için her döngüye bir dönüş ve bir "O" operatörü ekledim.

Bir sorun: siparişler çarpık bir şekilde veriliyor - durumu nasıl formüle edeceğimi bilmiyorum.

Dosyalar:
test3.mq4  16 kb
 

merhaba, bu soruyu burada sorardım, sorunun tüccarda olduğunu söylediler. bu destekte bunun terminalde bir sorun olduğunu söylediler. Metatrader 4'te de aynı sorunla karşılaşıp karşılaşmadığınızı görün. Önemliyse, bir forexstart tüccarım var.

Sonuç olarak, dakika çizelgesinde çalışan bir ticaret robotu yazdım . tarihi tahlil eder. Birçok çizelgede, saatlik - günlük - yıllık grafikte geçmiş olmasına rağmen, yaklaşık bir buçuk ay için geçmiş sağlanır ve daha fazla değil. Belli bir tarihe kadar geri döndüğü, ardından bir ara verdiği ve grafik birkaç ay önce devam ettiği, ancak her şey yukarıdaki çizelgelerde tekrar olmasına rağmen hala böyle durumlar var.

onunla nasıl savaşabilirsin?


 
pycha :

merhaba, bu soruyu burada sorardım, sorunun tüccarda olduğunu söylediler. bu desteklerde bunun terminalde bir sorun olduğunu söylediler. Metatrader 4'te de aynı sorunla karşılaşıp karşılaşmadığınızı görün. Önemliyse, bir forexstart tüccarım var.

Sonuç olarak, dakika çizelgesinde çalışan bir ticaret robotu yazdım. tarihi tahlil eder. Birçok çizelgede, saatlik - günlük - yıllık grafikte geçmiş olmasına rağmen, yaklaşık bir buçuk ay için geçmiş sağlanır ve daha fazla değil. Belirli bir tarihe kadar geri döndüğü, ardından bir ara verdiği ve grafik birkaç ay önce devam ettiği, ancak her şey yukarıdaki çizelgelerde tekrar olmasına rağmen hala böyle durumlar var.

onunla nasıl savaşabilirsin?


Birkaç silme döngüsünden sonra - DC sunucusundan geçmişi indirirken, hala kesintiler varsa, size böyle bir geçmiş sağlayacaktır. Google Tickstory Lite ve bir onay geçmişi için çok fazla disk alanı hazırlayın, ardından bu geçmişi bir test cihazına besleyin ve on yıl veya daha fazla bir süre içinde M1 olacaksınız.