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

 
Çok basit bir soru için özür dilerim, açık bir pozisyon nasıl kapatılır? mql4, OrderClose() işlevine sahipti, ancak nasıl?
 
RogozaIV :
Çok basit bir soru için özür dilerim, açık bir pozisyon nasıl kapatılır? mql4, OrderClose() işlevine sahipti, ancak nasıl?

Mql5'te tersini açmanız gerekiyor, terminalin Geçmiş sekmesinde açıkça görebilirsiniz. En kolay yol, standart kitaplıktan CTrade sınıfını kullanmaktır.
 
Alexey Volchanskiy'e teşekkürler!
 
MT5 aracılığıyla kripto para birimlerinin nerede ticaretini yapacağımı söyleyebilir misiniz? Komisyoncular, borsalar? MT4 bulundu, ancak MT5 olduğu gibi yok gibi görünüyor.
 

Beyler, lütfen bana hatanın nerede olduğunu söyleyin.

Expert Advisor'da aranacak göstergeyi hazırlıyorum.

Göstergeden bir arabellek aktarmak gerekir.

Sonuç - int değerleri çubuğa eklenir.

Genel olarak, görev, göstergeden uzmana iki boyutlu bir diziyi iletmek, ancak bunun sorunsuz bir şekilde nasıl yapılacağıdır.

 #property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots    2

int per[];

int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,per, INDICATOR_CALCULATIONS ); //также пробовал INDICATOR_DATA и INDICATOR_COLOR_INDEX
...

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
{
       for ( int b= 1 ; b<Bmax; b++) //отбор по x
        {
         for ( int p= 1 ; p<Pmax; p++) // отбор по y
           {
             if (arrayZ[ 6 ][p][b]> 0 ||arrayZ[ 6 ][p][b]< 0 )
            {
             per[b]=p;
            }
           }
        }
 }

peki, ben onu danışmanda ararım

 int OnInit ()
  {
//--- create timer
   SetIndexBuffer ( 0 ,Label1Buffer, INDICATOR_DATA ); 
   ResetLastError (); 
   MA_handle= iCustom ( NULL , 0 , "Topqw" , 0 , 1 ); 

   Print ( "MA_handle = " ,MA_handle, "  error = " , GetLastError ()); 
...

void OnTick ()
//void OnTimer()
  {
//--- 
int copy= CopyBuffer (MA_handle, 0 , 0 , 1000 ,Label1Buffer); 
   Print ( "copy =" ,copy, " " ,Label1Buffer[ 999 ]); //

 
Top2n :

Beyler, lütfen bana hatanın nerede olduğunu söyleyin.

Expert Advisor'da aranacak göstergeyi hazırlıyorum.

Göstergeden bir arabellek aktarmak gerekir.

Sonuç - int değerleri çubuğa eklenir.

Genel olarak, görev, göstergeden uzmana iki boyutlu bir diziyi iletmek, ancak bunun sorunsuz bir şekilde nasıl yapılacağıdır.

peki, bunu danışmanda ararım



1. GÖSTERGE'de varsayılan olarak "0" indeksli gösterge arabelleğinin grafikteki en SOL çubuğa karşılık geldiği unutulmamalıdır.

2. Expert Advisor'da "SetIndexBuffer" komutu yoktur.

3. iCustom, bir arabellek isteği değil, özel bir gösterge oluşturmakla ilgilidir (bu yüzden her şeyin ",0,1" değil, açıkça yazılması gerekir). Sizin durumunuzda, bu formu kullanabilirsiniz

 //--- create handle of the indicator Topqw
   ResetLastError ();
   handle_Topqw= iCustom ( Symbol (), Period (), "Topqw" , PRICE_CLOSE );
//--- if the handle is not created 
   if (handle_Topqw== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code 
       PrintFormat ( "Failed to create handle of the Topqw indicator for the symbol %s/%s, error code %d" ,
                   Symbol (),
                   EnumToString ( Period ()),
                   GetLastError ());
       //--- the indicator is stopped early 
       return ( INIT_FAILED );
     }

4. CopyBuffer doğru yazılmış görünüyor.

5. İki boyutlu bir diziyi transfer etmeyin - iki gösterge tampon dizisi yapın.

 
Vladimir Karputov :


1. GÖSTERGE'de varsayılan olarak "0" indeksli gösterge arabelleğinin grafikteki en SOL çubuğa karşılık geldiği unutulmamalıdır.

2. Expert Advisor'da "SetIndexBuffer" komutu yoktur.

3. iCustom, bir arabellek isteği değil, özel bir gösterge oluşturmakla ilgilidir (bu yüzden her şeyin ",0,1" değil, açıkça yazılması gerekir). Sizin durumunuzda, bu formu kullanabilirsiniz

4. CopyBuffer doğru yazılmış görünüyor.

5. İki boyutlu bir diziyi transfer etmeyin - iki gösterge tampon dizisi yapın.


Düzeltme için teşekkürler, ama anlamıyorum, dizileri aktarmak için açıkça ayarladıysanız, o zaman nasıl resmileştirilir? iki diziyi çıkarmam gerektiğini nerede belirtmeliyim?

MA_handle= iCustom ( Symbol (), Period (), "TopFidCounselor" ,per,bar); per,bar - же массивы, а данные должны быть imput,
в индикаторе записываю в массивы
   SetIndexBuffer ( 0 ,per, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 1 ,bar, INDICATOR_CALCULATIONS );

если я сделаю такую запись
int OnCalculate (
...
  {
//--------------------------------------------------------------
   for ( int i = 0 ; i < rates_total; i ++ ) per[i] = price[i];  -
//--------------------------------------------------------------
ТО СОВЕТНИК РАБОТАЕТ БЕЗ ОШИБКИ
а если такую
//----------------------------------------------------------------
       for ( int b= 1 ; b< 200 ; b++) //отбор по х			-
        {							-
         for ( int p= 1 ; p< 200 ; p++) // отбор по у			-
           {							-
             if (arrayZ[ 6 ][p][b]> 0 ||arrayZ[ 6 ][p][b]< 0 )		-
            {							-
             per[b]=p;						-
             bar[b]=b;						-
            }							-
           }							-
        }							-
//----------------------------------------------------------------
ТО ОШИБКА код 4002

baştan sona baktım   IndicatorCreate() , lütfen bana nasıl olduğunu söyleyin, aksi halde şimdi tekrar çözerseniz haftalar alacak ve düşünce bloğunu bitirmek için çok az zamanım kaldı. Yakında, arıları besleyiciye çıkarmak için yaz sonuna kadar taygaya gitmeniz gerekiyor, bu yüzden ayrılmadan önce fikri kontrol etmek istiyorsunuz, böylece boşuna yanılsamalar ile kendinize eziyet etmeyesiniz.
 

INDICATOR_CALCULATIONS göstergesinde kullandığım doğru mu?

   SetIndexBuffer ( 0 ,per, INDICATOR_CALCULATIONS );
 

Sorun 4002 hatasıyla çözüldü.

sadece alınan dizinin nereye yazılacağı belli değil mi?

   int copy= CopyBuffer (MA_handle, 0 , 0 ,bars, per ); //per?
 
Top2n :

Sorun 4002 hatasıyla çözüldü.

sadece alınan dizinin nereye yazılacağı belli değil mi?


Dizi başına , kopyalamayı gerçekleştirdiğiniz prosedürde EA'da bildirilir. Dinamik bir dizi olmalıdır ([] olarak bildirilir - boyut yok).