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

 

abeikler :

Bazen denemek Yalnızca son iki satın alma pozisyonunu kapatmak için kapanış satın alma pozisyonu bloğunu yeniden yapın , ancak işe yaramıyor . önerebilir misin gibi blok değiştir?

 //+------------------------------------------------------------------+
//|                                                         0000.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link       ""
void Close_2buy()
   {
   bool      result;
   int       Count= 2 ,Ticket=-1,error;
   datetime time= 0 ;
   while (Count> 0 )
      {
       for ( int f= OrdersTotal ()- 1 ; f>= 0 ; f--) // 
         {
         OrderSelect (f, SELECT_BY_POS);
         if (OrderSymbol()== Symbol () &&(OrderMagicNumber()==magic ) 
         && (OrderType() == OP_BUY )) 
            {
             if (OrderOpenTime()>time)
               {
               time=OrderOpenTime();Ticket=OrderTicket();
            }
         }
      }
       if ( OrderSelect (Ticket,SELECT_BY_TICKET)==True);
         {
         result=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble (Bid, Digits ), 0 , CLR_NONE );
         if (result!=TRUE){error= GetLastError (); Print ( "LastError = " , error);}
      }
      else{error= GetLastError (); Print ( "LastError = " , error);} 
      Ticket=-1;time= 0 ;Count--;
   }
   return ;
} 
 
ametist444 :

Merhaba!

Bu pencereyi elde etmek için hangi dosyaları indirmeniz gerektiğini ve bunları mt4'te nereye kuracağınızı söyleyin?

Test edilen cihazın farklı zaman dilimlerinde simülasyon sayfasında, nasıl yapacağımı anlamadım

ve günlük dört saatlik ve saatlik sadece üç grafiği görmek istiyorum.

lütfen yardım edin, bütün gece boyunca en fazla hiçbir şey olmadı !!!



Expert Advisor görsel modda test edilirken (görsel) türden pencereler açılır.


 
peshihod :

Ne tür bir StopLoss?

Belki doğru ifade edemedim :(

Emirleri açmak için bir algoritma var.

Herhangi bir son siparişi kapatma seçeneği için, bir sonrakinin diğer yönde açılması gerekir (sırasıyla koşullar göründüğünde).

Her şey çalışıyor ama zararı durdur örneğin satarak kapattıysanız ve bu yönde satarak açma koşulları varsa açılışlar devam ediyor. Ve satın almak için şartları beklemeniz gerekiyor.

Yani, son kapatılan siparişi, açılış ile çakışmayacak şekilde kontrol etmeniz gerekir (al-sat-al-sat değişimi). İşlemde olan veya sinyal bekleyen tek bir emir var.

Büyük olasılıkla OrdersHistoryTotal() aracılığıyla gerekli olduğunu anlıyorum, ancak çalışan bir Uzman Danışmanda nasıl görünebilir?

Teşekkür ederim.

 
delf :

Emirleri açmak için bir algoritma var.

Herhangi bir son siparişi kapatma seçeneği için, bir sonrakinin diğer yönde açılması gerekir (sırasıyla koşullar göründüğünde).

Yani, son kapatılan siparişi, açılış ile çakışmayacak şekilde kontrol etmeniz gerekir (al-sat-al-sat değişimi). İşlemde olan veya sinyal bekleyen tek bir emir var.

Değişim her zaman ve her durumda gerçekleşir ve işte her zaman sadece bir düzen mi vardır?

Ardından , koşula sipariş sayısının kontrolünü eklemek daha kolaydır:

 if ( OrdersTotal ()== 0 )
{
	if (OldOrder==OrderBuy)
		{
		...
		}
	else
		{
		...
		}
}
 
rigonich :


Sorun şudur: Bu işlevde OrderSelect() bulunmadığından, sipariş döngüsünde bir yerde kullanılmış gibi görünüyor. Bu döngü, sıfırdan sonuncuya kadar bir arama düzenlerse, o zaman ilk sıranın değiştirilmesinden sonra veya örneğin, bu işaret üzerinde bir emir kapatılmışsa, OrderSelect() işlevi bir sonraki çağrıldığında, sipariş emir değişiklikleri ve fonksiyon, halihazırda değiştirilmiş olan bir emri değiştirmek için seçebilir. Bu nedenle, emrin stop loss değerinin OrderModify() fonksiyonuna ilettiğimiz değere eşit olup olmadığını kontrol etmemiz gerekiyor.


hayır biri kapalıyken pozisyon seri numarası değiştirme sorunu çözüldü bunda bir yanlışlık olabilir diye defalarca kontrol ettim ama herşey yolunda , gerekli sıra seçilmiş ve stop Kayıp bunun için doğru hesaplanmış ancak sipariş değiştirilmek istemiyor. .
 

delf :

Son siparişi kapatmak için herhangi bir seçenekle, bir sonrakinin farklı bir yönde açılması gerekir (sırasıyla koşullar göründüğünde).

Daha katı bir versiyon

 #define OrderBuy   0
#define OrderSell 1
int NewOrder;
int RezultatSend; 

int start()
{
... 
... 

if ( OrdersTotal ()== 0 )
{
if (NewOrder==OrderBuy)
   {
   if ( /*Условие для Buy*/ )
      { RezultatSend= OrderSend ( /*...buy*/ );     //Ставим Buy
         if (RezultatSend!=- 1 )NewOrder=OrderSell; //Если ставка прошла
      }
   }
 else
   {
   if ( /*Условие для Sell*/ )
      { RezultatSend= OrderSend ( /*...*/ );       //Ставим Sell
         if (RezultatSend!=- 1 )NewOrder=OrderBuy; //Если ставка прошла
      }
   }
}

...
...

}  
 

abeiks :

Bazen denemek Yalnızca son iki satın alma pozisyonunu kapatmak için kapanış satın alma pozisyonu bloğunu yeniden yapın , ancak işe yaramıyor . önerebilir misin gibi blok değiştir?

Son bir pozisyonu kapatmak için bir fonksiyon (blok) yapmak daha kolay ve daha uygundur. Ve iki kez çalıştırın. Bir döngüde veya sadece arka arkaya.
 
abeiks :

Bazen denemek Yalnızca son iki satın alma pozisyonunu kapatmak için kapanış satın alma pozisyonu bloğunu yeniden yapın , ancak işe yaramıyor . önerebilir misin gibi blok değiştir?

Bir süre önce, son pozisyonları aramayı çözmek için size bir algoritma verdim . Ve sonra onlarla ne yapılacağı ÖNEMLİ DEĞİLDİR: STOP'ları saymak, silmek, değiştirmek. En azından "görüntüde ve benzerlikte" kod yazamıyorsanız, bu sizin (programlamanız) değil ...
 
rigonich :



Teşekkür ederim!

 
peshihod :
Son bir pozisyonu kapatmak için bir fonksiyon (blok) yapmak daha kolay ve daha uygundur. Ve iki kez çalıştırın. Bir döngüde veya sadece arka arkaya.

Teşekkürler, bu iyi bir fikir, ben de deneyeceğim.