Kapatılan siparişler için kar hesaplaması "YARDIM" - sayfa 2

 
Renat Akhtyamov :

Hayır, zaten yazdıklarınızdan bahsetmiyorum.
Kelimelerle anlatın - ilgilendiğiniz kapalı siparişler için kar hesaplaması
- günlük
- kârsız
- Son sipariş
ya da başka nasıl?
Seriyi tanımlayın

Bir dizi son kapalı sipariş "şimdilik"

 
Natashe4ka :

Bir dizi son kapalı sipariş "şimdilik"

Yani, doğru anladıysam, son kapatılan siparişler dizisi hakkında bilgiye mi ihtiyacınız var?

Bu yaklaşımı uygulamak için, önce her başarılı kapanışta sipariş biletleri dizisini doldurmanız ve ardından ihtiyacınız olan formdaki kapalı siparişlerle ilgili bilgileri çekmeniz gerekir.

Kendin yapabilir misin?

 

Denemek


Comment ( LastProfitCL(- 1 , 0 ) );

//+----------------------------------------------------------------------------+
//|    Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL( int op=- 1 , datetime t= 0 ){ //"op" позиция (-1 любая позиция)
double LastProfit= 0 ;
   for ( int i= OrdersHistoryTotal ()- 1 ;i>= 0 ;i--) {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) {
     if ((op< 0 || OrderType ()==op) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic){
     if (t<= OrderCloseTime ()) {
       t= OrderCloseTime ();
       LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
  }}}} 

 return (LastProfit);
}
 
Vitaly Muzichenko :

Denemek


Comment ( LastProfitCL(- 1 , 0 ) );

//+----------------------------------------------------------------------------+
//|    Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL( int op=- 1 , datetime t= 0 ){ //"op" позиция (-1 любая позиция)
double LastProfit= 0 ;
   for ( int i= OrdersHistoryTotal ()- 1 ;i>= 0 ;i--) {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) {
     if ((op< 0 || OrderType ()==op) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic){
     if (t<= OrderCloseTime ()) {
       t= OrderCloseTime ();
       LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
     }
    }
   }
  }
return (LastProfit);
}

Ya aynı anda kapanmazsa?

az değil

Ve kapanışta bir sipariş verirken, t'yi unutmayın, o zaman normal olacaktır.

ama bu çizgi

t= OrderCloseTime ();

gerek yok

Tüm serideki toplam toplamı çıkaracak

Ama hanımefendi ilk mesajdan anladığım kadarıyla daha detaylı bilgi istiyor.

 
Renat Akhtyamov :
Ya aynı anda kapanmazsa?
İşlev kapalıysa, her şey işe yarayacaktır.
 
Renat Akhtyamov :

Yani, doğru anladıysam, son kapatılan siparişler dizisi hakkında bilgiye mi ihtiyacınız var?

Bu yaklaşımı uygulamak için, başarılı bir kapanışın ardından önce bir dizi sipariş bileti oluşturmanız ve ardından kapatılan siparişler hakkında bilgi almanız gerekir.

Kendin yapabilir misin?

örnek versen iyi olur

Onlar.

if (cnt> 0 ) Ticket= OrderTicket ()- 1 ;

ve daha fazla karşılaştırmak?

 
Natashe4ka :

örnek versen iyi olur

Onlar.

if (cnt> 0 ) Ticket= OrderTicket ()- 1 ;

ve daha fazla karşılaştırmak?

Sorun yok

Şimdi açıklığa kavuşturulması gerekiyor - serinin kapalı siparişleriyle ilgili bilgiler nasıl görünmelidir?

Transfer, tutarı + ve - ile çekecek mi yoksa bölecek mi?

 

bir gösterge var

i-Kar

Bugün, hafta, ay, yıl için bilgileri, mevcut karı görüntüler.

 
Natashe4ka :

örnek versen iyi olur

İşte bir seçenek:

int ClosePosition( int type=- 1 , int mg=- 1 ) {
GlobalVariableSet (GetGlobalVariableName( "LastProfit" ), TimeCurrent ()); // запомним время закрытия
// здесь код закрытия всех и сразу, нужен цикл, чтоб не выходил с функции до полного закрытия всех
}

Bundan sonra, diğer her şey

//+----------------------------------------------------------------------------+
//|    Возвращает суммарный профит в валюте депозита серии закрытых позиций    |
//+----------------------------------------------------------------------------+
double LastProfitCL( int op=- 1 , datetime t= 0 ){ //"op" позиция (-1 любая позиция)
double LastProfit= 0 ;
   for ( int i= OrdersHistoryTotal ()- 1 ;i>= 0 ;i--) {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) {
     if ((op< 0 || OrderType ()==op) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic){
     if (t<= OrderCloseTime ()) {
       t= OrderCloseTime ();
       LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
  }}}}
return (LastProfit);
}

//===============================================================================================
//----------------------- Создает и возвращает имя глобальной переменной -----------------------+
//===============================================================================================
string GetGlobalVariableName( string name= "" , string symb= "0" ) {
if (symb== "0" ) { symb= Symbol ();}
   if (! MQLInfoInteger ( MQL_TESTER )) {
   return (prefix+symb+ "_" +( string ) AccountInfoInteger ( ACCOUNT_LOGIN )+ "_" + MQLInfoString ( MQL_PROGRAM_NAME )+ "_" +name);
  } else {
   return (prefix+symb+ "_" +( string ) AccountInfoInteger ( ACCOUNT_LOGIN )+ "_" + MQLInfoString ( MQL_PROGRAM_NAME )+ "_tester" + "_" +name);
}}


Peki, terminali yeniden başlattığımızda bile alacağız

void OnTick ()
{
   Comment ( LastProfitCL(- 1 , ( datetime ) GlobalVariableGet (GetGlobalVariableName( "LastProfit" ))) );
}
 
Alekseu Fedotov :

bir gösterge var

i-Kar

Bugün, hafta, ay, yıl için bilgileri, mevcut karı görüntüler.

Uymuyor, 10 yıldır bilgi yok.
Neden: