Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 453

 
pusheax:
Schwachsinn
Nun, es ist ungefähr 50/50.
 
Alexey Solomin:

Sorry, ich habe die Plattform nicht angegeben, ich habe mql4,"POSITION_PROFIT" ist nicht in der Hilfe, könnte es " OrderProfit" sein?

(Bitte fügen Sie ein Bild auf diese Weise ein:forum: how to insert picture. - OK)
Ja, es ist " OrderProfit"!
 

Hallo! Ich habe einen Code in kodobase gefunden und eine Frage dazu, auf die ich keine Antwort finden kann,

am Anfang des Codes

#define  MAGIC_NUMBER 12937

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

Warum verwende ich die Makroexpansion (#define)? Diese Variablen sind in den Einstellungen nicht verfügbar

und wie es möglich ist, sie mit Optimierung zu überprüfen

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

 
Alexander Antoshkin:

Hallo! Ich habe einen Code in kodobase gefunden und eine Frage dazu, auf die ich keine Antwort finden kann,

am Anfang des Codes

Warum verwende ich die Makroexpansion (#define)? Diese Variablen sind in den Einstellungen nicht verfügbar

und wie es möglich ist, sie mit Optimierung zu überprüfen

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

Machen Sie sie zu Eingabevariablen.
 
Tapochun:
Machen Sie sie zu Eingabevariablen.

im Sinne von

#EingabeMAGIC_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:
Das habe ich getan, der Compiler gab mir eine Fehlermeldung, ok, danke fürs Erste, ich gehe zurück zu meinem Computer, ich werde weitermachen.
 
Alexander Antoshkin:

im Sinne von

#EingabeMAGIC_NUMBER 12937; so

Der Modifikator input, der dem Variablentyp vorangestellt ist, bedeutet, dass die Variable in der Liste der Eingabeparameter des Expert Advisors verfügbar ist.

Im speziellen Fall von Magie ist es besser, den Modifikator sinput voranzustellen. Das bedeutet, dass die Variable auch in der Liste der Eingabeparameter vorhanden ist und an der Optimierung teilnimmt, ihr Wert aber nicht optimiert werden kann.

Im Allgemeinen gibt es eine Dokumentation. Wählen Sie im Compiler die Worteingabe und drücken Sie F1. Dort gibt es Beispiele.

 

Habe meinen ersten krummen EA auf Zetteln geschrieben. Sagen Sie mir, warum es keine Aufträge sendet?

//+------------------------------------------------------------------+
//|                                                 Первый робот.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, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Sagen Sie mir, warum ich beim Debuggen von EA Werte von Variablen und Funktionen überprüfen kann, die nur in OneInit() enthalten sind? Angenommen, ich möchte eine Bar- oder Tick-Verarbeitungsbedingung in OneTick() überprüfen, wie kann ich das tun?
Grund der Beschwerde: