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

 
pusheax :
쓰레기
글쎄, 어딘가에 50/50
 
Alexey Solomin :

죄송합니다. 플랫폼을 지정하지 않았습니다. mql4가 있습니다. " POSITION_PROFIT"이 도움말에 없습니다. 아마도 " OrderProfit "일까요?

( 다음과 같이 그림을 삽입하십시오: 포럼: 그림을 삽입하는 방법 . - ok)
네, " 오더프로핏 "입니다!
 

안녕하세요 ! 코드베이스에서 하나의 코드와 그에 대한 질문을 찾았지만 답을 찾을 수 없었습니다.

어드바이저 코드의 시작

 #define MAGIC_NUMBER 12937

#define DEV 20
#define RISK 0.0
#define BASELOT 0.1
#define SL 100
#define TP 700
#define DELTA 30

설정에서 이러한 변수를 사용할 수 없기 때문에 매크로 지원(#define)이 사용되는 이유

최적화로 확인할 수 있도록 만드는 방법

https://www.mql5.com/ru/code/viewcode/244/53730/grr-al__3.mq5

 
Alexander Antoshkin :

안녕하세요 ! 코드베이스에서 하나의 코드와 그에 대한 질문을 찾았지만 답을 찾을 수 없었습니다.

어드바이저 코드의 시작

설정에서 이러한 변수를 사용할 수 없기 때문에 매크로 지원(#define)이 사용되는 이유

최적화로 확인할 수 있도록 만드는 방법

https://www.mql5.com/ru/code/viewcode/244/53730/grr-al__3.mq5

입력 변수로 만드십시오.
 
Tapochun :
입력 변수로 만드십시오.

어떤 의미에서

# 입력 MAGIC_NUMBER 12937; 그래서

input DEV 20;
input RISK 0.0;
input BASELOT 0.1;
input SL 100;
input TP 700;
input DELTA 30;
 или input uint MAGIC_NUMBER  12937;
 
Alexander Antoshkin:
input uint MAGIC_NUMBER=12937;
 
Karputov Vladimir :
그래서 컴파일러에서 오류가 발생했습니다. 알겠습니다. 지금은 감사합니다. 컴퓨터 앞에 있을 테니 계속하겠습니다.
 
Alexander Antoshkin :

어떤 의미에서

# 입력 MAGIC_NUMBER 12937; 그래서

변수 유형 앞에 있는 입력 수정자는 해당 변수를 전문가의 입력 매개변수 목록에서 사용할 수 있음을 의미합니다.

마술사의 특정한 경우에는 sinput 수식어를 앞에 두는 것이 좋습니다. 이는 변수를 입력 매개변수 목록에서도 사용할 수 있고 최적화에 참여하지만 값을 최적화할 수 없음을 의미합니다.

일반적으로 문서가 있습니다. 컴파일러에서 입력이라는 단어를 강조 표시하고 F1 키를 누릅니다. 거기에 예가 있습니다.

 

이동 평균에 대한 최초의 서투른 조언가를 저술했습니다. 그가 명령을 보내지 않는 이유를 말해?

 //+------------------------------------------------------------------+
//|                                                 Первый робот.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
input int TakeProfit = 1500 ;
input int StopLoss = 500 ;
int muving_handle_1;
int muving_handle_2;
double ma1[];
double ma2[];

int OnInit ()
  {
 int MA_1_PERIOD = 20 ;
 int MA_2_PERIOD = 10 ;
 muving_handle_1 = iMA ( _Symbol , _Period ,MA_1_PERIOD, 0 , MODE_SMA , PRICE_CLOSE );
 muving_handle_2 = iMA ( _Symbol , _Period ,MA_2_PERIOD, 0 , MODE_SMA , PRICE_CLOSE );
 return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   int signal; 
 
 if ( CopyBuffer (muving_handle_1, 0 , 0 , 3 ,ma1)< 0 )
 { 
       Alert ( "Ошибка копирования буферов индикатора MA 10 - номер ошибки:" , GetLastError ()); 
       return ; 
 } 
 
if ( CopyBuffer (muving_handle_1, 0 , 0 , 3 ,ma2)< 0 )
 { 
       Alert ( "Ошибка копирования буферов индикатора MA 20 - номер ошибки:" , GetLastError ()); 
       return ; 
 } 

signal=CheckTradeSignal(); 
PositionOpen(signal);
   
  }
//+------------------------------------------------------------------+
  
int CheckTradeSignal() 
  { 
   int TradeSignal= 0 ; 
   if ((ma2[ 2 ]>ma1[ 2 ]) && (ma2[ 1 ]<ma1[ 1 ])) 
      TradeSignal= 1 ; // Buy signal   
   if ((ma2[ 2 ]<ma1[ 2 ]) && (ma2[ 1 ]>ma1[ 1 ])) 
      TradeSignal= 2 ; // Sell signal 
   return TradeSignal; 
  } 
  
   bool PositionOpen( int tradeSignal) 
  { 
   int InpTP= 500 ,InpSL= 150 ; 

   if (tradeSignal> 0 ) // Signal 
     { 
       //--- 1. Создать запрос 
       MqlTradeRequest Trade_reqst={ 0 };             // Инициализация структуры торгового запроса 
      Trade_reqst.action= TRADE_ACTION_DEAL ;       // Тип: немедленное совершение сделки 
      Trade_reqst.symbol= _Symbol ;                 // Инструмент: текущий 
      Trade_reqst.volume= 1 ;                     // Лотаж 
      Trade_reqst.type_filling= ORDER_FILLING_FOK ; // Политика исполнения: Fill Or Kill 
       double sl,tp; 
       if (tradeSignal== 1 ) // Buy signal   
        { 
         Trade_reqst.type= ORDER_TYPE_BUY ;             // Тип ордера: на покупку 
         sl= SymbolInfoDouble ( _Symbol , SYMBOL_BID )-InpSL* _Point ; 
         tp= SymbolInfoDouble ( _Symbol , SYMBOL_BID )+InpTP* _Point ; 
        } 
       else 
        { 
         Trade_reqst.type= ORDER_TYPE_SELL ;           // Тип ордера: на продажу 
         sl= SymbolInfoDouble ( _Symbol , SYMBOL_ASK )+InpSL* _Point ; 
         tp= SymbolInfoDouble ( _Symbol , SYMBOL_ASK )-InpTP* _Point ; 
        } 
      Trade_reqst.sl=sl; 
      Trade_reqst.tp=tp; 
       //--- 2. Отправить торговый приказ 
       MqlTradeResult Trade_reslt_m={ 0 };             // Инициализация структуры результата торгового запроса 
       if (! OrderSend (Trade_reqst,Trade_reslt_m))     // Отправка торгового запроса на сервер 
         return false ; 
       else 
         return true ; 
     } 
   else              // No signal 
     { 
       return false ; 
     } 
  }  
Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
EA 디버깅 시 OneInit()에만 있는 변수와 함수의 값을 확인할 수 있는 이유를 알려주세요. OneTick()에서 막대나 눈금 처리 상태를 확인하고 싶은데 어떻게 해야 하나요?
사유: