MQL5'te birlikte öğrenme ve yazma - sayfa 4

 
Merhaba! Zor değilse, Expert Advisor'daki göstergeleri doğru çağırıp çağırmadığımı biri söyleyebilir mi?

çift algılayıcı()
{
çift w1 = x1 - 100;
çift w2 = x2 - 100;
çift w3 = x3 - 100;
çift w4 = x4 - 100;
double a1 = iCustom(NULL,0,"Özel CCI", 0);
double a2 = iCustom(NULL,0,"Özel CCI", 7);
double a3 = iCustom(NULL,0,"Özel CCI", 14);//bu CCI

double a4=iMA(NULL,0,21,0,0); //bu Kuvvet İndeksi

dönüş(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}
 
Avelox :
Merhaba! Zor değilse, Expert Advisor'daki göstergeleri doğru çağırıp çağırmadığımı biri söyleyebilir mi?

çift algılayıcı()
{
çift w1 = x1 - 100;
çift w2 = x2 - 100;
çift w3 = x3 - 100;
çift w4 = x4 - 100;
double a1 = iCustom(NULL,0,"Özel CCI", 0);
double a2 = iCustom(NULL,0,"Özel CCI", 7);
double a3 = iCustom(NULL,0,"Özel CCI", 14);//bu CCI

double a4=iMA(NULL,0,21,0,0); //bu Kuvvet İndeksi

dönüş(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}


hayır.

iCustom, diğer herhangi bir gösterge çağrısı işlevi gibi, gösterge tutamağını döndürür. Belgeleri okuyun

 

Teşekkür ederim! Sonra bu yüzden!? double a2 = iCCI(NULL,0,7, 0);

double a4=iForce(NULL,0,21,0,0);

Ve derleyici önceki sürümden memnun.

 

Özel Timsah göstergemizin bir örneğine bakın https://www.mql5.com/en/code/9

Orası:

  1. Bir tanıtıcı çıkıyor ( iMA )
  2. Bu tutamaç tarafından ne kadar verinin hesaplandığını kontrol eder ( BarsCalculated )
  3. Bir veri parçası kopyalanır ( CopyBuffer )
Alligator
Alligator
  • oylar: 14
  • 2010.01.26
  • MetaQuotes Software Corp.
  • www.mql5.com
The Alligator Indicator is a combination of Balance Lines (Moving Averages).
 
Avelox :

Teşekkür ederim! Sonra bu yüzden!? double a2 = iCCI(NULL,0,7, 0);

double a4=iForce(NULL,0,21,0,0);

Ve derleyici önceki sürümden memnun.


Derleyici bununla iyi. Hindilerden birini 4'ten aktarırken aşağıdaki kod parçasını aldım:


   iMA1Handle= iMA ( NULL , 0 ,Period1/ 2 , 0 , 3 , PRICE_CLOSE ); // Не забыть потом перемножить на 2
   iMA2Handle=   iMA ( NULL , 0 , Period1,   0 , 3 , PRICE_CLOSE );
   SQPeriod= NormalizeDouble ( MathSqrt (Period1), 0 );

... Бла-бла-бла ...

4'te şöyleydi:

   while (i>= 0 )
      {
         ExtMapBuffer2[i]= 2 * iMA ( NULL , 0 ,PeriodX/ 2 , 0 , 3 , PRICE_CLOSE ,i);
         ExtMapBuffer3[i]=   iMA ( NULL , 0 , PeriodX, 0 , 3 , PRICE_CLOSE ,i);
         ExtMapBuffer4[i]=ExtMapBuffer2[i]-ExtMapBuffer3[i];
         i--;
      }
   i=i2; // Возврат i для расчёта значений индюка
   while (i>= 0 )
      {
         ExtMapBuffer1[i]=iMAOnArray(ExtMapBuffer4, 0 , NormalizeDouble ( MathSqrt (PeriodX), 0 ), 0 , 3 ,i);

... Бла-бла-бла ...

5-ke'de iMAOnArray eksikliği nedeniyle satır satır çeviri çalışmadı ve beta'dan dahil edildi, peki, gerçekten kullanmak istemiyorum - fih biliyor ... Şey, yani 2 * iMa aktardım başlangıçta .... Çıktının neden çöp olduğunu uzun süre anlayamadım. Korkunç bir şekilde lanetlendi. Zaten foruma yazmak istedim. Sonra geldi - alışkanlık parasını aldı. Derleyici buna uygundur, çünkü 5'te döndürülen tanıtıcı, Int (aslında bir sayı) veri türüne sahiptir ve 2 ile çarpılabilir. o

 

Sistemi ilk beşe transfer etmeye çalışıyorum ve hemen pusuya düşüyorum.

 //+------------------------------------------------------------------+
//|                                                  GetInternet.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"

#import "wininet.dll"
   int InternetAttemptConnect ( int x);
   int InternetOpenA( string sAgent, int lAccessType, 
                     string sProxyName = "" , string sProxyBypass = "" , 
                     int lFlags = 0 );
   int InternetOpenUrlA( int hInternetSession, string sUrl, 
                       string sHeaders = "" , int lHeadersLength = 0 ,
                       int lFlags = 0 , int lContext = 0 );
          
   int InternetReadFile( int hFile, int & sBuffer[], int lNumBytesToRead, 
                       int & lNumberOfBytesRead[]);
   int InternetCloseHandle( int hInet);


#import "stdlib.ex5"
#import
input int Step = 300 ;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment ( "Старт..." );
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
     Comment (GetURL( "http://www.forexremote.net" ));
    
  }
//+------------------------------------------------------------------+


//+----------------------------------------------------------------------------------------------------------+
//| Функция получения WEB страницы                                                                           |
//+----------------------------------------------------------------------------------------------------------+
string GetURL( string url)
{
   int rv = InternetAttemptConnect( 0 );
   if (rv != 0 )
     {
       Alert ( "Ошибка при вызове InternetAttemptConnect()" );
       return ( "" );
     }

   int hInternetSession = InternetOpenA( "Microsoft Internet Explorer" , 1 , "" , "" , 0 );
   if (hInternetSession <= 0 )
     {
       Alert ( "Ошибка при вызове InternetOpenA()" );
       return ( "" );         
     }

   int hURL = InternetOpenUrlA(hInternetSession, url, "" , 0 , 0 , 0 );
   if (hURL <= 0 )
    {
       Print ( "Ошибка получения данных с узла!" );
       //fComment("Ошибка получения данных с узла!",true);
       InternetCloseHandle(hInternetSession);
       return ( "" );         
     } 
          
   int cBuffer[ 256 ];
   int dwBytesRead[ 1 ]; 
   string TXT = "" ;
   while (! IsStopped ())
     {
       bool bResult = InternetReadFile(hURL, cBuffer, 1024 , dwBytesRead);
       if (dwBytesRead[ 0 ] == 0 )
           break ;
       string text = "" ;   
       for ( int i = 0 ; i < 256 ; i++)
         {
              text = text + CharToString (cBuffer[i] & 0x000000FF );
               if ( StringLen (text) == dwBytesRead[ 0 ])
                   break ;
              text = text + CharToString (cBuffer[i] >> 8 & 0x000000FF );
               if ( StringLen (text) == dwBytesRead[ 0 ])
                   break ;
           text = text + CharToString (cBuffer[i] >> 16 & 0x000000FF );
           if ( StringLen (text) == dwBytesRead[ 0 ])
               break ;
           text = text + CharToString (cBuffer[i] >> 24 & 0x000000FF );
         }
       TXT = TXT + text;
       //Sleep(500);

     }
     InternetCloseHandle(hInternetSession);
     return (TXT);
}
//+----------------------------------------------------------------------------------------------------------+
//| Конец Функции получения WEB страницы                                                                     |
//+----------------------------------------------------------------------------------------------------------+
Hataları 0 derlerken ancak sonunda komut dosyası çalışmıyor :-(
 
maxandsoft :

Sistemi ilk beşe transfer etmeye çalışıyorum ve hemen pusuya düşüyorum.

Hataları 0 derlerken ancak sonunda komut dosyası çalışmıyor :-(


"Senaryo" ile ne demek istiyorsun? Koddaki işlevlere bakılırsa, danışman kodunu yayınladınız. MQL4 Geçişine Bakın
 
Rosh :


"Senaryo" ile ne demek istiyorsun? Koddaki işlevlere bakılırsa, danışman kodunu yayınladınız. MQL4 Geçişine Bakın


Evet, kelimenin tam anlamıyla elbette danışmandır. wininet.dll kullanarak sunucudan bir yanıt almam gerekiyor
 
maxandsoft :


Evet, kelimenin tam anlamıyla elbette danışmandır. wininet.dll kullanarak sunucudan bir yanıt almam gerekiyor

Bu işlevlerin unicode sürümlerini kullanmayı deneyin. MQL5, Unicode kodlamasını kullanır.

 
Rosh :

Bu işlevlerin unicode sürümlerini kullanmayı deneyin. MQL5, Unicode kodlamasını kullanır.



Sonuç olarak, hata ayıklama sırasında derlemeden sonra, onu MQL düzenleyicisine geri atar - hata bile vermeden. Ve çizelgeden bir danışman çıkardığınızda, üzerinde bile görünmüyor. Onlar. ne hata ayıklama ne de danışmanı başlatma herhangi bir yerde hata vermez