初学者的问题 MQL5 MT5 MetaTrader 5 - 页 453

 
pusheax:
胡说八道
嗯,大约是50/50。
 
Alexey Solomin:

对不起,没有指定平台,我有mql4,"POSITION_PROFIT "不在帮助中,它可能是 " OrderProfit"?

(请用这种方式插入图片:论坛:如何插入图片。- 好的)
是的,它是" OrderProfit" !
 

你好!我在kodobase中发现了一个代码和一个我找不到答案的问题。

在代码的开头

#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:

你好!我在kodobase中发现了一个代码和一个我找不到答案的问题。

在代码的开头

为什么要使用宏扩展(#define)? 这些变量在设置中是不可用的

以及如何使其有可能通过优化来检查它们

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

让它们成为输入变量。
 
Tapochun:
让它们成为输入变量。

在意义上说

#inputMAGIC_NUMBER 12937; so

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:

在意义上说

#inputMAGIC_NUMBER 12937; so

修改器输入,放在变量类型的前面,意味着该变量将在专家顾问的输入参数 列表中可用。

在魔法的特定情况下,最好在它前面加上修饰词sinput。这意味着该变量也将在输入参数列表中出现,它将参与优化,但它的值不能被优化。

一般来说,有文件。在编译器中选择单词输入并按下F1。那里有一些例子。

 

写下了我的第一个歪歪扭扭的EA,在滑板上。告诉我为什么它不发送订单

//+------------------------------------------------------------------+
//|                                                 Первый робот.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()中检查一个bar或tick处理条件,我怎么做呢?