Questions des débutants MQL5 MT5 MetaTrader 5 - page 453

 
pusheax:
Bullshit
Eh bien, c'est à peu près 50/50.
 
Alexey Solomin:

Désolé, je n'ai pas spécifié la plateforme, j'ai mql4,"POSITION_PROFIT" n'est pas dans l'aide, pourrait-il s'agir de " OrderProfit" ?

(Veuillez insérer une image de cette façon :forum : how to insert picture. - OK)
Oui, c'est " OrderProfit" !
 

Bonjour, j'ai trouvé un code dans kodobase et une question à laquelle je ne trouve pas de réponse,

au début du code

#define  MAGIC_NUMBER 12937

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

Pourquoi utiliser l'expansion de macro (#define) ? Ces variables ne sont pas disponibles dans les paramètres.

et comment faire en sorte qu'il soit possible de les vérifier avec l'optimisation

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

 
Alexander Antoshkin:

Bonjour, j'ai trouvé un code dans kodobase et une question à laquelle je ne trouve pas de réponse,

au début du code

Pourquoi utiliser l'expansion de macro (#define) ? Ces variables ne sont pas disponibles dans les paramètres.

et comment faire en sorte qu'il soit possible de les vérifier avec l'optimisation

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

Faites-en des variables d'entrée.
 
Tapochun:
Faites-en des variables d'entrée.

au sens de

#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:
C'est ce que j'ai fait, le compilateur m'a donné une erreur, ok merci pour l'instant, je vais retourner à mon ordinateur, je vais continuer.
 
Alexander Antoshkin:

au sens de

#inputMAGIC_NUMBER 12937 ; so

Le modificateur input, placé devant le type de variable, signifie que la variable sera disponible dans la liste des paramètres d'entrée de l'Expert Advisor.

Dans le cas spécifique du magik, il est préférable de mettre le modificateur sinput devant. Cela signifie que la variable sera également disponible dans la liste des paramètres d'entrée, qu'elle participera à l'optimisation mais que sa valeur ne pourra pas être optimisée.

En général, il existe une documentation. Dans le compilateur, sélectionnez word input et appuyez sur F1. Il y a des exemples.

 

J'ai écrit ma première EA tordue sur des slips. Dites-moi pourquoi il n'envoie pas de commandes?

//+------------------------------------------------------------------+
//|                                                 Первый робот.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, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Dites-moi pourquoi, en déboguant EA, je peux vérifier les valeurs des variables et des fonctions qui sont seulement dans OneInit() ? Disons que je veux vérifier une condition de traitement de la barre ou du tick dans OneTick(), comment puis-je le faire ?
Raison: