초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1387

 
저는 작년에 MT5 애플리케이션을 설치했을 때 Atamurat Abdukayimov입니다. +998339667671번에서 제 이전 번호인 +998975221951번으로 전화를 받았습니다. 현재 그녀와 통신이 가능한지 여부는 청산되었습니다.
 

안녕하세요.

표준 MACD 재작업:

 //+------------------------------------------------------------------+
//|                                                         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);
  }
//+------------------------------------------------------------------+

기호 변수를 추가합니다.

Symbol1

나는 변한다

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

에:

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

결과적으로 로그에 오류가 있습니다. ExtFastMaHandle의 모든 데이터가 계산되지는 않습니다(20057 막대). 오류 4806

그리고 표시기는 그리지 않습니다. 수표를 제거하고 코드에서 (0)을 반환하려고했습니다.

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

그리고

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

나는 로그를 얻는다 :

빠른 EMA를 가져오지 못했습니다! 오류 4807

이는 지표가 첨부된 차트의 막대 수와 ima 데이터의 출처가 차트에서 다르기 때문입니다.

MACD가 첨부된 차트의 기기가 아니라 선택한 기기에 대해 계산하도록 코드를 최적으로 변경하는 방법은 무엇입니까?

 
Sergey # :

안녕하세요.

표준 MACD 재작업:

기호 변수를 추가합니다.

나는 변한다

에:

결과적으로 로그에 오류가 있습니다. ExtFastMaHandle의 모든 데이터가 계산되지는 않습니다(20057 막대). 오류 4806

그리고 표시기는 그리지 않습니다. 수표를 제거하고 코드에서 (0)을 반환하려고했습니다.

그리고

나는 로그를 얻는다 :

빠른 EMA를 가져오지 못했습니다! 오류 4807

이는 지표가 첨부된 차트의 막대 수와 ima 데이터의 출처가 차트에서 다르기 때문입니다.

MACD가 첨부된 차트의 기기가 아니라 선택한 기기에 대해 계산하도록 코드를 최적으로 변경하는 방법은 무엇입니까?

참조 예 사용: iMACD

 
Vladimir Karputov # :

참조 예 사용: iMACD

고맙습니다!

 

안녕하세요!

MT5의 FXCM에서 계정을 개설했습니다. 통화 쌍의 기호가 없으며 물론 차트도 없습니다. 링크 https://www.metatrader5.com/ru/news/1372 는 MT5가 FXCM 시세에 맞게 조정되었음을 나타냅니다.

FXCM의 견적을 사용하는 중개인이 어디인지 알려주거나 알려줄 사람은 누구입니까?


그리고 여기처럼



답변 미리 감사드립니다...

 

WinAPI 함수 'GetLastError'에서 코드를 가져오는 방법은 무엇입니까? DeleteFileW WinAPI 기능을 사용하여 존재하지 않는 파일을 삭제하고 싶습니다.

DeleteFileW 도움말에 따르면

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

코드 설명 'ERROR_FILE_NOT_FOUND'

ERROR_FILE_NOT_FOUND

2(0x2)

시스템이 지정된 파일을 찾을 수 없습니다.


즉, 존재하지 않는 파일을 삭제하려고 하면 '2'가 표시되어야 하지만 '0'이 표시됩니다.


내 스크립트 코드:

 //+------------------------------------------------------------------+
//|                                                   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);
  }
//+------------------------------------------------------------------+

실행 결과:

DeleteFile failed ( 0 )
파일:
 
좋은 오후, 말해봐, 나는 사기꾼의 속임수에 빠졌고, 그들의 지시에 따라 MT5에 등록되었고, 계정은 ***에 등록되었습니다. 나는 돈을 입금했고, 그들은 나에게 약간의 돈을 주었지만 지금은 출금할 수 없습니다. 이 브로커 사이트에 등록하지 않았지만 지원 서비스에 편지를 썼습니다. 돈을 인출하는 방법을 알려주세요.
 
val511 # :
좋은 오후, 말해봐, 나는 사기꾼의 속임수에 빠졌고, 그들의 지시에 따라 MT5에 등록되었고, 계정은 ***에 등록되었습니다. 나는 돈을 입금했고, 그들은 나에게 약간의 돈을 주었지만 지금은 출금할 수 없습니다. 이 브로커 사이트에 등록하지 않았지만 지원 서비스에 편지를 썼습니다. 돈을 인출하는 방법을 알려주세요.

MQL5.com 사이트는 브로커와 관련이 없습니다. MQL5.com 지원은 여기 사이트의 MQL5 계정( val511 )에 돈을 입금한 경우에만 응답할 수 있습니다.

 
당신이 스스로에게 조언을 할 수 있다는 것은 분명합니다. 매우 감사할 것입니다.
 
val511 # :
당신이 스스로에게 조언을 할 수 있다는 것은 분명합니다. 매우 감사할 것입니다.

경찰에 진술서를 작성하십시오.

사유: