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

 
Ben Atamurat Abdukayimov geçen yıl MT5 uygulamasını kurduğumda +998339667671 numaralı telefondan arandım ve artık onunla iletişime geçmem mümkün olup olmayacağı artık tasfiye edilmiş olan eski +998975221951 numarama arandı.
 

Tünaydın.

Standart MACD'yi yeniden işlemek:

 //+------------------------------------------------------------------+
//|                                                         MACD.mq5 |
//|                   Copyright 2009-2020, MetaQuotes Software Corp. |
//|                                               http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright    "2009-2020, MetaQuotes Software Corp."
#property link          " http://www.mql5.com "
#property description "Moving Average Convergence/Divergence"
#include <MovingAverages.mqh>
//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots    2
#property indicator_type1    DRAW_HISTOGRAM
#property indicator_type2    DRAW_LINE
#property indicator_color1   Silver
#property indicator_color2   Red
#property indicator_width1    2
#property indicator_width2    1
#property indicator_label1    "MACD"
#property indicator_label2    "Signal"
//--- input parameters
input int                 InpFastEMA= 12 ;               // Fast EMA period
input int                 InpSlowEMA= 26 ;               // Slow EMA period
input int                 InpSignalSMA= 9 ;               // Signal SMA period
input ENUM_APPLIED_PRICE InpAppliedPrice= PRICE_CLOSE ; // Applied price
//--- indicator buffers
double ExtMacdBuffer[];
double ExtSignalBuffer[];
double ExtFastMaBuffer[];
double ExtSlowMaBuffer[];

int     ExtFastMaHandle;
int     ExtSlowMaHandle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtMacdBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,ExtSignalBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,ExtFastMaBuffer, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 3 ,ExtSlowMaBuffer, INDICATOR_CALCULATIONS );
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger ( 1 , PLOT_DRAW_BEGIN ,InpSignalSMA- 1 );
//--- name for indicator subwindow label
   string short_name= StringFormat ( "MACD(%d,%d,%d)" ,InpFastEMA,InpSlowEMA,InpSignalSMA);
   IndicatorSetString ( INDICATOR_SHORTNAME ,short_name);
//--- get MA handles
   ExtFastMaHandle= iMA ( NULL , 0 ,InpFastEMA, 0 , MODE_EMA ,InpAppliedPrice);
   ExtSlowMaHandle= iMA ( NULL , 0 ,InpSlowEMA, 0 , MODE_EMA ,InpAppliedPrice);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   if (rates_total<InpSignalSMA)
       return ( 0 );
//--- not all data may be calculated
   int calculated= BarsCalculated (ExtFastMaHandle);
   if (calculated<rates_total)
     {
       Print ( "Not all data of ExtFastMaHandle is calculated (" ,calculated, " bars). Error " , GetLastError ());
       return ( 0 );
     }
   calculated= BarsCalculated (ExtSlowMaHandle);
   if (calculated<rates_total)
     {
       Print ( "Not all data of ExtSlowMaHandle is calculated (" ,calculated, " bars). Error " , GetLastError ());
       return ( 0 );
     }
//--- we can copy not all data
   int to_copy;
   if (prev_calculated>rates_total || prev_calculated< 0 )
      to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
       if (prev_calculated> 0 )
         to_copy++;
     }
//--- get Fast EMA buffer
   if ( IsStopped ()) // checking for stop flag
       return ( 0 );
   if ( CopyBuffer (ExtFastMaHandle, 0 , 0 ,to_copy,ExtFastMaBuffer)<= 0 )
     {
       Print ( "Getting fast EMA is failed! Error " , GetLastError ());
       return ( 0 );
     }
//--- get SlowSMA buffer
   if ( IsStopped ()) // checking for stop flag
       return ( 0 );
   if ( CopyBuffer (ExtSlowMaHandle, 0 , 0 ,to_copy,ExtSlowMaBuffer)<= 0 )
     {
       Print ( "Getting slow SMA is failed! Error " , GetLastError ());
       return ( 0 );
     }
//---
   int start;
   if (prev_calculated== 0 )
      start= 0 ;
   else
      start=prev_calculated- 1 ;
//--- calculate MACD
   for ( int i=start; i<rates_total && ! IsStopped (); i++)
      ExtMacdBuffer[i]=ExtFastMaBuffer[i]-ExtSlowMaBuffer[i];
//--- calculate Signal
   SimpleMAOnBuffer(rates_total,prev_calculated, 0 ,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);
//--- OnCalculate done. Return new prev_calculated.
   return (rates_total);
  }
//+------------------------------------------------------------------+

Bir sembol değişkeni ekliyorum:

Symbol1

değiştiririm

   ExtFastMaHandle= iMA ( NULL , 0 ,InpFastEMA, 0 , MODE_EMA ,InpAppliedPrice);
   ExtSlowMaHandle= iMA ( NULL , 0 ,InpSlowEMA, 0 , MODE_EMA ,InpAppliedPrice);

Üzerinde:

   ExtFastMaHandle= iMA (Symbol1, 0 ,InpFastEMA, 0 , MODE_EMA ,InpAppliedPrice);
   ExtSlowMaHandle= iMA (Symbol1, 0 ,InpSlowEMA, 0 , MODE_EMA ,InpAppliedPrice);

Sonuç olarak, günlükte bir hata var: ExtFastMaHandle'ın tüm verileri hesaplanmıyor (20057 bar). Hata 4806

Ve gösterge çizmiyor. Çeki kaldırmaya ve koddan (0) döndürmeye çalıştım:

   if (calculated<rates_total)
     {
       Print ( "Not all data of ExtFastMaHandle is calculated (" ,calculated, " bars). Error " , GetLastError ());
       return ( 0 );
     }

ve

   if (calculated<rates_total)
     {
       Print ( "Not all data of ExtSlowMaHandle is calculated (" ,calculated, " bars). Error " , GetLastError ());
       return ( 0 );
     }

Günlüklere giriyorum:

Hızlı EMA alma başarısız oldu! Hata 4807

Bunun nedeni, göstergenin iliştirildiği çizelgedeki çubukların farklı sayıda olması ve ima verilerinin nereden geldiği çizelgede mi?

MACD'nin eklendiği tablodaki enstrüman için değil, seçilen enstrüman için hesaplama yapması için kodu en uygun şekilde nasıl değiştirebilirim?

 
Sergey # :

Tünaydın.

Standart MACD'yi yeniden işlemek:

Bir sembol değişkeni ekliyorum:

değiştiririm

Üzerinde:

Sonuç olarak, günlükte bir hata var: ExtFastMaHandle'ın tüm verileri hesaplanmıyor (20057 bar). Hata 4806

Ve gösterge çizmiyor. Çeki kaldırmaya ve koddan (0) döndürmeye çalıştım:

ve

Günlüklere giriyorum:

Hızlı EMA alma başarısız oldu! Hata 4807

Bunun nedeni, göstergenin iliştirildiği çizelgedeki çubukların farklı sayıda olması ve ima verilerinin nereden geldiği çizelgede mi?

MACD'nin eklendiği tablodaki enstrüman için değil, seçilen enstrüman için hesaplama yapması için kodu en uygun şekilde nasıl değiştirebilirim?

Referans örneğini kullanın: iMACD

 
Vladimir Karputov # :

Referans örneğini kullanın: iMACD

Teşekkür ederim!

 

Merhaba!

MT5'te FXCM'de bir hesap açtıysanız, döviz çiftlerinin hiçbir sembolü yoktur ve tabii ki çizelge yoktur, https://www.metatrader5.com/ru/news/1372 bağlantısı, MT5'in FXCM fiyatları için uyarlandığını gösterir.

Nerede kazacağınızı veya hangi komisyoncunun FXCM'den alıntılar kullandığını size kim söyleyecek?


ve burayı beğen



Yanıtınız için şimdiden teşekkür ederiz...

 

WinAPI işlevi 'GetLastError'dan kod nasıl alınır? DeleteFileW WinAPI işlevini kullanarak var olmayan bir dosyayı silmek istiyorum.

Eğer DeleteFileW yardımına göre

... приложение пытается удалить несуществующий файл, функция DeleteFile завершается с ошибкой ERROR_FILE_NOT_FOUND . Если файл доступен только для чтения, функция завершается с ошибкой ERROR_ACCESS_DENIED

Kod Açıklama 'ERROR_FILE_NOT_FOUND'

HATA DOSYA BULUNAMADI

2 (0x2)

Sistem belirtilen dosyayı bulamıyor.


Yani var olmayan bir dosyayı silmeye çalışırken '2' almalıyım - ama '0' alıyorum.


Senaryo kodum:

 //+------------------------------------------------------------------+
//|                                                   DeleteFile.mq5 |
//|                              Copyright © 2022, Vladimir Karputov |
//|                       https://www.mql5.com/en/users/barabashkakvn |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2022, Vladimir Karputov"
#property link        " https://www.mql5.com/en/users/barabashkakvn "
#property version    "1.00"
#property script_show_inputs
#include <WinAPI\errhandlingapi.mqh>
#include <WinAPI\fileapi.mqh>
//--- input parameters
input string    InpFileName= "C:\\123.txt" ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   ResetLastError ();
   int result=DeleteFileW(InpFileName);
   uint res= GetLastError ();
   if (result== 0 )
       PrintFormat ( "DeleteFile failed (%d)" ,res);
   else
       PrintFormat ( "DeleteFile OK (%d)" ,res);
  }
//+------------------------------------------------------------------+

Yürütme sonucu:

DeleteFile failed ( 0 )
Dosyalar:
 
İyi günler, söyle bana, dolandırıcıların oyununa düştüm, MT5'te onların talimatıyla kayıt oldum, ***'de benim için bir hesap açıldı, para yatırdım, bana biraz para verdiler, şimdi çekemiyorum, Bu komisyoncunun sitesine kayıt olmadım ama destek servisine bir mektup yazdım ne yapmalıyım paramı nasıl çekeceğim lütfen bana söyleyin
 
val511 # :
İyi günler, söyle bana, dolandırıcıların oyununa düştüm, MT5'te onların talimatıyla kayıt oldum, ***'de benim için bir hesap açıldı, para yatırdım, bana biraz para verdiler, şimdi çekemiyorum, Bu komisyoncunun sitesine kayıt olmadım ama destek servisine bir mektup yazdım ne yapmalıyım paramı nasıl çekeceğim lütfen bana söyleyin

MQL5.com web sitesi herhangi bir broker ile ilgili değildir. MQL5.com desteği yalnızca burada sitedeki MQL5 hesabınıza ( val511 ) para yatırdıysanız yanıt verebilir.

 
Kendinizden bir şey tavsiye edebileceğiniz açık, çok minnettar olacağım.
 
val511 # :
Kendinizden bir şey tavsiye edebileceğiniz açık, çok minnettar olacağım.

Polise bir ifade yaz.