Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Hayır, bu satırı kaldırıyoruz. Zaten bir kar hesabı var, böyle olmayacak.
Koddaki kapatma komutu nerede - orada
// Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL( int op=- 1 ){ //"op" позиция (-1 любая позиция)
double LastProfit= 0 ;
for (i= OrdersHistoryTotal ()- 1 ;i>= 0 ;i--)
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic) {
if ( OrderType ()!= op || OrderSymbol ()!= Symbol () || OrderMagicNumber ()!= magic) continue ;
if (op< 0 || OrderType ()==op){ if ( OrderCloseTime ()>=t)LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();}
}
return (LastProfit);
}
ve kapalı durumda
{CloseOrder(OrderTicket());t= TimeCurrent ();}
{DeleteAll();t= TimeCurrent ();}1 sayılmaz, 2 doğru sayılır, 3 sayılmaz 0
// Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL( int op=- 1 ){ //"op" позиция (-1 любая позиция)
double LastProfit= 0 ;
for (i= OrdersHistoryTotal ()- 1 ;i>= 0 ;i--)
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic) {
if ( OrderType ()!= op || OrderSymbol ()!= Symbol () || OrderMagicNumber ()!= magic) continue ;
if (op< 0 || OrderType ()==op){ if ( OrderCloseTime ()>=t)LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();}
}
return (LastProfit);
}
ve kapalı durumda
{CloseOrder(OrderTicket());t= TimeCurrent ();}
{DeleteAll();t= TimeCurrent ();}1 sayılmaz, 2 doğru sayılır, 3 sayılmaz 0
ve bu yüzden
{DeleteAll();}
Ve ilerisi
Siparişleriniz biletle kapandı mı?
Bu yüzden dizinin kapanış başlangıç saatini daha da erken hatırlamanız gerekiyor.
Onlar. Seriyi kapatma kararının henüz alındığı yerde, gerçek bir kapanış olup olmayacağı önemli değil.
Israrınızı anlıyorum, ancak size gerçek ticaret için bir dizi pozisyonu kapatma ve test cihazında çalışmama gibi iyi bir işleve sahip çalışan bir sürüm verdim.
Terminal yeniden başlatılsa bile oradaki her şeyi sayar ve hatırlar.
Kontrol edin, test cihazında çalıştırın ve sonuçları işlem geçmişiyle karşılaştırın
not. Kodu yazmayı unuttum - işte düzeltme
Israrınızı anlıyorum, ancak size gerçek ticaret için bir dizi pozisyonu kapatma ve test cihazında çalışmama gibi iyi bir işleve sahip çalışan bir sürüm verdim.
Terminal yeniden başlatılsa bile oradaki her şeyi sayar ve hatırlar.
Kontrol edin, test cihazında çalıştırın ve sonuçları işlem geçmişiyle karşılaştırın
Bunu kodumda nasıl uygulayabilirim?
Diğer eylemim LastProfitCL değerine bağlı
ve bu yüzden
{DeleteAll();}
Ve ilerisi
Siparişleriniz biletle kapandı mı?
Bu yüzden dizinin kapanış başlangıç saatini daha da erken hatırlamanız gerekiyor.
Onlar. Seriyi kapatma kararının henüz alındığı yerde, gerçek bir kapanış olup olmayacağı önemli değil.
Bunu kodumda nasıl uygulayabilirim?
Diğer eylemim LastProfitCL değerine bağlı
Bu anlaşılabilir bir durum, sadece uygun gördüğünüz gibi kullanın.
Comment ( " Последний: " , DoubleToString (LastProfit, 1 ) , " Профит: " , DoubleToString (Profit, 1 ) );
Bir kez " LastProfit " ilan edin ve gerektiğinde kullanın
Ve stop ile kapanırsa, {t= TimeCurrent ();CloseOrder( OrderTicket ());} {DeleteAll();} zaten kar değerini atlayacaktır.
Evet onlar yapacak.
Kaç tane "canlı" sipariş kaldığını her onay işaretiyle kontrol edebilirsiniz.
Aynıysa, seçenek olarak önceki tik saatini hatırlayın
O zaman ihtiyacın olanı alacaksın
Ancak otomatlarda genellikle durak yoktur.
Durak kapalıysa, {t= TimeCurrent ();CloseOrder( OrderTicket ());} {DeleteAll();} zaten kar değerini atlayacaktır.
Yalnızca en son kapatılanları sayar ve kapanış miktarına bağlı değildir.
Genel olarak, görev tamamen açık değil, bu yüzden daha fazla tartışma yapmıyorum.
//------------------------------------------------ ---------
Burada her şeyi boyadım, artık görevi anlamıyorum:
Burada her şeyi boyadım, artık görevi anlamıyorum:
Bu nedenle, "cnt"nin sıfırlanıp sıfırlanmadığını da doğru bir şekilde değerlendirir, ancak daha sonra 3 No'lu ekranda olduğu gibi değer net değildir (kar değeri 4,27 olmalıdır).
int cnt= 0 ;
double LastProfit= 0 ;
for (i= 0 ;i< OrdersHistoryTotal ();i++)
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic) {
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=magic) continue ;
if ((op< 0 || OrderType ()==op) && cnt== 0 ) {LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap (); cnt++;} else {cnt= 0 ;}
}
return (LastProfit);
}