[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 239

 
IgorM :

iHighest ve iLowest size yardımcı olmak ve bir ZZ oluşturmak için algoritmayı okumak için

Not: en kolay iş değil, kod küçük olacak, ancak algoritma karmaşık, kodu bulamıyorum, ancak Yüksek: Yüksek[iYüksek(NULL,0,MODE_HIGH,i)'de bir zirve arıyordum

1. "33" nedir?

2. Yüksek[ iYüksek (NULL,0,MODE_HIGH,i) bir puan verecektir. İkincisi nasıl alınır?

iEn düşük != ikinci nokta.

 
charter :

1. "33" nedir?

2. Yüksek[iYüksek(NULL,0,MODE_HIGH,i) bir puan verecektir. İkincisi nasıl alınır?


1. Zig Zag

2. olmaz, size sadece en üst sıra için birkaç Yüksekler bulma fırsatı verir ve ardından bulunan Yükseklerden iki tane seçmeniz gerekecek, buna bir çizgi çizmeniz gerekecek

 
charter :

Zorluk, çizginin sonradan çizileceği programatik noktaları bulmaktır.

Bu noktaları gördüğünüzde çizgiler çizmek zor değil. Onları programlı olarak nasıl "görebilirim"?

Teşekkürler, düzeltildi!

 
charter :

Zorluk, çizginin sonradan çizileceği programatik noktaları bulmaktır.

Bu noktaları gördüğünüzde çizgiler çizmek zor değil. Onları programlı olarak nasıl "görebilirim"?

Teşekkürler, düzeltildi!

 

Tüm bilenlere iyi günler!

EA https://www.mql5.com/ru/code - Ilan'daki kodu düzeltmeye yardımcı olun.

Buradaki nokta, danışmanın, tüm siparişleri kapattığımız özelleştirilebilir bir öz sermaye düşüş parametresine sahip olmasıdır!

Ancak kilitleme pozisyonlarına sahip fonksiyon daha sonra ortaya çıktığından, danışman tüm açık emirleri eski moda şekilde kapatır ve kilitleme pozlarına dokunmaz. Öyleyse, belirli bir özsermaye düşüşüyle tüm siparişlerin kapanması için bunu nasıl düzeltebiliriz?

İşte emirleri kapatan bölüm (trend ve kilit emirleri farklı sihirli sayılara sahiptir). Burada her şey çalışıyor. EA tüm siparişleri kapatır, AMA. Düşüş, depo boşaltılana kadar belirtilen süreden 4 veya daha fazla:

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN) ;

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

Kilit emirlerin gizlendiği ortaya çıktı, ancak mevcut kâr ve özkaynak hesaplanırken bunları dikkate almıyor musunuz?! İşte cari karı dikkate alan bölüm:

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN )

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

Ve işte öz sermayeyi hesaplayan segment:

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0) ) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

Eklediğim yerleri siyahla vurguladım. Neyi unuttun????? Neden çalışmıyor?????

 
polsvv :

Tüm bilenlere iyi günler!

EA https://www.mql5.com/ru/code - Ilan'daki kodu düzeltmeye yardımcı olun.

Buradaki nokta, danışmanın, tüm siparişleri kapattığımız özelleştirilebilir bir öz sermaye düşüş parametresine sahip olmasıdır!

Ancak kilitleme pozisyonlarına sahip fonksiyon daha sonra ortaya çıktığından, danışman tüm açık emirleri eski moda şekilde kapatır ve kilitleme pozlarına dokunmaz. Öyleyse, belirli bir özsermaye düşüşüyle tüm siparişlerin kapanması için bunu nasıl düzeltebiliriz?

İşte emirleri kapatan bölüm (trend ve kilit emirleri farklı sihirli sayılara sahiptir). Burada her şey çalışıyor. EA tüm siparişleri kapatır, AMA. Düşüş, depo boşaltılana kadar belirtilen süreden 4 veya daha fazla:

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN) ;

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

Kilit emirlerin gizlendiği ortaya çıktı, ancak mevcut kâr ve özkaynak hesaplanırken bunları dikkate almıyor musunuz?! İşte cari karı dikkate alan bölüm:

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN )

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

Ve işte öz sermayeyi hesaplayan bölüm:

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0) ) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

Eklediğim yerleri siyahla vurguladım. Neyi unuttun????? Neden çalışmıyor?????

Belki gerekli? :

 //===================================================================================
double CalculateProfit() 
{
   double ld_ret_0 = 0 ;
   for ( int cnt = 0; cnt < OrdersTotal (); cnt++) {
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!= Symbol ())           continue ;
         if (OrderType()> 1 )                     continue ;
         if (OrderMagicNumber()==MagicNumber || 
             OrderMagicNumber() == LMagN)       ld_ret_0 += OrderProfit();
         }
       else if (! OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)) {
         Print ( "Func: CalculateProfit(), Select Order Error = " , GetLastError ());
         break ;
         }
      }
   return (ld_ret_0);
}
//===================================================================================
 
artmedia70 :

Belki gerekli?

bu yüzden okunabilmesi için kodu yapıştırmanız gerekir
 
eddy :
bu yüzden okunabilmesi için kodu yapıştırmanız gerekir
ha!?? Ve bunlar görebildiğin tüm farklar???
 
Merhaba!

Sadece bu günlerde strateji test cihazını ilk kez kullanıyorum. "Optimizasyon" işlevinin ne işe yaradığını anlayamıyorum. Optimize edilecek farklı parametreler seçtim ama denge değişmiyor. Esasen neyi optimize etmeye çalışıyor ve nasıl? Onları hiç kullanan var mı? :)
 
AndrejFX :
Merhaba!

Sadece bu günlerde strateji test cihazını ilk kez kullanıyorum. "Optimizasyon" işlevinin ne işe yaradığını anlayamıyorum. Optimize edilecek farklı parametreler seçtim ama denge değişmiyor. Esasen neyi optimize etmeye çalışıyor ve nasıl? Onları hiç kullanan var mı? :)

Önce F1'i kullanmayı deneyin.

Kullanıcı Arayüzü -> Test Cihazı'nı bulun.

Yardımcı olabilir https://www.mql5.com/ru/articles/mt4/tester