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

 
законопослушный гражданин # :

Görebildiğim kadarıyla, fark aşağıdaki gibidir:

En azından hikayeyi baştan, hatta sondan itibaren gözden geçirin. Fark yok. Her neyse, fonksiyon en son kapanma zamanına sahip emri arar. Ve siparişleri silmek veya kapatmak istiyorsanız, listenin sonundan bir arama yapmanız gerekir. Aksi takdirde, döngü siparişleri atlayacaktır.

 
законопослушный гражданин # :

Görebildiğim kadarıyla, fark aşağıdaki gibidir:

Bu durumda, hiçbir fark yoktur. OrersTotal'dan 0'a olan döngü, yalnızca pozisyonların kapatılması veya siparişlerin silinmesi durumunda olmalıdır. Diğer durumlarda, bir amatör.

 
Mihail Matkovskij # :

En azından hikayeyi baştan, hatta sondan itibaren gözden geçirin. Fark yok. Her neyse, fonksiyon en son kapanma zamanına sahip emri arar. Ve siparişleri silmek veya kapatmak istiyorsanız, listenin sonundan bir arama yapmanız gerekir. Aksi takdirde, döngü siparişleri atlayacaktır.

İşlev, en son kapanış saatine sahip bir sipariş arıyorsa, arama açıkça tarihin başlangıcından değil, sondan - şimdiki zamandan geçmişe kadar daha hızlı olacaktır.

 
Artyom Trishkin # :

İşlev, en son kapanış saatine sahip bir sipariş arıyorsa, arama açıkça tarihin başlangıcından değil, sondan - şimdiki zamandan geçmişe kadar daha hızlı olacaktır.

Ters yönde ise fonksiyon en son kapanma zamanına sahip sırayı daha hızlı bulur, döngü sonuna kadar değiştirmez ve sonucu döndürür. İleri yönde, tüm siparişleri yineler ve son siparişlerden birini döndürür. Aradaki fark, döngünün her geçişinde değişkenlerin üzerine yazılacak olmasıdır. Evet. O. Ama önemli olduğunu düşünmüyorum. olsam da   ileri değil geri dönmeyi tercih etti. Öyle ya da böyle olmasına rağmen, işlev çalışacaktır.

 
Herkese merhaba, programlı olarak grafik pencereleri arasında geçiş yapmanın, yani programdan herhangi bir grafiği aktif hale getirmenin bir yolu var mı?
 
Maksim Mihajlov # :
Herkese merhaba, programlı olarak grafik pencereleri arasında geçiş yapmanın, yani programdan herhangi bir grafiği aktif hale getirmenin bir yolu var mı?

Orada

CHART_BRING_TO_TOP

Grafiği diğerlerinin üstünde göster

bool

 
Alexey Viktorov # :

Orada

CHART_BRING_TO_TOP

Grafiği diğerlerinin üstünde göster

bool

Sayesinde!

 
Mihail Matkovskij # :

En azından hikayeyi baştan, hatta sondan itibaren gözden geçirin. Fark yok. Her neyse, fonksiyon en son kapanma zamanına sahip emri arar. Ve siparişleri silmek veya kapatmak istiyorsanız, listenin sonundan bir arama yapmanız gerekir. Aksi takdirde, döngü siparişleri atlayacaktır.

genel olarak, siparişlerin parti büyüklüğünü hesaplamak dışında tamamen aynı iki danışman yaptım !!. ve işte sonuç:

ÇALIŞMAZ (yani SATIŞ yerine BAY açmaz)

 void OnTick ()
{
// Получим значение индикатора
   dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
       if (CountOrders()== 0 )
 {
//Если появился сигнал на покупку, то откроем ордер на покупку
   if (bSignalBuy())
  {
   if (GetLotSize()>LotControl) vOrderOpenSell();
   else vOrderOpenBuy();
  }
// Если появился сигнал на продажу, то откроем ордер на продажу
   if (bSignalSell())
  {
   if (GetLotSize()>LotControl) vOrderOpenBuy();
   else vOrderOpenSell();
  }
 }
}
,,,
double GetLotSize()
  {
   double Ls= 0 ;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol()== _Symbol && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY || OrderType()==OP_SELL) {Ls=OrderLots();}
           }
        }
     }
   return Ls;
  }

ÇALIŞIYOR ((yani SATIŞ yerine BAY açar )


 void OnTick ()
{
// Получим значение индикатора
   dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
       if (CountOrders()== 0 )
 {
//Если появился сигнал на покупку, то откроем ордер на покупку
   if (bSignalBuy())
  {
   if (GetLotSize()>LotControl) vOrderOpenSell();
   else vOrderOpenBuy();
  }
// Если появился сигнал на продажу, то откроем ордер на продажу
   if (bSignalSell())
  {
   if (GetLotSize()>LotControl) vOrderOpenBuy();
   else vOrderOpenSell();
  }
 }
}
...
double GetLotSize()
  {
   double Ls= 0 ;
   datetime t= 0 ;
   int i=OrdersHistoryTotal();
   for ( int pos= 0 ; pos<i; pos++)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if (OrderSymbol()== _Symbol && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if (t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }
 
законопослушный гражданин # :

genel olarak, siparişlerin parti büyüklüğünü hesaplamak dışında tamamen aynı iki danışman yaptım !!. ve işte sonuç:

ÇALIŞMAZ (yani SATIŞ yerine BAY açmaz)

ÇALIŞIYOR ((yani SATIŞ yerine BAY açar )


Farkı bir kez daha vurguluyorum

1 seçenek

 double GetLotSize()
  {
   double Ls= 0 ;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES ))

seçenek 2

 double GetLotSize()
  {
   double Ls= 0 ;
   datetime t= 0 ;
   int i=OrdersHistoryTotal();
   for ( int pos= 0 ; pos<i; pos++)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY ))
 
законопослушный гражданин # :

genel olarak, siparişlerin parti büyüklüğünü hesaplamak dışında tamamen aynı iki danışman yaptım !!. ve işte sonuç:

ÇALIŞMAZ (yani SAT yerine BAY açmaz)

ÇALIŞIYOR ((yani SATIŞ yerine BAY açar )


OrdersTotal , OrdersHistoryTotal 'u körü körüne kopyalamak yerine ne kodladığınızı anlamaya çalışın.

SiparişSeç

havuz =MODE_TRADES

[içinde] Seçilecek veri kaynağı. Select parametresi SELECT_BY_POS olduğunda kullanılır. Aşağıdaki değerlerden biri olabilir:

MODE_TRADES (varsayılan) - emir, açık ve bekleyen emirler arasından seçilir,
MODE_HISTORY - emir, kapatılan ve silinen emirler arasından seçilir.

    OrdersTotal - Торговые функции - Справочник MQL4
    OrdersTotal - Торговые функции - Справочник MQL4
    • docs.mql4.com
    OrdersTotal - Торговые функции - Справочник MQL4