Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 485

 
-Aleks- :

Lütfen çözmeme yardım et!

Her (bırakın) günde (dosya günde bir kez yazılır)maksimum düşüşü bulmam gerekiyor - MT4 terminali.

Maksimum düşüş, grafikteki zirveden mevcut fon çekilmesine kadar olan mesafedir ve fonların çekilmesi cari zarardır.

bu kodu yazdım

   if(Analiz_Prosadki==true)
     {
      if(ContolSavaTXT==1)
        {
         ProfitNew=0;
         ProfitMin=0;
         ContolSavaTXT=0;
        }

      if(ContolSavaTXT==0)
        {
         ProfitNew=AccountInfoDouble(ACCOUNT_PROFIT);
         BalansNew==AccountInfoDouble(ACCOUNT_BALANCE);  //Текузее значение баланса
         if (BalansNew>BalansMax) BalansMax=BalansNew;
         if (ProfitNew<ProfitMin && BalansNew>=BalansMax) ProfitMin=ProfitNew;
         if (ProfitNew<ProfitMin && BalansNew<BalansMax) ProfitMin=ProfitNew-(BalansMax-BalansNew);
        }

      ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitMin);   // Пишем информацию в файл - функция возвращает 1
     }

Ancak bazı çizelgelerde doğru görünüyor, bazılarında göstermiyor - görsel olarak çizelgeler aynı tipte.

Görünüşe göre kodda veya mantıkta bir hata yapmışım ama hangisi olduğunu çözemedim.

Bildiğim kadarıyla, aşağı yönlü tabloyu büyük ölçüde yumuşatan dengeden değil, Hisse zirvesinden Hisse çukuruna kadar saymak gerekiyor!

Ve lütfen SRC butonunu başka hiçbir şekilde kullanmayın, böylece kodunuz cevapta tekrarlanmasın ve siteyi karıştırmasın!

 
Boris :

Bildiğim kadarıyla, aşağı yönlü tabloyu büyük ölçüde yumuşatan dengeden değil, Hisse zirvesinden Hisse çukuruna kadar saymak gerekiyor!

Ve lütfen SRC butonunu başka hiçbir şekilde kullanmayın, böylece kodunuz cevapta tekrarlanmasın ve siteyi karıştırmasın!

Bakiyeyi fon olarak değiştirdim - yine de test cihazıyla birleşmiyor - test cihazındaki değer daha büyük. ACCOUNT_PROFIT - aslında, bakiye ve fonlar arasındaki delta, belki de mesele bu ... Öte yandan, görev danışmanın çalışması için ne kadar paraya ihtiyaç olduğunu bulmak ve almak mantıklı değil bana göründüğü gibi, maksimum fonları hesaba katın ...

SRC'nin ne olduğunu bilmiyorum ve bu yüzden kullanmıyorum.

 
-Aleks- :

Bakiyeyi fon olarak değiştirdim - yine de test cihazıyla birleşmiyor - test cihazındaki değer daha büyük. ACCOUNT_PROFIT - aslında, bakiye ve fonlar arasındaki delta, belki de mesele bu ... Öte yandan, görev danışmanın çalışması için ne kadar paraya ihtiyaç olduğunu bulmak ve almak mantıklı değil bana göründüğü gibi, maksimum fonları hesaba katın ...

SRC'nin ne olduğunu bilmiyorum ve bu yüzden kullanmıyorum.

Video kameranın solunda bulunan bu düğme (yukarıya bakın), kodu yapıştırmak içindir!

Hisse Hakkında! Bakiyeyi Öz Sermaye ile değiştirdiyseniz, ACCOUNT_PROFIT'i hariç tutmalısınız, çünkü. Öz sermaye = bakiye + kar. Ancak terminalde sürekli değişen Özkaynak görüyoruz, testçi raporunda Öz sermaye ve düşüşler pozisyonların kapanma anlarında kaydediliyor, bu nedenle ara taramalı düşüşler sabit değil. Sonuç olarak, resim test cihazında gerçekte olduğundan daha neşeli. Yakın zamandan beri, saçmalıklardan kaçınmak için, test cihazında, demoda ve gerçek hayatta, danışmanın her eylemi, açma, değiştirme, kapatma vb. hakkında ihtiyacım olan tüm bilgileri yazıyorum. ya kendimden ya da başkalarından tahammül! Ama muhtemelen bunu zaten fark etmişsinizdir. ;)

 

İyi akşamlar! Lütfen bana standart kitaplıktan CTrailingFixedPips sınıfı hakkında bilgi verin, TakeProfit seviyesinin "izlenmesi"nin anlamı nedir? Asla ulaşılmayacak, değil mi? Ya da bir şeyi, kodu ya da anlamını anlamıyorum.

Belgelerden:

" Fiyat denkleştirmesi, Zarar Durdur seviyesinden büyükse, pozisyon için yeni bir Zarar Durdur fiyatı belirlenmesi önerilir. Zarar Durdur değişiklik koşulu karşılanırsa ve Kâr Al seviyesi sıfıra eşit değilse, o zaman pozisyon için yeni bir Zarar Durdurma fiyatı belirlenmesi önerilir. pozisyon için yeni bir Kâr Al fiyatı belirlemeyi önerdi ."

<Expert\Trailing\CTrailingFixedPips.mqh>

 //+------------------------------------------------------------------+
//| Checking trailing stop and/or profit for long position.          |
//+------------------------------------------------------------------+
bool CTrailingFixedPips::CheckTrailingStopLong(CPositionInfo *position, double &sl, double &tp)
  {
...
...   
   delta=m_stop_level*m_adjusted_point;
   if (price-base>delta)
     {
      sl=price-delta;
       if (m_profit_level!= 0 ) tp=price+m_profit_level*m_adjusted_point;
     }
...
  }
 
Hexen :

İyi akşamlar! Lütfen bana standart kitaplıktan CTrailingFixedPips sınıfı hakkında bilgi verin, TakeProfit seviyesinin "izlenmesi"nin anlamı nedir? Asla ulaşılmayacak, değil mi? Ya da bir şeyi, kodu ya da anlamını anlamıyorum.

Belgelerden:

" Fiyat denkleştirmesi, Zarar Durdur seviyesinden büyükse, pozisyon için yeni bir Zarar Durdur fiyatı belirlenmesi önerilir. Zarar Durdur değişiklik koşulu karşılanırsa ve Kâr Al seviyesi sıfıra eşit değilse, o zaman pozisyon için yeni bir Zarar Durdurma fiyatı belirlenmesi önerilir. pozisyon için yeni bir Kâr Al fiyatı belirlemeyi önerdi ."

<Expert\Trailing\CTrailingFixedPips.mqh>

Büyük olasılıkla bir yazım hatası. Zararı Durdur olmalıdır.
 
Hexen :

İyi akşamlar! Lütfen bana standart kitaplıktan CTrailingFixedPips sınıfı hakkında bilgi verin, TakeProfit seviyesinin "izlenmesi"nin anlamı nedir? Asla ulaşılmayacak, değil mi? Ya da bir şeyi, kodu ya da anlamını anlamıyorum.

Belgelerden:

" Fiyat denkleştirmesi, Zarar Durdur seviyesinden büyükse, pozisyon için yeni bir Zarar Durdur fiyatı belirlenmesi önerilir. Zarar Durdur değişiklik koşulu karşılanırsa ve Kâr Al seviyesi sıfıra eşit değilse, o zaman pozisyon için yeni bir Zarar Durdurma fiyatı belirlenmesi önerilir. pozisyon için yeni bir Kâr Al fiyatı belirlemeyi önerdi ."

<Expert\Trailing\CTrailingFixedPips.mqh>

Yukarıdaki koda bakılırsa, TP, SL ile eşzamanlı olarak hareket eder. Fırında böyle bir takip)
 
Boris :

Video kameranın solunda bulunan bu düğme (yukarıya bakın), kodu yapıştırmak içindir!

Yani kod için bir "Kod" stili var - menüden seçiliyor - kullanıyorum.

Boris :

Hisse Hakkında! Bakiyeyi Öz Sermaye ile değiştirdiyseniz, ACCOUNT_PROFIT'i hariç tutmalısınız, çünkü. Öz sermaye = bakiye + kar. Ancak terminalde sürekli değişen Özkaynak görüyoruz, testçi raporunda Öz sermaye ve düşüşler pozisyonların kapanma anlarında kaydediliyor, bu nedenle ara taramalı düşüşler sabit değil. Sonuç olarak, resim test cihazında gerçekte olduğundan daha neşeli. Yakın zamandan beri, saçmalıklardan kaçınmak için, test cihazında, demoda ve gerçek hayatta, danışmanın her eylemi, açma, değiştirme, kapatma vb. hakkında ihtiyacım olan tüm bilgileri yazıyorum. ya kendimden ya da başkalarından tahammül! Ama muhtemelen bunu zaten fark etmişsinizdir. ;)

Rapor için test cihazındaki düşüş yalnızca pozisyonun kapatıldığı anda düzeltildiyse, o zaman bir emir kullanırken piyasada herhangi bir düşüş olmazdı, ancak bu böyle değil ;)

ACCOUNT_PROFIT=Hesap dengesi , bu nedenle hesaplamalarda bu göstergeyi kullanmamak için hiçbir neden göremiyorum...

 
-Aleks- :

Lütfen çözmeme yardım et!

Her (bırakın) günde (dosya günde bir kez yazılır)maksimum düşüşü bulmam gerekiyor - MT4 terminali.

Maksimum düşüş, grafikteki zirveden mevcut fon çekilmesine kadar olan mesafedir ve fonların çekilmesi cari zarardır.

bu kodu yazdım

   if(Analiz_Prosadki==true)
     {
      if(ContolSavaTXT==1)
        {
         ProfitNew=0;
         ProfitMin=0;
         ContolSavaTXT=0;
        }

      if(ContolSavaTXT==0)
        {
         ProfitNew=AccountInfoDouble(ACCOUNT_PROFIT);
         BalansNew= = AccountInfoDouble(ACCOUNT_BALANCE);  //Текузее значение баланса
         if (BalansNew>BalansMax) BalansMax=BalansNew;
         if (ProfitNew<ProfitMin && BalansNew>=BalansMax) ProfitMin=ProfitNew;
         if (ProfitNew<ProfitMin && BalansNew<BalansMax) ProfitMin=ProfitNew-(BalansMax-BalansNew);
        }

      ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitMin);   // Пишем информацию в файл - функция возвращает 1
     }

Ancak bazı çizelgelerde doğru görünüyor, bazılarında göstermiyor - görsel olarak çizelgeler aynı tipte.

Görünüşe göre kodda veya mantıkta bir hata yapmışım ama hangisi olduğunu çözemedim.

Kodda bir hata buldum - fazladan bir eşittir işareti şöyle olmalı

  BalansNew = AccountInfoDouble(ACCOUNT_BALANCE);  

Ancak bu, kene başına hesaplama ile test cihazındaki sonuç arasındaki farkın nedenini çözmeye beni pek yaklaştırmadı.

Boris'in teorisini eşitlik hesaplamalarıyla kontrol ettim - aynı sonuç olumsuz.

   if(Analiz_Prosadki==true)

     {

      if(ContolSavaTXT==1)

        {

         ProfitNew=0;

         ContolSavaTXT=0;

        }


      if(ContolSavaTXT==0)

        {

         BalansNew=AccountInfoDouble(ACCOUNT_EQUITY);  //Текущее значение баланса

         if (BalansNew>BalansMax) BalansMax=BalansNew;

         if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax;

         if (ProfitNew<ProfitMin) ProfitMin=ProfitNew;

        }


      ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitNew);   // Пишем информацию в файл - функция возвращает 1

     }

Bu arada, işlemde sadece bir lot varsa, grafikteki test cihazında eşitlik ve dengenin nasıl senkronize olmadığı açık değil mi?

 
-Aleks- :

Kodda bir hata buldum - fazladan bir eşittir işareti şöyle olmalı

  BalansNew = AccountInfoDouble(ACCOUNT_BALANCE);  

Ancak bu, kene başına hesaplama ile test cihazındaki sonuç arasındaki farkın nedenini çözmeye beni pek yaklaştırmadı.

Boris'in teorisini eşitlik hesaplamalarıyla kontrol ettim - aynı sonuç olumsuz.

   if(Analiz_Prosadki==true)

     {

      if(ContolSavaTXT==1)

        {

         ProfitNew=0;

         ContolSavaTXT=0;

        }


      if(ContolSavaTXT==0)

        {

         BalansNew=AccountInfoDouble(ACCOUNT_EQUITY);  //Текущее значение баланса

         if (BalansNew>BalansMax) BalansMax=BalansNew;

         if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax;

         if (ProfitNew<ProfitMin) ProfitMin=ProfitNew;

        }


      ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitNew);   // Пишем информацию в файл - функция возвращает 1

     }

Bu arada, işlemde sadece bir lot varsa, grafikteki test cihazında eşitlik ve dengenin nasıl senkronize olmadığı açık değil mi?

"Eşitlik ve dengenin nasıl uyumsuz olduğunu" anlamak için, dengenin ne olduğunu ve eşitliğin ne olduğunu anlamanız gerekir.

Bakiye - hesaptaki sabit para miktarı.

Öz sermaye - Hesaptaki mevcut, değişken öz sermaye tutarı.

Test cihazı, şu anda yazmakta olduğunuz işlevin aynısını içeriyor ve düşüşü düzeltiyor, ancak istediğiniz gibi değil.

Sonuç olarak: maksimum düşüşü hesaplamak için, bu değeri statik veya global değişkenler düzeyinde saklayacak bir değişken bildirmeniz ve ardından kodunuzdakiyle yaklaşık olarak aynı şekilde bu değişkenin üzerine yazmanız gerekir.

İşte yazdıkların...

if (BalansNew>BalansMax) BalansMax=BalansNew; // Если новое значение эквити больше зафиксированного в прошлый раз - перезапишем значение переменной

// но это не просадка, это максимальная прибыль

if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax;  // А здесь BalansNew уже равно BalansMax и эта строка не выполняется никогда...

İki değişkeni max ve min yapmak ve bunlara değer yazmak gerekiyor.

Ve yüksek sesle düşünmek: Dosyaya bir günde değil, siparişi kapatırken ve değişkenlerin üzerine yazmak daha iyidir. Bu anda eşitlik bakiyeye eşittir ve max ve min yazdığımız değişken sıfırlanır.

 
Alexey Viktorov :

"Eşitlik ve dengenin nasıl uyumsuz olduğunu" anlamak için, dengenin ne olduğunu ve eşitliğin ne olduğunu anlamanız gerekir.

Bakiye - hesaptaki sabit para miktarı.

Öz sermaye - Hesaptaki mevcut, değişken öz sermaye tutarı.

Test cihazı, şu anda yazmakta olduğunuz işlevin aynısını içeriyor ve düşüşü düzeltiyor, ancak istediğiniz gibi değil.

Sonuç olarak: maksimum düşüşü hesaplamak için, bu değeri statik veya global değişkenler düzeyinde saklayacak bir değişken bildirmeniz ve ardından kodunuzdakiyle yaklaşık olarak aynı şekilde bu değişkenin üzerine yazmanız gerekir.

İşte yazdıkların...

if (BalansNew>BalansMax) BalansMax=BalansNew; // Если новое значение эквити больше зафиксированного в прошлый раз - перезапишем значение переменной

// но это не просадка, это максимальная прибыль

if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax;  // А здесь BalansNew уже равно BalansMax и эта строка не выполняется никогда...

İki değişkeni max ve min yapmak ve bunlara değer yazmak gerekir.

Ve yüksek sesle düşünmek: Dosyaya bir günde değil, siparişi kapatırken ve değişkenlerin üzerine yazmak daha iyidir. Şu anda eşitlik bakiyeye eşittir ve max ve min yazdığımız değişken sıfırlanır.

Yardım talebine yanıt verdiğiniz için teşekkür ederiz!

Global değişken, piyasadaki gerçek çalışmayla ilgilidir - Test bilgilerine ihtiyacım var - bu yüzden zahmet etmedim.

Öz sermaye ve bakiyenin ne olduğuna gelince -kesinlikle biliyorum ama düşüşün nasıl hesaplandığını - hesaplamak mümkün değildi, kod örneklerimden hem bakiyeyi hem de fonları maksimuma çıkarmaya çalıştığım görülüyor, benzer şekilde , Minimum bakiye ve fon aldım, ancak test cihazı ile benzer sonuçlar elde edilemez - yaklaşık olarak birleşirler, ancak tam olarak değil.

Neden eşitsizliğin (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; hiç idam edilmedi mi? Yeni bir yüksek bakiyeye ulaşıldığında (veya öz sermaye - bu zaten doğru değil) barda yürütülmez, ancak o anda bir kâr düşüşü ProfitMin=ProfitNew'i düzeltirim.

Günde bir dosya kaydetmek sadece daha önemlidir - maksimum düşüşe ulaşıldığından, kural olarak, sipariş kapatıldığı anda değil, amaç, danışmanın çalışması için gereken ortalama fon miktarını hesaplamaktır.