Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 453

 
pusheax:
Besteira
Bem, é cerca de 50/50.
 
Alexey Solomin:

Desculpe, não especifiquei a plataforma, tenho mql4,"POSITION_PROFIT" não está na ajuda, poderia ser " OrderProfit" ?

(Por favor insira uma imagem desta forma:fórum: como inserir imagem. - OK)
Sim, é " OrderProfit"!
 

Olá! encontrei um código no kodobase e uma pergunta para a qual não consigo encontrar a resposta,

no início do código

#define  MAGIC_NUMBER 12937

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

Porque uso expansão macro (#define)? Estas variáveis não estão disponíveis nas definições

e como torná-las possíveis de verificar com optimização

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

 
Alexander Antoshkin:

Olá! encontrei um código no kodobase e uma pergunta para a qual não consigo encontrar a resposta,

no início do código

Porque uso expansão macro (#define)? Estas variáveis não estão disponíveis nas definições

e como torná-las possíveis de verificar com optimização

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

Faça-os introduzir variáveis.
 
Tapochun:
Faça-os introduzir variáveis.

no sentido de

#inputMAGIC_NUMBER 12937; portanto

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:
Foi o que eu fiz, o compilador deu-me um erro, ok obrigado por agora, vou voltar para o meu computador, vou continuar.
 
Alexander Antoshkin:

no sentido de

#inputMAGIC_NUMBER 12937; portanto

A entrada do modificador, colocada em frente do tipo de variável, significa que a variável estará disponível na lista de parâmetros de entrada do Expert Advisor.

No caso específico do magik, é melhor colocar o modificador sinput em frente a ele. Isto significa que a variável também estará disponível na lista de parâmetros de entrada, participará na optimização mas o seu valor não pode ser optimizado.

Em geral, existe documentação. No compilador seleccionar a entrada de palavras e premir F1. Há aí exemplos.

 

Escrevi a minha primeira EA tortuosa em folhas de papelão. Diga-me porque é que não envia encomendas?

//+------------------------------------------------------------------+
//|                                                 Первый робот.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, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Diga-me porque é que na depuração EA posso verificar valores de variáveis e funções que estão apenas no OneInit()? Digamos que quero verificar uma barra ou condição de processamento de carrapatos no OneTick() como posso fazer isso?