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

 
Maxim Kuznetsov :
Görünüşe göre bu metnin orijinali paralel bir evrenden geliyor, google translate tarafından iki kez çevrildi ve ardından Alice tarafından yeniden anlatıldı :-)

İyi. Şimdi daha kolay yazacağım. Son partiyi bulabileceğiniz bir fonksiyon var. Buna FindLastLots denir. Ve sadece son partiyi aramakla kalmayan, yardımıyla Lotları değiştirebileceğiniz bir fonksiyon yapmak istiyorum. Yani, dış lotlar = 0,01 ise; Durdurma kaybından sonra, yazılı işlevi kullanarak lotları = 0,01'i, diyelim ki 0,04'ü değiştirebilirim. Çarpma kullanmamak. Ve burada bunun genel olarak nasıl uygulanabileceğini anlamak için yardıma ihtiyacım var.

 double FindLastLots()
  {
   double oldlots= 0 ;
   int oldticket;
   int ticket= 0 ;

   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic)
           {
            oldticket=OrderTicket();
             if (oldticket>ticket)
              {
               oldlots= OrderLots();
               ticket = oldticket;
              }
           }
        }
     }
   return (oldlots);
  }
Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит...
 
Corvin85 :

...

lotları değiştir = 0.01, diyelim ki 0.04'e. Çarpma kullanmamak.

...

Peki... çarpma ile ilgili sorunlar varsa, o zaman istediğiniz sonucu toplama ile elde edebilirsiniz.

 
Alexey Viktorov :

Peki... çarpma ile ilgili sorunlar varsa, o zaman istediğiniz sonucu toplama ile elde edebilirsiniz.

- :)

kelimeler olmadan
 
Bu fonksiyona, seçilen siparişlerde sırayla dış değişken üzerinde yineleme yapması için bir süre döngüsü eklenebilir mi? Ama daha sonra "döndürülen değeri" nasıl çekip kullanabilirim?
 
Alexey Viktorov :

Peki... çarpma ile ilgili sorunlar varsa, o zaman istediğiniz sonucu toplama ile elde edebilirsiniz.

Alaycılığınızı anlıyorum, ancak çarpma veya hesaplama durumlarında, dış değişkenler Lot kadar çok çarpan olması gerekir. Bu bir çıkış yolu değil. Dürüst olmak gerekirse, bunu düşündüm ...

 
Merhaba!!! M5 zaman çerçevesine dayalı bir danışman yapıyorum....ama sinyaller tetikleniyor (örneğin, 9:33, 12:11'de), vb...... yeni bir siparişte nasıl sipariş açacağımı söyle mum sinyal mevcutsa?
 
Corvin85 :

Alaycılığınızı anlıyorum, ancak çarpma veya hesaplama durumlarında, dış değişkenler Lot kadar çok çarpan olması gerekir. Bu bir çıkış yolu değil. Dürüst olmak gerekirse, düşündüm ...

Ayrıntıları şimdi hatırlamıyorum, ama bana lotu hesaplamak için karmaşık bir şey emrettiler. Sonuç olarak, hesaplamanın yapıldığı bir formül bulundu.

Siparişi daha iyi detaylandırabilir misin? O zaman birisi bu formülü önerebilir.

 
Alexey Viktorov :

Ayrıntıları şimdi hatırlamıyorum, ama bana lotu hesaplamak için karmaşık bir şey emrettiler. Sonuç olarak, hesaplamanın yapıldığı bir formül bulundu.

Siparişi daha iyi detaylandırabilir misin? O zaman birisi bu formülü önerebilir.

 #property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

extern double Lot  = 0.01 ;
extern double Lot2  = 0.02 ;
extern double Lot3  = 0.05 ;
extern double Lot3  = 0.07 ;
//----------- И так далее-------//

Birkaç harici değişken vardır. Emir Stoploss tarafından kapatılmışsa, harici değişkende belirtilen yeni bir lot ile yeni bir emir açılır. (muhtemelen başlangıçta yazmak gerekliydi) Ve işte püf noktası. Sadece kodda nasıl doğru yazacağımı bilmiyorum. Ve yukarıda yazdığım gibi, hiçbir çarpma veya hesaplama, hiçbir dış çarpan yardımcı olmaz. Kapalı siparişlerden verileri bir şekilde ayırmak gerekiyor ...

 
Corvin85 :

Birkaç harici değişken vardır. Emir Stoploss tarafından kapatılmışsa, harici değişkende belirtilen yeni bir lot ile yeni bir emir açılır. (muhtemelen başlangıçta yazmak gerekliydi) Ve işte püf noktası. Sadece kodda nasıl doğru yazacağımı bilmiyorum. Ve yukarıda yazdığım gibi, hiçbir çarpma veya hesaplama, hiçbir dış çarpan yardımcı olmaz. Kapalı siparişlerden verileri bir şekilde ayırmak gerekiyor ...

Bir sipariş açarken, açtığınız kuralın / değişkenin numarasını yorumlara yazın.

sonra geçmişi kazdığınızda - bu numarayı çıkarın, ona 1 ekleyin ve yeni bir kural numarası alın

 
Corvin85 :

Birkaç harici değişken vardır. Emir Stoploss tarafından kapatılmışsa, harici değişkende belirtilen yeni bir lot ile yeni bir emir açılır. (muhtemelen başlangıçta yazmak gerekliydi) Ve işte püf noktası. Sadece kodda nasıl doğru yazacağımı bilmiyorum. Ve yukarıda yazdığım gibi, ne çarpma ne hesaplama ne de harici çarpan yardımcı olmaz. Kapalı siparişlerden verileri bir şekilde ayırmak gerekiyor ...

Bu kodu deneyin, belki ihtiyacınız vardır

 #property copyright "IgorM"
#property link        "https://www.mql5.com/ru/users/igorm"
#property version    "1.00"
#property strict

input double Lot_01  = 0.1 ;
input double Lot_02  = 0.2 ;
input double Lot_03  = 0.3 ;
input double Lot_04  = 0.4 ;
input double Lot_05  = 0.5 ;
input double Lot_06  = 0.6 ;
input double Lot_07  = 0.7 ;

double GetNextLot( const double last_lot)
{
   if (last_lot>=Lot_07) return (Lot_07);
   if (last_lot>=Lot_06) return (Lot_07);
   if (last_lot>=Lot_05) return (Lot_06);
   if (last_lot>=Lot_04) return (Lot_05);
   if (last_lot>=Lot_03) return (Lot_04);
   if (last_lot>=Lot_02) return (Lot_03);
   if (last_lot>=Lot_01) return (Lot_02);
   return (Lot_01);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
   Print (Lot_01, " ---> " ,GetNextLot(Lot_01));
   Print (Lot_02, " ---> " ,GetNextLot(Lot_02));
   Print (Lot_03, " ---> " ,GetNextLot(Lot_03));
   Print (Lot_04, " ---> " ,GetNextLot(Lot_04));
   Print (Lot_05, " ---> " ,GetNextLot(Lot_05));
   Print (Lot_06, " ---> " ,GetNextLot(Lot_06));
   Print (Lot_07, " ---> " ,GetNextLot(Lot_07));
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {

  }
//+------------------------------------------------------------------+
void OnTick ()
  {

   
  }
//+------------------------------------------------------------------+

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.7 ---> 0.7

2019.11.28 22:31:26.409 tst EURUSD,H1: 0,6 ---> 0,7

2019.11.28 22:31:26.409 tst EURUSD,H1: 0,5 ---> 0,6

2019.11.28 22:31:26.409 tst EURUSD,H1: 0,4 ---> 0,5

2019.11.28 22:31:26.409 tst EURUSD,H1: 0,3 ---> 0,4

2019.11.28 22:31:26.409 tst EURUSD,H1: 0,2 ---> 0,3

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.1 ---> 0.2

GetNextLot() işlevimde, son kapatılan siparişin hacmini göndereceksiniz ve bu, Lot_XX ayarının bir sonraki değerini döndürecek

böyle bir koddaki tek kısıtlama parti ayarlarının artan sırada olması gerektiğidir - bence kod basit ve anlaşılır, görevleriniz için yeniden yapabilirsiniz

Neden: