오류, 버그, 질문 - 페이지 3154

 
Wizard # :

이해했다. 그리고 CSymbolInfo 클래스의 NormalizePrice 함수를 사용하고 싶지 않다면(가능한 경우 라이브러리를 사용하지 않으려고 노력합니다), 대안이 있습니까?

재채기를 할 때마다 사용하지 말고 필요할 때만 사용하십시오.

 
Wizard # :

Expert Advisor 입력 설정 창에서 통화 쌍 및 상품(내 쌍)의 드롭다운 목록을 만들고 싶습니다. 어떻게 할 수 있습니까?

 //+------------------------------------------------------------------+
//|                                                    InputList.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        " https://www.mql5.com "
#property version    "1.00"

//------------------------------------
enum ENUM_SYMBOL 
{
   EURUSD, 
   GBPUSD, 
   JPYUSD
};

//------------------------------------
input ENUM_SYMBOL EnumSymbol = EURUSD;   //Выбери символ

//------------------------------------
void OpenChart(ENUM_SYMBOL symbol) 
{
   switch (symbol)
   {
       case EURUSD: ChartSetSymbolPeriod ( 0 , "EURUSD" , PERIOD_CURRENT ); break ;
       case GBPUSD: ChartSetSymbolPeriod ( 0 , "GBPUSD" , PERIOD_CURRENT ); break ;
       case JPYUSD: ChartSetSymbolPeriod ( 0 , "JPYUSD" , PERIOD_CURRENT ); break ;   
       default : return ;
   }
}

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
   OpenChart(EnumSymbol);

   //ChartSetSymbolPeriod() выполняется асинхронно
   //Поэтому тут придумываем ожидание, на прогрузку истории
   //Sleep() тут просто для примера
   Sleep ( 5000 );

   return ( INIT_SUCCEEDED );
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{

}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
{

}
마법사 번호 :

제대로 쓰는 법...

 double stop = NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ) - 100 * _Point , _Digits );
 
Vitaly Muzichenko # :

재채기를 할 때마다 사용하지 말고 필요할 때만 사용하십시오.

알겠습니다. 조언 감사합니다.

 
Roman # :

진심으로 감사드립니다! 매번 악기 이름을 입력하지 않는 것이 좋습니다.) 따라서 enum, switch, case는 모두 함께 있어야 합니다.

 

동료 중재자님, 게시물을 "초보자의 질문" 섹션으로 이동 하세요 .

오류, 버그 및 해결 방법에 대한 섹션입니다.

 
안녕하세요, 연결 문제가 있습니다 . MT5 터미널을 시작한 후 약 20번의 시도에서 연결이 시작되고 끊어지는 등의 방식으로 진행됩니다. 이것은 인터넷을 다시 연결한 직후에 발생하며 브로커는 모든 것이 괜찮다고 말합니다.
 

MetaEditor(C# DLL 가져오기)에서 지원하는 최신 버전의 .NET이 무엇인지 알 수 있는 방법이 있습니까?

업데이트할 계획은 무엇입니까?

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MT5에서 버그를 보고하는 방법은 무엇입니까?

, 2022.02.09 12:54

MT5에서 버그를 보고하는 일반적인 절차를 알고 싶습니다.


dotnet6.0 C# DLL을 만들었습니다. MetaEditor는 DLL의 기능을 찾을 수 있고 코드는 잘 컴파일되지만 MT5는 DLL 내에서 필요한 기능을 찾지 못합니다.

이 문제는 아주 오래된 버전의 C# DLL에서는 발생하지 않습니다.

이것을 MT5 지원팀에 어떻게 보고합니까?

감사해요


 

메타 따옴표.


 


csv 대신 Metatrader가 읽을 수 있는 다른 내용을 알려주세요.

 //+------------------------------------------------------------------+
//|                                                          WST.mq5 |
//|                           Copyright © 2009, WallStreetTrader Pro |
//|                                 https://wallstreettraderpro.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, WST"
#property link        "https://wallstreettraderpro.com/"
#include <stdlib.mqh>
#property indicator_separate_window
#property indicator_buffers 8
//---- input parameters
extern string     файл_данных 1 = ".csv" ;
extern string     подпись 1 = "" ;
extern color      цвет 1 =Red;
extern string     файл_данных 2 = ".csv" ;
extern string     формат_даты= "dd.mm.yyyy" ;
extern string     разделитель_записей= ";" ;
extern string     разделитель_целой_и_дробной= "," ;

//---- buffers
double FA1[];
double FA2[];
double FA3[];
double FA4[];
double FA5[];
double FA6[];
double FA7[];
double FA8[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
string id;
int init()
  {
   MathSrand (( int ) TimeLocal ());
   for (;;)
   {
      id= StringConcatenate ( "Fundamental data (id_" , MathRand (), ")" );
       if (WindowFind(id)< 0 ) break ;
   }
   IndicatorShortName(id);
//---- indicators
   if (FileCanOpen(файл_данных 1 ))
   {
       if ( StringTrimLeft ( StringTrimRight (подпись 1 ))== "" )
         подпись 1 = StringSubstr (файл_данных 1 , 0 , StringFind (файл_данных 1 , "." ));
   }
   else подпись 1 = "" ;      
   if (FileCanOpen(файл_данных 2 ))
   {
   if ( StringTrimLeft ( StringTrimRight (подпись 2 ))== "" )
      подпись 2 = StringSubstr (файл_данных 2 , 0 , StringFind (файл_данных 2 , "." ));
   }
   else подпись 2 = "" ;      
   if (FileCanOpen(файл_данных 3 ))
   {
   if ( StringTrimLeft ( StringTrimRight (подпись 3 ))== "" )
      подпись 3 = StringSubstr (файл_данных 3 , 0 , StringFind (файл_данных 3 , "." ));
   }
   else подпись 3 = "" ;      
   if (FileCanOpen(файл_данных 4 ))
   {
   if ( StringTrimLeft ( StringTrimRight (подпись 4 ))== "" )
      подпись 4 = StringSubstr (файл_данных 4 , 0 , StringFind (файл_данных 4 , "." ));
   }
   else подпись 4 = "" ;      
   if (FileCanOpen(файл_данных 5 ))
   {
   if ( StringTrimLeft ( StringTrimRight (подпись 5 ))== "" )
      подпись 5 = StringSubstr (файл_данных 5 , 0 , StringFind (файл_данных 5 , "." ));
   }
   else подпись 5 = "" ;      
   if (FileCanOpen(файл_данных 6 ))
   {
   if ( StringTrimLeft ( StringTrimRight (подпись 6 ))== "" )
      подпись 6 = StringSubstr (файл_данных 6 , 0 , StringFind (файл_данных 6 , "." ));
   }
   else подпись 6 = "" ;      
   if (FileCanOpen(файл_данных 6 ))
   {
   if ( StringTrimLeft ( StringTrimRight (подпись 7 ))== "" )
      подпись 7 = StringSubstr (файл_данных 7 , 0 , StringFind (файл_данных 7 , "." ));
   }
   else подпись 7 = "" ;      
   if (FileCanOpen(файл_данных 8 ))
   {
   if ( StringTrimLeft ( StringTrimRight (подпись 8 ))== "" )
      подпись 8 = StringSubstr (файл_данных 8 , 0 , StringFind (файл_данных 8 , "." ));
   }
   else подпись 8 = "" ;      
      
   SetIndexStyle( 0 , DRAW_LINE , STYLE_SOLID , 1 ,цвет 1 );
   SetIndexLabel( 0 ,подпись 1 );
   SetIndexBuffer ( 0 ,FA1);
   SetIndexStyle( 1 , DRAW_LINE , STYLE_SOLID , 1 ,цвет 2 );
   SetIndexLabel( 1 ,подпись 2 );
   SetIndexBuffer ( 1 ,FA2);
   SetIndexStyle( 2 , DRAW_LINE , STYLE_SOLID , 1 ,цвет 3 );
   SetIndexLabel( 2 ,подпись 3 );
   SetIndexBuffer ( 2 ,FA3);
   SetIndexStyle( 3 , DRAW_LINE , STYLE_SOLID , 1 ,цвет 4 );
   SetIndexLabel( 3 ,подпись 4 );
   SetIndexBuffer ( 3 ,FA4);
   SetIndexStyle( 4 , DRAW_LINE , STYLE_SOLID , 1 ,цвет 5 );
   SetIndexLabel( 4 ,подпись 5 );
   SetIndexBuffer ( 4 ,FA5);
   SetIndexStyle( 5 , DRAW_LINE , STYLE_SOLID , 1 ,цвет 6 );
   SetIndexLabel( 5 ,подпись 6 );
   SetIndexBuffer ( 5 ,FA6);
   SetIndexStyle( 6 , DRAW_LINE , STYLE_SOLID , 1 ,цвет 7 );
   SetIndexLabel( 6 ,подпись 7 );
   SetIndexBuffer ( 6 ,FA7);
   SetIndexStyle( 7 , DRAW_LINE , STYLE_SOLID , 1 ,цвет 8 );
   SetIndexLabel( 7 ,подпись 8 );
   SetIndexBuffer ( 7 ,FA8);
//----
   return ( 0 );
 
murziks # :


csv 대신 Metatrader가 읽을 수 있는 다른 내용을 알려주세요.

.txt

하지만 나는 확장이 없는 것을 선호한다