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

 
Valerius :


Teklifleri güncellemeyi deneyin. Servis - Fiyat teklifi arşivi - döviz çiftinizi seçin - indirin.

Yardımcı olmazsa, metatrader'ı yeniden yükleyin.


Birkaç kez yeniden yüklemeyi ve hatta yeni bir hesap açmayı denedim.... Yardımcı olmadı. Bu neyle alakalı olabilir?

Teşekkürler.

 
sidovi :


Birkaç kez yeniden yüklemeyi ve hatta yeni bir hesap açmayı denedim.... Yardımcı olmadı. Bu neyle alakalı olabilir?

Teşekkürler.


Ve metatrader'ın kurulu olduğu klasördeki tüm dosyaları kurulumdan önce sildiniz mi?

Alıntı arşivini denediniz mi?

 
a196012a :

Daha büyük hacimli tüm siparişler yalnızca 0,3 lotluk bir hacimle açılır. SL'de 0,3 lot hacimli siparişlerin kapatılmasına yanıt olarak daha küçük hacimli tüm siparişler, 0,1 lot hacimli açılır. Sadece 0.1 ve 0.3. Başka cilt yok.

SL ile 0,3 hacimli bir siparişi kapatırken, açıldığı kapanışa yanıt olarak emrin açılış saatini hatırlayın (yani, 0.1 lot hacimli siparişler).

Yardım için teşekkürler.

Aynı zamanda, mesajıma bir yanıt geldiğinde .my e-posta adresime mesaj gönderen seçeneğin nerede yapılandırıldığını söyleyebilir misiniz?

Bir kez daha, çok teşekkür ederim.


Ve gerçekte neye ihtiyacınız var, algoritma mı yoksa yazılı işlevin kendisi mi?
 
a196012a :

Cevabınız için teşekkürler.

Bana ya da algoritmaya ya da işleve.

Ana şey, kodun SL ile 0,3 hacimli bir siparişi kapattıktan sonra saatin değerini hatırlamasıdır.

Bu eylemi tam olarak nasıl kodlayacağımı bilmiyorum.

0,3 hacimli bir sipariş SL tarafından kapatılırsa

{
A2= Açıldığı kapanışa karşılık olarak daha küçük hacimli bir siparişin açılış saatinin değeri
}

================================================= ==============================================

0.1 hacimli birkaç sipariş ONE TICK'te CL tarafından kapatılırsa

{

HER kapalı emrin kapanış fiyatından 0,3 hacimli ayrı bir emir açın

}

================================================= ==============================================

0,3 hacimli birkaç sipariş ONE TICK'te CL tarafından kapatılırsa

{

0.1 hacim ile ilgili HER siparişin açılış saatinin değerini hatırlayın

}

Emirleri açmak ve kapatmak için çalışan bir kod yazdım (ilk gönderiye bakın)

Ancak 0.1 hacimli bir sipariş açma saatinin değerini kaydetmek için hangi kodu ekleyeceğimi bilmiyorum.

Ve SL'de aynı tık üzerinde birden fazla sipariş kapatılırsa, siparişlerin açılışını nasıl kodlayacağımı ve açılış saatinin değerini nasıl hatırlayacağımı bilmiyorum.

Fikrimin uygulanmasıyla ilgili olarak yazdığım kodun değiştirilmesi gerekiyorsa, değiştirmenizde sakınca yok.

TÜM PROGRAMIMIN SON AMACI AÇILIŞ SAATİNİN DEĞERİNİ HATIRLAMAKTIR. Ve diğer tüm işlemler (siparişlerin açılması dahil) bu amaca tabidir ve yardımcı niteliktedir.

Onlarsız nasıl yapacağımı bilseydim, onları koda dahil etmezdim.

Tekrar teşekkürler.


Burada program hakkında attım. Bak, anla. Yorumlar var.

extern int MagicNumber= 123 ;

datetime time;
//=================================================================
void start()
{
int er,se;

if (prov_open_orders()) //Проверяем, есть ли открытые ордера
 {
  se=sear(); //Ищем последний ордер, который закрылся по стопу. Если последний ордер закрылся по профиту
             //то просто возвращается нулевое значение
             //Если Последний ордер закрылся по по стопу, то ищем ордер с лотом 0.1 и возвращаем
           //его время открытия. В переменной time будет время открытия ордера с лотом 0.1
   if (se== 1 )
   {
     if ( OrderType ()== OP_BUY && OrderProfit ()< 0 )
     { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er= OrderSend ( Symbol (), OP_SELL , 0.3 , Bid , 3 , Bid + 400 * Point , Bid - 200 * Point , "jfh" ,MagicNumber);
      time=SearTim(se); //Теперь находим время ордера с лотом 0.1
     }
   }
   if (se== 2 )
   {
     if ( OrderType ()== OP_SELL && OrderProfit ()< 0 )
     { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er= OrderSend ( Symbol (), OP_BUY , 0.3 , Ask , 3 , Ask - 400 * Point , Ask + 200 * Point , "jfh" ,MagicNumber);
      time=SearTim(se); //Теперь находим время ордера с лотом 0.1
     }
   }
 }

return ;
}

//========================
bool prov_open_orders()
{
for ( int is= OrdersTotal ()- 1 ; is >= 0 ; is--)
   {
     if ( OrderSelect (is, SELECT_BY_POS , MODE_TRADES ))
      {
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber)
         {
           if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
           {
             return ( false ); // есть открытые ордера (любые)
           }
         }
      }
   }
return ( true );
}

//=================================================================
datetime SearTim( int s)
{
for ( int is= OrdersHistoryTotal (); is>= 0 ; is--)
   {
     if ( OrderSelect (is, SELECT_BY_POS , MODE_HISTORY ))
      {
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
         {
           if ( OrderType ()== OP_SELL && OrderProfit ()< 0 && OrderLots ()== 0.1 )
           { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
             return ( OrderOpenTime ());
           }
           if ( OrderType ()== OP_BUY && OrderProfit ()< 0 && OrderLots ()== 0.1 )
           { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
             return ( OrderOpenTime ());
           }
         }
      }
   }
return ( NULL );
}

//=================================================================
int sear()
{
for ( int is= OrdersHistoryTotal (); is>= 0 ; is--)
   {
     if ( OrderSelect (is, SELECT_BY_POS , MODE_HISTORY ))
      {
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
         {
           if ( OrderProfit ()> 0 )
           { //Если  закрылся по профиту то просто ухоим из цикла.
               return ( 0 );
           }
           if ( OrderType ()== OP_SELL && OrderProfit ()< 0 )
           { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
             return ( 2 );
           }
           if ( OrderType ()== OP_BUY && OrderProfit ()< 0 )
           { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
             return ( 1 );
           }
         }
      }
   }
return ( 0 );
}
 
Valerius :


Ve metatrader'ın kurulu olduğu klasördeki tüm dosyaları kurulumdan önce sildiniz mi?

Alıntı arşivini denediniz mi?


Evet, 0 sonuç :((
 
sidovi :

Evet, 0 sonuç :((


O zaman sadece desteklemek için DC'nizle iletişime geçin ...

Bunu ilk defa görüyorum.

 
Valerius :


O zaman sadece destek için DC'nizle iletişime geçin ...

Bunu ilk defa görüyorum.


Windows 10'da bunu etkileyen bir hizmet olduğunu düşünüyor musunuz?
 
sidovi :

Windows 10'da bunu etkileyen bir hizmet olduğunu düşünüyor musunuz?

Numara. böyle yok
 
Victor Nikolaev :

Numara. böyle yok

teşekkürler
 
a196012a :

Yardımın için çok teşekkürler

Sadece Kovalev'in ders kitabından programlamanın temellerini ve içinde özetlenen işlevleri öğreniyorum.

Kodunuzda, ders kitabında veya Kod Tabanında karşılamadığım işlevlerle tanıştım.

İşte aşina olmadığım fonksiyonlar

Ara();

SeaTim(se);

prov_open_orders()

Onlar hakkında nerede okuyabileceğimi söylerseniz çok minnettar olurum.

Aynı kodda .