MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 582

 

Tünaydın.

Tüm beyin, aşağıdaki algoritmanın neden çalışmadığını kırdı. Bir işleve bir dizi iletmez. İlk başta nedenini uzun süre araştırdım ama şimdi böyle bir test örneğinde yerelleştirmeyi başardım.

Raporlar: "'TestLib.ex4' içinde 'işlevsel' bulunamıyor " ve ardından "çözümlenmemiş içe aktarma işlevi çağrısı."

Test.mq4 dosyasının içeriği

#mülkiyet katı
#include <TestLibx.mqh>

intramas[5];

int OnInit() { dönüş(INIT_SUCCEEDED); }
geçersiz OnDeinit(const int nedeni) { }

geçersiz OnTick()
{
fonksiyon testi(kütle);
int c=0;
for (c=0;c<5;c++) Print ( " kütle[",c,"]=",kütle[c]," ");
uyku(2000);
}

TestLibx.mq4 kitaplık dosyasının içeriği

#özellik kitaplığı
#mülkiyet katı
void functest(int &massx[])
{
int c=0;
süre (c<5)
{
kütlex[c]=MathRand();
c++;
}
dönüş;
}
TestLibx.mqh kitaplık dosyasının içeriği

#mülkiyet katı
#import "TestLibx.ex4"
void functest(int &massx[]);
#içe aktarmak

Orijinal dosyaları arşive ekledim.

Lütfen dizileri MQL4'te bir kitaplık işlevine nasıl geçireceğimi bulmama yardım edin.

Teşekkür ederim.

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Дифференциальный индикатор Султонова Уважаемые...
Dosyalar:
MQL4.zip  11 kb
 
Alexey Viktorov :
Değerlerin farkı 10 *Puan'dan büyüktür, ancak pozitif veya negatif bir farkın dikkate alınması gerekecektir.

Teşekkür ederim. Takas puanlarını ve komisyonu dönüştürmek istiyorum. Sorun nedir?

double OrderSwap_Commission( int mn=- 1 )
  {
   int i= 0 ;
   double sum= 0 ,lots= 0 ;
   double pips= 0 ; //своп, комисся в пунктах
   for (i= 0 ; i< OrdersTotal (); i++)
     {
       if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
       if ( OrderSymbol ()!= Symbol ()) continue ;
       if ( OrderMagicNumber ()!=mn) continue ;
       if ( OrderType ()== OP_SELL || OrderType ()== OP_BUY )
        {
         lots=lots+ OrderLots ();
         sum=sum+ OrderSwap ()+ OrderCommission ();
        }
     }
   if (lots!= 0 )
     {
      pips= NormalizeDouble ( MathAbs ((sum)/( SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE )/lots))* _Point , _Digits );
      pips=( MathRound (pips* MathPow ( 10 , Digits )))/ MathPow ( 10 , Digits );
     }
   return (pips);
  }
//
 
bij :

Teşekkür ederim. Takas ve komisyonu puana dönüştürmek istiyorum. Sorun nedir?

 int   pipsProfitOrder = ( int ) MathFloor ( ( OrderProfit () + OrderSwap () + OrderCommission () ) / ( SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE )* OrderLots ()) );
 
Konstantin Nikitin :

Teşekkür ederim.

Op, cevabı değiştirdin, karı bilmeme gerek yok. Swap ve komisyon, pozisyonlar birden fazla olabilir.

 
bij :

Teşekkür ederim.

Op, cevabı değiştirdin, karı bilmeme gerek yok. Takas ve komisyon.

Sadece kura ile bölmeniz var ama çarpmanız gerekiyor.

 SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE )* OrderLots ()

İlkenin kendisi hangisini kullandığımı gösterdi. Ve kodunuza başvurmak oldukça kolaydır.

 
Konstantin Nikitin :

Sadece kura ile bölmeniz var ama çarpmanız gerekiyor.

İlkenin kendisi hangisini kullandığımı gösterdi. Ve kodunuza başvurmak oldukça kolaydır.

Anladım, teşekkürler.
 

Merhaba!

Soru: Gösterge , grafik nesneler (OBJ_ARROW) oluşturur , ancak bazıları yalnızca derleme veya zaman çerçevesi değişikliğinden sonra görünür. Derleme sırasında herhangi bir hata veya uyarı yoktur. Test cihazında Print("ObjectCreate() çağrılırken hata:",GetLastError());0, Print("ObjectCreate() çağrılırken hata:",GetLastError());4200.

Senin için zor değilse, çaydanlığa cevap ver!

 
Ve test cihazında farklı bir zaman dilimi (daha küçük) için programlı olarak nasıl teklif yükleyebilirim?
 
Juer :
Ve test cihazında farklı bir zaman dilimi (daha küçük) için programlı olarak nasıl teklif yükleyebilirim?
Eski TF, genç olanın verilerine göre inşa edilmiştir. Bu yüzden gerekli değil.
 
bij :
Mevcut saat = pozisyon açılış süresi artı 5 dakika ise veya yeni bir çubuğun açılışında, grafik periyodu М5 ise pozisyonu kapatın.

Teşekkür ederim. İyi olmak, iyileşmek. Ama şimdi başka bir sorun. Test cihazı sürekli olarak %100 performans verir. Ama bu olmaz. Birçok işlem açılır, normalde günlüğe göre belirtilen süreden sonra kapanırlar. Ancak pozisyonların açılış ve kapanış anlarını görebileceğiniz test sonuç tablosunda doğal olarak tüm işlemler karlı değildir. Yüzde yüz böyle bir solla ne bağlanabilir?

Artyom'a da teşekkürler!