[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 521
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Nasıl kontrol edecektim?
Teşekkür ederim.
Ancak genel olarak, danışmanı yeniden başlatmadan MaxEquity ayarının örneğin 500 kez çalışmasını sağlamak mümkün müdür.
örneğin, sayaçta 500 sayısını yazarsanız, şöyle sonuçlansın: diyelim ki ilk özkaynak 10.000,
daha sonra 10.000'lik ilk öz sermaye artışından sonra (ayarlarda belirtilir), büyük eksiler kapatılır.
Ve böylece 500 kez (örneğin) (sonuçta, başlangıçtaki eşitliği 500 kez çoğaltmak hala mümkün değil).
Yani, fark sizin seçeneğiniz ile ortaya çıkacaktır - yani ilk öz sermayeye 10.000'lik bir artıştan sonra = 10.000 -
danışmanın yeniden başlatılmasına gerek yoktur ve döngü devam edecektir - 20.000'e 10.000'e, 30.000 + 10.000'e ve bu şekilde 500 kez (örneğin) daha 10.000 eklenecektir. İyi
ve her artıştan sonra = 10.000, en büyük eksi ile kaybeden sipariş kapatılacak mı (veya birkaç sipariş - ayarlarda belirtilir)?
Teşekkür ederim.
Ancak genel olarak, danışmanı yeniden başlatmadan MaxEquity ayarının örneğin 500 kez çalışmasını sağlamak mümkün müdür.
örneğin, sayaçta 500 sayısını yazarsanız, şöyle sonuçlansın: diyelim ki ilk özkaynak 10.000,
daha sonra 10.000'lik ilk öz sermaye artışından sonra (ayarlarda belirtilir), büyük eksiler kapatılır.
Ve böylece 500 kez (örneğin) (sonuçta, başlangıçtaki eşitliği 500 kez çoğaltmak hala mümkün değil).
Yani, fark sizin seçeneğiniz ile ortaya çıkacaktır - yani ilk öz sermayeye 10.000'lik bir artıştan sonra = 10.000 -
danışmanın yeniden başlatılmasına gerek yoktur, ancak döngü devam edecektir - 20.000'e 10.000'e, 30.000'e + 10.000'e ve bu şekilde 500 kez daha eklenecektir (örneğin). İyi
ve her artıştan sonra = 10.000, en büyük eksi ile kaybeden sipariş kapatılacak mı (veya birkaç sipariş - ayarlarda belirtilir)?
Herhangi bir yeniden başlatma yapmanız gerekmez. Pozisyonları kapattıktan sonra ilk özkaynak verilerini güncellemek ve yeni başlangıç özkaynaklarından özkaynak artışını beklemek gerekir.
ama anladığım kadarıyla hepsi program kodunda yapılıyor. Programlama gücüm yok)
Doğal olarak. Öz sermayeyi sürekli olarak izleyecek ve belirtilen değer aşılırsa kârsız pozisyonları kapatmak için bir komut gönderecek tek bir işleve ihtiyaç vardır. Ayrıca, tüm bu pozisyonların başarılı bir şekilde kapatılmasından sonra, yeni eşitlik durumunu ezberleyin ve daha fazla takip etmeye devam edin.
Söyle bana sorun ne olabilir?
Sorumda bana yardımcı olacak yeterli bilgi yok sanırım.)) Sorumu ekleyeceğim. Aşağıda, Uzman Danışmanımın ana işlevlerini içeren bir yapı sunuyorum. Belki vurguladığım sorunun ne olduğunu ortaya çıkarır.
Şu anda, Raporun doğru bir şekilde oluşturulabilmesi için Expert Advisor'ın parametrelerinde para yönetimi fonksiyonunu etkinleştirdikten/devre dışı bıraktıktan sonra Expert Advisor'ı her seferinde yeniden derlemeniz gerekiyor.
Not Belki de bu, global uçbirim değişkeni fxprop_lot'tan kaynaklanmaktadır ?
Sorumda bana yardımcı olacak yeterli bilgi yok sanırım.)) Sorumu ekleyeceğim. Aşağıda, Uzman Danışmanımın ana işlevlerini içeren bir yapı sunuyorum. Belki vurguladığım sorunun ne olduğunu ortaya çıkarır.
Şu anda, Raporun doğru bir şekilde oluşturulabilmesi için Expert Advisor'ın parametrelerinde para yönetimi fonksiyonunu etkinleştirdikten/devre dışı bıraktıktan sonra Expert Advisor'ı her seferinde yeniden derlemeniz gerekiyor.
Not Belki de bu, global uçbirim değişkeni fxprop_lot'tan kaynaklanmaktadır ?
Bunun yeterli olduğunu düşünüyorsanız, görünüşe göre - evet. Cevap beklemek kalır. Bende yok
Bunun yeterli olduğunu düşünüyorsanız, görünüşe göre - evet. Cevap beklemek kalıyor. Bende yok
Ve bir sonraki gönderide, rapor oluşturma işlevi...Ne yazık ki, şu ana kadarki deneyimim, sağlanan bilgilerin belirli bir sorunu çözmek için yeterli olup olmadığına karar vermeme izin vermiyor. Bunu bilerek yapmadım ve eğer varsa özür dilerim.)) Gerçek şu ki, bahsettiğim problemde, bence kilit nokta, Expert Advisor yeniden derlendiğinde her şeyin doğru çalışmasıdır. Ama yine, bu benim olgunlaşmamış deneyimimden kaynaklanıyor. Lütfen bu sorunu çözmek için hangi bilgileri sağlamanız gerektiğini söyleyin. Sorun açıkça para yönetimi işlevini veya bir rapor oluşturma işlevini içerir. Bu nedenle, bir para yönetimi işlevi sağlayacağım:
void Short_Trade_Report( int Mgc_Src_LP_TS№ 1 , int Mgc_LP01_TS№ 1 , int Mgc_LP02_TS№ 1 , int Mgc_LP03_TS№ 1 , int Mgc_LP04_TS№ 1 , int Mgc_LP05_TS№ 1 , int Mgc_LP06_TS№ 1 , int Mgc_Src_SP_TS№ 1 , int Mgc_SP01_TS№ 1 , int Mgc_SP02_TS№ 1 , int Mgc_SP03_TS№ 1 , int Mgc_SP04_TS№ 1 , int Mgc_SP05_TS№ 1 , int Mgc_SP06_TS№ 1 , int Mgc_Src_LP_TS№ 2 , int Mgc_LP01_TS№ 2 , int Mgc_LP02_TS№ 2 , int Mgc_LP03_TS№ 2 , int Mgc_LP04_TS№ 2 , int Mgc_LP05_TS№ 2 , int Mgc_LP06_TS№ 2 , int Mgc_Src_SP_TS№ 2 , int Mgc_SP01_TS№ 2 , int Mgc_SP02_TS№ 2 , int Mgc_SP03_TS№ 2 , int Mgc_SP04_TS№ 2 , int Mgc_SP05_TS№ 2 , int Mgc_SP06_TS№ 2 , int Mgc_Src_LP_TS№ 3 , int Mgc_LP01_TS№ 3 , int Mgc_LP02_TS№ 3 , int Mgc_LP03_TS№ 3 , int Mgc_LP04_TS№ 3 , int Mgc_LP05_TS№ 3 , int Mgc_LP06_TS№ 3 , int Mgc_Src_SP_TS№ 3 , int Mgc_SP01_TS№ 3 , int Mgc_SP02_TS№ 3 , int Mgc_SP03_TS№ 3 , int Mgc_SP04_TS№ 3 , int Mgc_SP05_TS№ 3 , int Mgc_SP06_TS№ 3 ) { #define RA 10000 // Range Array - Размер массива для отчёта double Acc_Bal_Close[RA]; // Массив для баланса на закрытии сделки(-ок) double Acc_Bal_Open[RA]; // Массив для баланса на открытии сделки(-ок) double Price_Open_Pos[RA]; double Price_Stop_Loss[RA]; double TS№ 1 _DS[RA], TS№ 2 _TA[RA], TS№ 3 _SBH[RA]; int pos, handle, dgt, Magic, sign, index; double Swap_P; double Profit_P; double Commission; double Open_Price; double Stop_Loss; string Type_Pos; string comment; string Str_Stop_Loss; //--- ПРОВЕРКА НА КОЛ-ВО ЗНАКОВ В СИМВОЛЕ ДЛЯ РАСЧЁТА ОТСТУПА В СТРОКАХ КОММЕНТАРИЕВ --------------------------------// int digit_string; int digit = MarketInfo ( Symbol (),MODE_DIGITS); switch (digit) { case 2 : digit_string = 4 ; dgt = 100 ; break ; case 3 : digit_string = 5 ; dgt = 100 ; break ; case 4 : digit_string = 6 ; dgt = 10000 ; break ; case 5 : digit_string = 7 ; dgt = 10000 ; break ; default : Print ( "Неизвестный символ! Количество знаков = " ,digit); return ( 0 ); } handle = FileOpen ( "ShortReport.csv" , FILE_CSV | FILE_WRITE ); if (handle > 0 ) //1 { FileWrite (handle, "Time Close" + "," + "Symbol" + "," + "Type" + "," + "Lots" + "," + "Balance($)" + "," + "Stop Loss(p)" + "," + "Profit(p)" + "," + "TS#1_DS(p)" + "," + "TS#2_TA(p)" + "," + "TS#3_SBH(p)" ); for (pos = 0 ; pos < OrdersHistoryTotal (); pos++) // 2 { OrderSelect (pos,SELECT_BY_POS,MODE_HISTORY); Commission = OrderCommission (); Swap_P = ( OrderSwap ()/ 10 )/ OrderLots (); Profit_P = ( OrderProfit ()/ 10 )/ OrderLots ()+( OrderSwap ()/ 10 )/ OrderLots (); Open_Price = NormalizeDouble ( OrderOpenPrice (), Digits ); index = StringFind ( OrderComment (), "[sl]" , 0 ); if (index != - 1 ) { comment = StringSubstr ( OrderComment (), 0 , StringLen ( OrderComment ())- 4 ); } else { comment = StringSubstr ( OrderComment (), 0 , StringLen ( OrderComment ())); } if ( OrderType () < 2 && OrderCloseTime () == TimeCurrent () && ( OrderMagicNumber () == Mgc_Src_LP_TS№ 1 || OrderMagicNumber () == Mgc_Src_SP_TS№ 1 || OrderMagicNumber () == Mgc_LP01_TS№ 1 || OrderMagicNumber () == Mgc_LP02_TS№ 1 || OrderMagicNumber () == Mgc_LP03_TS№ 1 || OrderMagicNumber () == Mgc_LP04_TS№ 1 || OrderMagicNumber () == Mgc_LP05_TS№ 1 || OrderMagicNumber () == Mgc_LP06_TS№ 1 || OrderMagicNumber () == Mgc_SP01_TS№ 1 || OrderMagicNumber () == Mgc_SP02_TS№ 1 || OrderMagicNumber () == Mgc_SP03_TS№ 1 || OrderMagicNumber () == Mgc_SP04_TS№ 1 || OrderMagicNumber () == Mgc_SP05_TS№ 1 || OrderMagicNumber () == Mgc_SP06_TS№ 1 )) { TS№ 1 _DS[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance (); Str_Stop_Loss = StringSubstr (comment, StringLen (comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs (( StrToDouble (Str_Stop_Loss)-Open_Price)*dgt); } if ( OrderType () < 2 && OrderCloseTime () == TimeCurrent () && ( OrderMagicNumber () == Mgc_Src_LP_TS№ 2 || OrderMagicNumber () == Mgc_Src_SP_TS№ 2 || OrderMagicNumber () == Mgc_LP01_TS№ 2 || OrderMagicNumber () == Mgc_LP02_TS№ 2 || OrderMagicNumber () == Mgc_LP03_TS№ 2 || OrderMagicNumber () == Mgc_LP04_TS№ 2 || OrderMagicNumber () == Mgc_LP05_TS№ 2 || OrderMagicNumber () == Mgc_LP06_TS№ 2 || OrderMagicNumber () == Mgc_SP01_TS№ 2 || OrderMagicNumber () == Mgc_SP02_TS№ 2 || OrderMagicNumber () == Mgc_SP03_TS№ 2 || OrderMagicNumber () == Mgc_SP04_TS№ 2 || OrderMagicNumber () == Mgc_SP05_TS№ 2 || OrderMagicNumber () == Mgc_SP06_TS№ 2 )) { TS№ 2 _TA[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance (); Str_Stop_Loss = StringSubstr (comment, StringLen (comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs (( StrToDouble (Str_Stop_Loss)-Open_Price)*dgt); } if ( OrderType () < 2 && OrderCloseTime () == TimeCurrent () && ( OrderMagicNumber () == Mgc_Src_LP_TS№ 3 || OrderMagicNumber () == Mgc_Src_SP_TS№ 3 || OrderMagicNumber () == Mgc_LP01_TS№ 3 || OrderMagicNumber () == Mgc_LP02_TS№ 3 || OrderMagicNumber () == Mgc_LP03_TS№ 3 || OrderMagicNumber () == Mgc_LP04_TS№ 3 || OrderMagicNumber () == Mgc_LP05_TS№ 3 || OrderMagicNumber () == Mgc_LP06_TS№ 3 || OrderMagicNumber () == Mgc_SP01_TS№ 3 || OrderMagicNumber () == Mgc_SP02_TS№ 3 || OrderMagicNumber () == Mgc_SP03_TS№ 3 || OrderMagicNumber () == Mgc_SP04_TS№ 3 || OrderMagicNumber () == Mgc_SP05_TS№ 3 || OrderMagicNumber () == Mgc_SP06_TS№ 3 )) { TS№ 3 _SBH[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance (); Str_Stop_Loss = StringSubstr (comment, StringLen (comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs (( StrToDouble (Str_Stop_Loss)-Open_Price)*dgt); } if ( OrderType () == OP_BUY) { Type_Pos = "buy" ; } if ( OrderType () == OP_SELL) { Type_Pos = "sell" ; } if ( OrderType () < 2 ) { FileWrite (handle, TimeToStr ( OrderCloseTime (),TIME_DATE|TIME_MINUTES)+ "," + Symbol ()+ "," +Type_Pos+ "," + DoubleToStr ( OrderLots (), 2 )+ "," + DoubleToStr (Acc_Bal_Close[pos], 2 )+ "," + DoubleToStr (Price_Stop_Loss[pos], 2 )+ "," + DoubleToStr (Profit_P+Swap_P+Commission, 2 )+ "," + DoubleToStr (TS№ 1 _DS[pos], 2 )+ "," + DoubleToStr (TS№ 2 _TA[pos], 2 )+ "," + DoubleToStr (TS№ 3 _SBH[pos], 2 )); } } FileClose (handle); // 2\ } //1 }
Lütfen sorunu çözmeme yardım edin.Başlatma sırasında para yönetimi işlevini çağırmaya çalıştım:
Ama bu sorunu çözmüyor...