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

 
_new-rena :

이(아래)가 작동하지 않습니다. 탐색기에 F_Path를 입력하고 엔터를 클릭하면 파일이 열립니다. WinApi의 정보가 다음과 같이 표시됩니까?

누가 쓰고 읽을 때 FILE_COMMON 플래그가 사용되는 것을 방지합니까? 파일은 시스템에 설치된 모든 터미널에서 사용할 수 있습니다. 모든 터미널의 공유 폴더에 있습니다.

ME 파일 --> 공유 데이터 폴더 열기

 
artmedia70 :

누가 쓰고 읽을 때 FILE_COMMON 플래그가 사용되는 것을 방지합니까? 파일은 시스템에 설치된 모든 터미널에서 사용할 수 있습니다. 모든 터미널의 공유 폴더에 있습니다.

ME 파일 --> 공유 데이터 폴더 열기

감사합니다(!!!), 시도하겠습니다.
 

안녕하세요, 매개변수가 있는 거래 요청을 생성할 때 이러한 문제가 발생한 사람이 있습니까?

다음 매개변수를 설정하는 경우:

mrequest.action=TRADE_ACTION_DEAL;
mrequest.type_filling=ORDER_FILLING_FOK;

mrequest.type=ORDER_TYPE_BUY;

mrequest.type_filling=ORDER_FILLING_RETURN을 지정하면 터미널에서 잘못된 mrequest.type_filling 메서드( 주문 실행 정책 )를 지정하고 있다고 보고합니다. 그런 다음 주문이 열렸지만 프로그래밍 방식으로 주문을 닫을 수 없는 경우 터미널은 잘못된 방법이 사용되고 있다고 보고합니다. 나는 BCS Forex 서버에서 Expert Advisor를 실행하고 다른 서버에서는 모든 것이 정상입니다. 특정 브로커를 위한 거래 로봇을 개발할 때 사용할 수 있는 실행 정책을 누구나 작성할 수 있습니까? 고맙습니다.
 

경보 기능이 있는 mq4 표시기가 있습니다.

예를 들어:

 //+------------------------------------------------------------------+
//|                                                    RSI-Alert.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link        "http://www.metaquotes.net/"

#property indicator_separate_window
//#property indicator_minimum 0
//#property indicator_maximum 100
#property indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 CLR_NONE
#property indicator_color3 CLR_NONE
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_style1 STYLE_SOLID
#property indicator_style2 STYLE_DOT
#property indicator_style3 STYLE_DOT
//---- input parameters
extern int RSIPeriod= 48 ;
extern int ApplyTo= 0 ;
extern bool AlertMode= true ;
extern int OverBought= 0 ;
extern int OverSold= 0 ;
//---- buffers
double RSIBuffer[];
double RSIOBBuffer[];
double RSIOSBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator lines
   SetIndexStyle( 0 , DRAW_LINE );
   SetIndexBuffer ( 0 ,RSIBuffer);
   SetIndexStyle( 1 , DRAW_LINE );
   SetIndexBuffer ( 1 ,RSIOBBuffer);
   SetIndexStyle( 2 , DRAW_LINE );
   SetIndexBuffer ( 2 ,RSIOSBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name= "RSI-Alert(" +RSIPeriod+ ")" ;
   IndicatorShortName(short_name);
   SetIndexLabel( 0 ,short_name);
   SetIndexLabel( 1 , "OverBought" );
   SetIndexLabel( 2 , "OverSold" );
//----
   SetIndexDrawBegin( 0 ,RSIPeriod);
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Relative Strength Index                                          |
//+------------------------------------------------------------------+
int start()
  {
   int     i,counted_bars=IndicatorCounted();
//----
   if ( Bars <=RSIPeriod) return ( 0 );
//----
   i= Bars -RSIPeriod- 1 ;
   if (counted_bars>=RSIPeriod) i= Bars -counted_bars- 1 ;
   while (i>= 0 )
   {
      RSIBuffer[i]= iForce ( NULL , 0 ,RSIPeriod, 1 , 0 ,i);
      RSIOBBuffer[i]=OverBought;
      RSIOSBuffer[i]=OverSold;
      i--;
   }
   
   if (AlertMode)
   {
       if (RSIBuffer[ 1 ]<OverBought && RSIBuffer[ 0 ]>=OverBought)
         Alert ( "RSI = " + RSIBuffer[i]+ ", Sell." );
       else if (RSIBuffer[ 1 ]>OverSold && RSIBuffer[ 0 ]<=OverSold)
         Alert ( "RSI = " + RSIBuffer[i]+ ", Buy." );
   }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
하위 창의 왼쪽 상단 모서리 (표시기의 이름과 매개변수가 일반적으로 표시되는 곳)에서 또는 다른 방법으로 경고가 켜져 있는지 여부를 나타내도록 어떻게 만들 수 있습니까( extern bool AlertMode= true ;) 아니면 꺼져?
 
Nilog :

경보 기능이 있는 mq4 표시기가 있습니다.

예를 들어:

하위 창의 왼쪽 상단 모서리 (표시기의 이름과 매개변수가 일반적으로 표시되는 곳)에서 또는 다른 방법으로 경고가 켜져 있는지 여부를 나타내도록 어떻게 만들 수 있습니까( extern bool AlertMode= true ;) 아니면 꺼져?
예를 들어 텍스트를 개체로 출력합니다.
 

문서에서는 다음과 같이 말합니다.

При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent() , но в индикаторах эта функция в тестере не вызывается. Даже если индикатор имеет обработчик OnChartEvent() и этот индикатор используется в тестируемом эксперте, то сам индикатор не будет получать никаких пользовательских событий.

현재 이 명령문은 관련이 없습니다. 표시기에서 이 함수가 테스터에서 호출되고 적어도 하나의 표시기는 테스터의 다른 표시기에 의해 생성된 이벤트를 수신할 수 있습니다.

문제는 이 함수에 대한 호출을 수신하면 표시기가 전역 수준에서 선언된 변수에 저장된 데이터에 액세스할 수 없으며 그 반대의 경우도 마찬가지입니다. 이 기능에서 수행된 모든 변경 사항은 전역 액세스 수준의 변수에 저장되지 않습니다 .

예:

1. 객체는 전역 수준에서 선언되고 OnInit 함수에서 초기화됩니다. OnCalculate 함수에서 액세스할 수 있지만 OnChartEvent 함수에서 오류 메시지가 나타납니다. 잘못된 포인터입니다.

2. 변수의 내용을 기록하는 기능이 있습니다(변수는 전역 수준에서 선언됨). OnCalculate에서 이 함수를 호출할 때 예상 값을 얻고 OnChartEvent에서 동일한 함수를 호출할 때 넌센스를 얻습니다.

 

안녕하세요!

이벤트, 특히 표시기 의 OnChartEvent() 함수 를 사용할 때 문제가 발생했습니다. Expert Advisor에서 사용할 때 문제가 없었다면 표시기의 이벤트에 대해 제대로 작동하지 않을 수 있습니다. 즉, 이벤트가 발생하지만 이벤트의 기존 필드는 변경되지 않습니다. 예시:

//------------------------------------------------ ----------------------------------------------
정수 k;
int OnInit ()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
반환(INIT_SUCCESSED);
}

int OnCalculate (const int Rates_total,
const int prev_calculated,
const 날짜/시간 및 시간[],
const 이중 및 열기[],
const 더블 & 하이[],
const 더블 & 로우[],
const 이중 및 닫기[],
const long &tick_volume[],
const 긴 볼륨[],
const int &spread[])
{
Print("OnCalculate(): k =", k);
//< ... >
반환(요금 합계);

}

무효 OnChartEvent (const int id,
const long &lparam,
const 이중 &dparam,
const 문자열(&sparam)
{
문자열 nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("OnChartEvent(): k = ", k);
k++;

}

}

//------------------------------------------------ ----------------------------------------------

결과적으로 다음을 얻습니다.

"OnCalculate(): k = 0" - 항상.

"OnChartEvent(): k = 0,...,123332" - 0에서 ...까지 계산

이것은 어떻게 그리고 왜?!? 어떻게 든 고칠 수 있습니까? 누군가가 이해한다면 나는 대답에 대해 매우 감사 할 것입니다.

추신: 이러한 불의는 전략 테스터 에서만 발생하며 실시간으로 모든 것이 제대로 작동합니다.

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
dariamap :

안녕하세요!

이벤트, 특히 표시기 의 OnChartEvent() 함수 를 사용할 때 문제가 발생했습니다. Expert Advisor에서 사용할 때 문제가 없었다면 표시기의 이벤트에 대해 제대로 작동하지 않을 수 있습니다. 즉, 이벤트가 발생하지만 이벤트의 기존 필드는 변경되지 않습니다. 예시:

//------------------------------------------------ ----------------------------------------------
정수 k;
int OnInit ()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
반환(INIT_SUCCESSED);
}

int OnCalculate (const int Rates_total,
const int prev_calculated,
const 날짜/시간 및 시간[],
const 이중 및 열기[],
const 더블 & 하이[],
const 더블 & 로우[],
const 이중 및 닫기[],
const long &tick_volume[],
const 긴 볼륨[],
const int &spread[])
{
Print("OnCalculate(): k =", k);
//< ... >
반환(요금 합계);

}

무효 OnChartEvent (const int id,
const long &lparam,
const 이중 &dparam,
const 문자열(&sparam)
{
문자열 nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("OnChartEvent(): k = ", k);
k++;

}

}

//------------------------------------------------ ----------------------------------------------

결과적으로 다음을 얻습니다.

"OnCalculate(): k = 0" - 항상.

"OnChartEvent(): k = 0,...,123332" - 0에서 ...

이것은 어떻게 그리고 왜?!? 어떻게 든 고칠 수 있습니까? 누군가가 이해한다면 나는 대답에 대해 매우 감사 할 것입니다.

추신: 이러한 불의는 전략 테스터 에서만 발생하며 실시간으로 모든 것이 제대로 작동합니다.

좋은 저녁이에요. 한 번에 서비스 데스크는 이에 대해 매우 명확한 답변을 제공했습니다. 터미널과 전략 테스터는 두 개의 다른 프로그램이며 테스터와 터미널의 고문/지표 작업은 크게 다를 수 있습니다. 종종 터미널에서 작동하는 것이 테스터에서 작동하지 않습니다. 서비스 데스크에 편지를 쓰고 증거를 제공하고 수리하도록 하십시오.
 
Tapochun :
좋은 저녁이에요. 한 번에 서비스 데스크는 이에 대해 매우 명확한 답변을 제공했습니다. 터미널과 전략 테스터는 두 개의 다른 프로그램이며 테스터와 터미널의 고문/지표 작업은 크게 다를 수 있습니다. 종종 터미널에서 작동하는 것이 테스터에서 작동하지 않습니다. 서비스 데스크에 편지를 쓰고 증거를 제공하고 수리하도록 하십시오.
매우 감사합니다! 내가 문제가 아니라서 다행이다
 
extern string Symbol1= "EURUSD" ;
extern string Symbol2= "GBRUSD" ;

   double Sell1= iFractals (Symbol1, 240 ,MODE_UPPER, 2 );
   double Sell2= iFractals (Symbol2, 240 ,MODE_UPPER, 2 );
Sell1 및 Sell2 프랙탈을 열 때 주문이 동시에 열리도록 어떤 명령을 작성해야 하는지 알려주세요.