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

 
hoz :


Dün acelem vardı, ayrılmak zorunda kaldım. O an soruyu yazdım, istediğimi değil.

Aslında, tam olarak belirli bir koşul altında bir paket sipariş (ızgara) atan uzmanları kastettim. Bu tür Uzman Danışmanlarda, ne spread'in, ne stop-level'in, ne de fiyatın yukarısındaki (Alış veya Bid'in altında) pozisyonunun veya herhangi bir şeyin kontrol edildiğini görmedim. daha fazla. Şimdi kendim gördüğüm gibi yazacağım, genel mahkeme için yayınlayacağım..


Neden bazı talihsiz uzmanları örnek alsın ki? Asgari olarak, yalnızca testçiye yöneliktirler, maksimum olarak, yukarıda belirtildiği gibi çarpık ellerle yazılırlar ...
 
alsu :

Neden bazı talihsiz uzmanları örnek alsın ki? Asgari olarak, yalnızca testçiye yöneliktirler, maksimum olarak, yukarıda belirtildiği gibi çarpık ellerle yazılırlar ...

Pekala, nasıl uygulanacağını anladım, ama başkalarının nasıl yaptığını görmeye karar verdim.
 

Beyler, çok korkunç bir sorunum var! Çizimi kaydettiğimde grafiğim sola kaymıyor! "Grafik kaydırma" işlevi etkinleştirildi! Nasıl düzeltilir?


 

Merhaba!

EA'nın günde birden fazla işlem açmamasını istiyorum. Bana nasıl yapacağımı söyle.

 

Merhaba, mql4 öğrenmeye yeni başladım belki deneyimli programcılardan biri yardımcı olabilir. Emirler eksiye düşer düşmez kilitleyen, belirli bir seviyeden nasıl kilitleneceği (örneğin emir -30 veya -40'a ulaştığında) özelliklerde ayarlanabilen bir script var.

geçersiz başlangıç()
{
çift StopLoss;
çift Lot=0;
for(int i=0;i<OrdersTotal();i++)
{
if(! OrderSelect (i,SELECT_BY_POS))
devam etmek;
if(OrderSymbol()!=Symbol())
devam etmek;
if(OrderType()==OP_BUY)
Lot+=SiparişLots();
if(OrderType()==OP_SEL)
Çoklar-=SiparişLots();
}
if(lot>0)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Puan,0,NULL,Kırmızı);
eğer(çok<0)
OrderSend(Symbol(),OP_BUY,-(Lots),Ask,3,Bid-StopLoss*Point,0,NULL,Mavi);

 
protey7 :

Merhaba!

EA'nın günde birden fazla işlem açmamasını istiyorum. Bana nasıl yapacağımı söyle.

 extern int MagicNumber= 555 ;
//---
if ( OrdersTotal ()> 0 ) // Есть ли отложенные ордера или открытые позиции
{   for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) // Перебираем ордера
   {   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) // Oрдер выбирается среди открытых и отложенных ордеров
      {   if (OrderSymbol()!= Symbol ()) continue ; // Если торговый символ не тот, на котором работает эксперт - игнорируется
         if (OrderMagicNumber()!=MagicNumber) continue ; // Если магик номер не тот, что надо - игнорируется
         if (OrderOpenTime()>=iTime( NULL , PERIOD_D1 , 0 )) // Если время открытия ордера больше или равен началу открытия данной свечи,
                                                       // то дальший код эксперта не работает. Вместо PERIOD_D1 можно вставить любой другой период.
             return ( 0 );
}  }  }
 
Wild_Wolf :

Beyler, çok korkunç bir sorunum var! Çizimi kaydettiğimde grafiğim sola kaymıyor! "Grafik kaydırma" işlevi etkinleştirildi! Nasıl düzeltilir?

Lütfen dikkat: Sağ üstteki grafikte çok küçük bir üçgen var. Fareyle üzerine geldiğinizde, bir araç ipucu açılır " Grafik Ofseti ". Bağlayın ve sağda yer açmak için ihtiyaç duyduğunuz kadar sola kaydırın.
 
hoz :

Pekala, nasıl uygulanacağını anladım, ama başkalarının nasıl yaptığını görmeye karar verdim.
Ya diğerleri pencereden atlamaya başlarsa?
 
paladin80 :


Bahşiş için teşekkürler!

Yalnızca önerilen sürümde uzman çalışmıyor)))) Aldığım çalışan bir sürüm öneriyorum:

if (OrdersTotal()==0) // Açık pozisyon yoksa

{ for (int i=OrdersHistoryTotal()-1; i>=0; i--) // Hesap geçmişi listesindeki siparişler arasında dolaşın

{ if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) // Kapatılan emirlerden emir seçilir

{

if (OrderCloseTime()>=iTime(NULL,PERIOD_D1,0)) // Emir kapatma zamanı bu mumun açılış başlangıcından büyük veya buna eşitse,

// o zaman uzman çalışmaz. PERIOD_D1 yerine başka bir nokta ekleyebilirsiniz.

dönüş(-1);

} } }

 
alsu :

Neden bazı talihsiz uzmanları örnek alsın ki? Asgari olarak, yalnızca testçiye yöneliktirler, maksimum olarak, yukarıda belirtildiği gibi çarpık ellerle yazılırlar ...


Ben kendi yöntemimle yazdım. Kodu özellikle optimize etmedim, sadece mantığı göstermek için neyin işe yarayacağını yazdım.

 //+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy( double initialOOP, int i)
{
   int ticket;
   
   ticket = OrderSend ( Symbol (), OP_BUYSTOP, 0.1 , NormalizeDouble (Ask + (step*i) * pt, Digits ), 3 , 0 , 0 , NULL ,i_magic, 0 , CLR_NONE );
   
   if (ticket > 0 )
       return ( true );
}
//+-------------------------------------------------------------------------------------+
//| Открытие короткой позиции                                                           |
//+-------------------------------------------------------------------------------------+
bool OpenSell( double initialOOP, int i)
{
   int ticket;
   
   ticket = OrderSend ( Symbol (), OP_SELLSTOP, 0.1 , NormalizeDouble (Bid - (step*i)*pt, Digits ), 3 , 0 , 0 , NULL ,i_magic, 0 , CLR_NONE );
   
   if (ticket > 0 )
       return ( true );
}
//+-------------------------------------------------------------------------------------+
//| Посылаем пачку ордеров на сервер                                                    |
//+-------------------------------------------------------------------------------------+
bool SendPackOfOrders( int lastPosTicket, int lastPosType, double initialOOP)
{
   if (lastPosTicket == - 1 )                         // Если нет рыночных ордеров, значит..
       return ( false );                               //..сетку отложек не кидаем
       
   // if (lastPosType != g_lastPosType)               // Если тикет изменился, значит..
   {
      lastPosType = g_lastPosType;
      
       for ( int i= 1 ; i<= 5 ; i++)
      {
         if (!OpenBuy(initialOOP, i))
             return ( false );
         if (!OpenSell(initialOOP, i))
             return ( false );
      }
   }
}

burada adım - sipariş ızgarasını yerleştirme adımı.

Sorum şu. mantığım doğru mu? Belki bir şekilde daha hızlı çalışması için kodu daha uygun şekilde optimize edebilirsiniz? performans açısından..

Ayrıca, bir fikir var, belki her mesajdan sonra yapılacak duraklama? Genel olarak, bu anlar benim için çok ilginç.

Neden: