[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 347

 

Merhaba, soru şu. Sadece sabit bir fraktal ile işlem yapılacak şekilde kod nasıl yazılır?

Fraktal sabitse, o zaman ....

benim fraktalım

int start()
  {
//----
     double CenBuy = High[isFractalUp()];
     double CenSell = Low[isFractalDn()];

   return ( 0 );
}

int isFractalUp()
{
 for ( int i= 0 ; i != 10 ; i++)
 {
 if ( iFractals ( NULL , 0 , MODE_UPPER, i)!= NULL ) return (i);
 }
 return (- 1 );
}
 
int isFractalDn()
{
 for ( int i= 0 ; i != 10 ; i++)
 {
 if ( iFractals ( NULL , 0 , MODE_LOWER, i)!= NULL ) return (i);
 }
 return (- 1 );
}
 
hoz :

hm. Evet, her yöndeki mevduat sayısı aynıysa, karşılık gelen mevduat bu şekilde sorunsuz aranır. Ve eğer farklıysa, o zaman bu seçenek anladığım gibi çalışmayacak.

Ardından gecikmeyi tetikleme gerçeğini belirleyin ve en uzaktaki zıt olanı kaldırın.

Bütün bunlar sadece bir gerçek için ve bir seferde bir erteleme için yapılır. Denediğiniz gibi, tetiklenenlerin sayısını ve silinenlerin sayısını sınırlamanıza gerek yok. Depozitoyu tek bir tıklamayla dönüştürme gerçeğini yakalayacaksınız. Diğer tüm tetikleyiciler (daha sonra gerçekleşirse) sonraki onay işaretleriyle belirlenecektir.

 
Bana kimin bildiğini söyle. Hafta içi test cihazının sonucu hafta sonu sonuçlarından neden farklı? Alpari
 

berezhnuy   yayılma nedeniyle, hafta sonları birkaç kat daha büyüktür.

 

Sevgili programcılar, bana şunu söyleyin, sadece bir alış veya satış emrinin açılması için alış ve satış emirlerini sayma kodu aşağıdadır:

int CountBuy()
{
int sayı = 0;
for(int ticaret = OrdersTotal()-1; ticaret >= 0; ticaret--)
{
OrderSelect(ticaret, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == magic)
{
if(OrderType() == OP_BUY)
say++;
}

}
dönüş(sayım);
}
//+------------------------------------------- --------------------+
int SaySat()
{
int sayı = 0;
for(int ticaret = OrdersTotal()-1; ticaret >= 0; ticaret--)
{
OrderSelect(ticaret, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == magic)
{
if(OrderType() == OP_SEL)
say++;
}

}
dönüş(sayım);
}

Ve her şey çalışıyor gibi görünüyor, ancak benim Uzman Danışmanımda, TP ve SL kullanarak bazı mum kalıpları için alım ve satım koşulları var. Böylece, koşul karşılandığında ve TP çalıştığında, 0 mum oluşumu anında, sipariş açma koşulları doğru olmaya devam eder ve artık gerekli olmayan yeni siparişler hemen açılır. Bu nedenle, lütfen bana siparişlerin daha fazla açılmasını yasaklamak için hangi kodun kullanılabileceğini söyleyin? Danışmanın kendisi ekte yer almaktadır.

Dosyalar:
expert.mq4  4 kb
 
artmedia70 :

Ardından gecikmeyi tetikleme gerçeğini belirleyin ve en uzaktaki zıt olanı kaldırın.

Bütün bunlar sadece bir gerçek için ve bir seferde bir erteleme için yapılır. Denediğiniz gibi, tetiklenenlerin sayısını ve silinenlerin sayısını sınırlamanıza gerek yok. Depozitoyu tek bir tıklamayla dönüştürme gerçeğini yakalayacaksınız. Diğer tüm tetikleyiciler (daha sonra gerçekleşirse) sonraki onay işaretleriyle belirlenecektir.



Kene başına daha fazla geçiş olursa ne olur? Diyelim ki gecikmeler arasındaki adım çok küçükse, birden fazla gecikme işe yarayabilir. Ess-ama o zaman gerekli işlemleri zamanında yapmak için zamanımız olmayacak.
 
hoz :

Kene başına daha fazla geçiş olursa ne olur? Diyelim ki gecikmeler arasındaki adım çok küçükse, birden fazla gecikme işe yarayabilir. Ess-ama o zaman gerekli işlemleri zamanında yapmak için zamanımız olmayacak.
Mevcut çubukta tetiklenen emirlerin aranması ve aynı döngüde bekleyen emirlerin kaldırılması için açık pozisyonlarda döngü
 
artmedia70 :
Mevcut çubukta tetiklenen emirlerin aranması ve aynı döngüde bekleyen emirlerin kaldırılması için açık pozisyonlarda döngü


Eh, tekrar döngüye giriyor ve yine her şey yıkılacak. Peki, şu anda koşulu olan sürümde:

 while (ordersToDelete > 0 )                       // Если есть ордера, которые требуется удалить..
   {
      OrderDelete(s_ticket,Black);
      ordersToDelete--;                         // Уменьшаем количество требуемых ордеров для удаления на 1, т.к. строкой выше..
                                               // .. один отложенник уже удалили
   }

Onlar. orderToDelete sıfıra eşit olana kadar silinmelidir. Ve her şeyi indiriyor. Görünüşe göre her şey basit, ancak bir tür kaos yaşanıyor. İşe yaramaz bir ders kitabında böyle anlarla ilgili hiçbir şey yoktur. Zaten bu şekilde bükülmüş ve farklı şekillerde yeniden yazılmış, bir incir olması gerektiği gibi çalışmıyor.

 

Farklı şekilde yeniden yazılmıştır:

 //+-------------------------------------------------------------------------------------+
//| Удаление несработанных отложеннык шортов                                            |
//+-------------------------------------------------------------------------------------+
void DeletePendingSells( int & amountOfCurrPending)
{
   int total = OrdersTotal () - 1 ,
       ordersToDelete = level - amountOfCurrPending,   // Количество отложек, которые требуется удалить
       s_ticket = - 1 ,                                 // Тикет искомого ордера
       np = - 1 ;                                       // Номер позиции искомого ордера
   amountOfCurrPendingBuys = 0 ;                       // Количество текущих отложек на покупку
   amountOfCurrPendingSells = 0 ;                       // Количество текущих отложек на продажу

   double OOP = 20.0 ;                                 // Зададим значение цены открытия отложки, которой не может быть..
   
   if (ordersToDelete == 0 ) return ( 0 );               // Если ничего удалять не нужно, выйдем из функции

   for ( int i=total; i>= 0 ; i--)
   {
       if (! OrderSelect (i,SELECT_BY_POS)) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderType() != OP_SELLSTOP) continue ;         // Работает только с шортовыми ордерами
      
       if (OOP > OrderOpenPrice())
      {
          OOP = OrderOpenPrice();                   // Ищется ордер, с минимальной ценой открытия
          np = i;
      }
   }
   if ( OrderSelect (np,SELECT_BY_POS))
   {
      s_ticket = OrderTicket();                 // Получаем тикет ордера с минимальной ценой открытия
      OrderDelete(s_ticket,Black);
   }
   
   return ( 0 );
}

Kim de bakıyor. Minimum açılış fiyatı olan bir emir buldum, pozisyonunu belirledim ve bu emri seçtim, biletini belirledim ve sildim. AMA kaldırılmaz.

 
Neden pozisyonunu değil de sipariş biletini hatırlamıyorsun. ve böyle bir düzen olmazsa direkt iletimde ne olacak? sıfır siparişi siler misin