Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 642

 
paylesss :

Teşekkürler! Bilgisayarı yeniden başlatmak yardımcı oldu! Yazık, sabahtan beri oturuyorum))

ama şimdi terminal yapısı çok daha alakalı ve global değişkenlerin düştüğünü adım adım ne yaptığınızı hatırlamanız tavsiye edilir. Durumu tekrarlamak mümkünse - bu genellikle harika olurdu.

 
Kirill Andreev :

bir baykuş yazdı, ama nedense sondaki durdurma çalışmıyor ... nedeni ne olabilir?

çalışması için OnTick'e göndermeniz gerekir.
 
Vladislav Andruschenko :
çalışması için OnTick'e itmeniz gerekir
Teşekkürler, deneyeceğim!!!
 

Merhaba.

Lütfen yardım edin, sonuncusu, “en genç”i hariç tüm pozisyonları değiştirmek istiyorum. Nereye eklenir veya çıkarılır ?


 int i; total = OrdersTotal();
          for(i = 0; i < total; i++)
             {
              if(OrderSelect(i, SELECT_BY_POS)   && OrderLots() == _Lots)
              {
              if (OrderType()==OP_BUY) 
              {
              if (OrderOpenPrice()!=OrderStopLoss()) 
              {
              ModifyOrder(-1,OrderOpenPrice() , -1);
              }
             } 
            }  
           }
 
mila.com :

Merhaba.

Lütfen yardım edin, sonuncusu, “en genç”i hariç tüm pozisyonları değiştirmek istiyorum. Nereye eklenir veya çıkarılır ?



 int i; total = OrdersTotal();
          for(i = 0; i < total -1 ; i++)
             {
              if(OrderSelect(i, SELECT_BY_POS)   && OrderLots() == _Lots)
              {
              if (OrderType()==OP_BUY) 
              {
              if (OrderOpenPrice()!=OrderStopLoss()) 
              {
              ModifyOrder(-1,OrderOpenPrice() , -1);
              }
             } 
            }  
           }


 
-Aleks- :
 int i; total = OrdersTotal();
          for(i = 0; i < total -1 ; i++)
             {
              if(OrderSelect(i, SELECT_BY_POS)   && OrderLots() == _Lots)
              {
              if (OrderType()==OP_BUY) 
              {
              if (OrderOpenPrice()!=OrderStopLoss()) 
              {
              ModifyOrder(-1,OrderOpenPrice() , -1);
              }
             } 
            }  
           }

Listedeki son konumu atlamak için güvenilir bir yol gösterdiğinizden emin misiniz?

Ticaret yapmak gerçekse, sıralamanın aniden bağımlılık yapabileceğinden endişelenmiyor musunuz?

Yine de, IMHO, burada iki döngüye ihtiyaç var - ilkinde açılış saatine göre en taze pozisyonu arıyoruz, ikincisinde bileti ilk döngüde bulunan hariç her şeyi değiştiriyoruz.

 
mila.com :

Merhaba.

Lütfen yardım edin, sonuncusu, “en genç”i hariç tüm pozisyonları değiştirmek istiyorum. Nereye eklenir veya çıkarılır ?


yapardım.

 /********************Script program start function********************/
void OnStart ()
{
 int i, t1, t2, clTicket, total = OrdersTotal ();
   datetime d1, d2;
   double v1, v2, clVolume;
     for (i = total- 1 ; i > 0 ; i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS ))
       {
        t1 = OrderTicket ();
         d1 = OrderOpenTime ();
        v1 = OrderLots ();
       }
       else continue ;
         if ( OrderSelect (i- 1 , SELECT_BY_POS ))
         {
          t2 = OrderTicket ();
           d2 = OrderOpenTime ();
          v2 = OrderLots ();
         }
         else continue ;
        clTicket = d1 > d2 ? t1 : t2;
       clVolume = d1 > d2 ? v1 : v2;
       if (! OrderClose (clTicket, clVolume, OrderClosePrice () , 100 )) // закрывает независимо от типа ордера OP_BUY или OP_SELL
       Print ( "фигня кака-та" );
    }
} /********************************************************************/

Ne yazık ki, bu doğrulanmadı ve bir sonraki siparişi kapattıktan sonra sipariş listesinde bir “delik” oluşması mümkün olup olmadığını anlayamıyorum.

Birisi böyle bir "deliğin" ortaya çıkma olasılığını açıklayabilirse minnettar olacağım ...

Eklenen sigortalar için devam; bir delik varsa, bir sipariş basitçe atlanacaktır. Bana öyle geliyor.

 
Alexey Viktorov :

yapardım.

Ne yazık ki, bu doğrulanmadı ve bir sonraki siparişi kapattıktan sonra sipariş listesinde bir “delik” oluşması mümkün olup olmadığını anlayamıyorum.

Birisi böyle bir "deliğin" ortaya çıkma olasılığını açıklayabilirse minnettar olacağım ...

Takılan sigortalar için devam; bir delik varsa, bir sipariş basitçe atlanacaktır. Bana öyle geliyor.

Başlangıçta, soru son sırayı atlamaktı . Ve onunla başlarsın.

Bunu yapmanız gerekir:

 for (int i = total- 2 ; i >= 0 ; i--)

Ardından, silme işleminden sonra boşluk kalmayacak ve en son sipariş atlanacaktır.

 
Alexey Kozitsyn :

Başlangıçta, soru son sırayı atlamaktı . Ve onunla başlarsın.

Bunu yapmanız gerekir:

Ardından, silme işleminden sonra boşluk kalmayacak ve en son sipariş atlanacaktır.

Listedeki son değil, zaman içinde "en genç".

Ben de dikkatli olmamama rağmen. Soru modifikasyonla ilgili ve ben bir kapanış yazıyorum... Ve eğer sadece değiştirirseniz, o zaman sipariş listesinde boşluk kalmayacak... Sadece değişkenler eklemeniz ve bunlara değer atamanız gerekebilir. ve ZORUNLU, 1 numaralı hatayı almamak için parametreleri kontrol edin. Mila kendi başına halledebilir.

 
Alexey Kozitsyn :

Başlangıçta, soru son sırayı atlamaktı . Ve onunla başlarsın.

Bunu yapmanız gerekir:

 for (int i = total- 2 ; i >= 0 ; i--)

Ardından, silme işleminden sonra boşluk kalmayacak ve en son sipariş atlanacaktır.

Sıralama bağımlılığının görünmeyeceğinden ve yanlış sırayı kaçıracağınızdan nasıl kesinlikle emin olabilirsiniz?

Bir kez daha tekrar ediyorum: tam olarak son siparişi güvenilir bir şekilde bulmak için, listedeki konuma göre değil açılış saatine göre belirlenmelidir .