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

 
Was _Digits ist, verstehe ich.
Aber wie erhalte ich diesen Wert für ein anderes Währungspaar?
Können Sie mir das bitte sagen?
 
User_mt5:
Was _Digits ist, verstehe ich.
Wie bekomme ich sie für ein anderes Währungspaar?
Bitte, helfen Sie mir.

SYMBOL_ZIFFERN

Anzahl der Ziffern nach dem Dezimalpunkt

int

 
Hallo!!! Können Sie mir sagen, wie ich die fertige Struktur protokollieren kann?

MqlTradeRequest mrequest ???

Vielleicht gibt es eine Funktion in MQL5? Ich möchte verstehen, warum ich diese Meldung bekomme 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alert: Request to place Sell order failed - error code:4756


//--- собираем все вместе
   if(Sell_Condition_1 && Sell_Condition_2)
     {
      if(Sell_Condition_3 && Sell_Condition_4)
        {
         // есть ли в данный момент открытая позиция на продажу?
         if(Sell_opened)
           {
            Alert("Уже есть позиция на продажу!!!");
            return;    // не добавлять к открытой позиции на продажу
           }
         mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
         mrequest.price = NormalizeDouble(latest_price.bid,_Digits);           // последняя цена Bid
         mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
         mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
         mrequest.symbol = _Symbol;                                            // символ
         mrequest.volume = Lot;                                                // количество лотов для торговли
         mrequest.magic = EA_Magic;                                            // Magic Number
         mrequest.type= ORDER_TYPE_SELL;                                       // ордер на продажу
         mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
         mrequest.deviation=100;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
           {
            Alert("Ордер Sell успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Sell не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
     }
   return;
  }

 
Kira27:
Hallo!!! Können Sie mir sagen, wie ich die fertige Struktur protokollieren kann?

MqlTradeRequest mrequest ???

Vielleicht gibt es eine Funktion in MQL5? Ich möchte verstehen, warum ich diese Meldung bekomme 2021.02.08 21:29:20.876 my_first_ea_sartrailing (BRN,M5) Alert: Request to place Sell order failed - error code:4756


https://www.mql5.com/ru/forum/327894

Und hier ist die Abschrift: hier
Ошибка 4756
Ошибка 4756
  • 2019.12.06
  • www.mql5.com
Всем добрый день. Помогите пожалуйста разобраться. При добавлении эксперта в маркет, во время тестирования выходит это - -- NEW_ORDER(): lot=0...
 
Können Sie mir bitte mitteilen
, wie ich das Dialogfeld " Warnung" programmgesteuert aus dem Fenster entfernen kann?
 
Bitte sagen Sie mir, wie diese Zeile im Code zu interpretieren ist - CParabolicStop *SARTrailing[];
CNRTRStop *NRTRTrailing[]; Ich verstehe, dass CParabolicStop und CNRTRStop Klassen sind, * Zeiger, Arrays SARTrailing[] und NRTRTrailing[] Aber was bedeuten diese Zeichenfolgen? Der Artikel dieses Ratgebers https://www.mql5.com/de/articles/134 heißt es, dass dies --- Wie ist das zu verstehen? Und wo genau werden diese Arrays erstellt? Kann ich wirklich Klassen in Arrays laden, oder Objekte von Klassen? Und wozu dient das in der Praxis?
//+------------------------------------------------------------------+
//|                                          Sample_TrailingStop.mq5 |
//|                                        MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#include <Sample_TrailingStop.mqh> // подключение класса трейлинга

//--- input parameters
input double   SARStep     =  0.02;    // Шаг Parabolic
input double   SARMaximum  =  0.02;    // Максимум Parabolic
input int      NRTRPeriod  =  40;      // Период NRTR
input double   NRTRK       =  2;       // Коэффициент NRTR

string Symbols[]={"EURUSD","GBPUSD","USDCHF","USDJPY"};

CParabolicStop *SARTrailing[];
CNRTRStop *NRTRTrailing[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ArrayResize(SARTrailing,ArraySize(Symbols));  // изменение размера в соответствии с количеством используемых символов
   ArrayResize(NRTRTrailing,ArraySize(Symbols)); // изменение размера в соответствии с количеством используемых символов   
   for(int i=0;i<ArraySize(Symbols);i++)
     { // для всех символов
      SARTrailing[i]=new CParabolicStop(); // создание экземпляра класса CParabolicStop
      SARTrailing[i].Init(Symbols[i],PERIOD_CURRENT,false,true,true,5,15+i*17,Silver,Blue); // инициализация экземпляра класса CParabolicStop 
      if(!SARTrailing[i].SetParameters(SARStep,SARMaximum))
        { // установка параметров экземпляра класса CParabolicStop 
         Alert("trailing error");
         return(-1);
        }
      SARTrailing[i].StartTimer(); // запуск таймера
      //----
      NRTRTrailing[i]=new CNRTRStop(); // создание экземпляра класса CNRTRStop
      NRTRTrailing[i].Init(Symbols[i],PERIOD_CURRENT,false,true,true,127,15+i*17,Silver,Blue); // инициализация экземпляра класса CNRTRStop 
      if(!NRTRTrailing[i].SetParameters(NRTRPeriod,NRTRK))
        { // установка параметров экземпляра класса CNRTRcStop 
         Alert("trailing error");
         return(-1);
        }
      NRTRTrailing[i].StartTimer(); // запуск таймера         
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].Deinit();
      NRTRTrailing[i].Deinit();
      delete(SARTrailing[i]);
      delete(NRTRTrailing[i]);
     }

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].DoStoploss();
      NRTRTrailing[i].DoStoploss();
     }

  }
//+------------------------------------------------------------------+

void OnTimer()
  {
   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].Refresh();
      NRTRTrailing[i].Refresh();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam
                  )
  {

   for(int i=0;i<ArraySize(Symbols);i++)
     {
      SARTrailing[i].EventHandle(id,lparam,dparam,sparam);
      NRTRTrailing[i].EventHandle(id,lparam,dparam,sparam);
     }
  }
//+------------------------------------------------------------------+

Und wenn Sie nicht hart sind, geben Sie bitte an, wo in der Dokumentation von diesem Sternchen als Zeiger * die Rede ist. Ich habe es einmal gesehen, aber ich habe bereits ein Lehrbuch durchgesehen und kann es nicht finden((((

Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Основное правило трейдера - дай прибыли расти, обрезай убытки! В статье рассматривается один из основных технических приемов, позволяющий следовать этому правилу - перемещение уровня защитной остановки (уровня Stoploss) вслед за растущей прибылью позиции, другими словами - скользящий стоп или трейлинг стоп (trailingstop). Приводится пошаговая процедура создания класса для трейлинг стопа на индикаторах SAR и NRTR, который каждый желающий сможет за 5 минут встроить в своего эксперта или использовать независимо для управления позициями на своем счете.
 

Hallo, ist es möglich und wie kann man einen Algorithmus für die Eröffnung und den Abschluss eines Geschäfts erstellen, ohne irgendwelche Indikatoren zu verwenden?

Zum Beispiel, nehmen Sie zwei Linien, eine Trendlinie ist nach oben und die zweite ist auch nach unten, legte sie auf einander, gibt es einen Schnittpunkt zwischen den beiden Linien, nehmen wir an, es ist bei 15-30 in der Zeit, dann, wie die Reihenfolge automatisch zur gleichen Zeit geöffnet, um in eine beliebige Richtung zu starten, wie man den Algorithmus wird diese Punkte zu finden und eine Position zu öffnen? Ich bitte um Klärung und Ihre Meinung.

Können wir einen EA auf der Grundlage eines solchen T3 erstellen?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Hallo!!! Eine Frage wie diese? Ich brauche, um in Arrays zu sammeln, der Indikator Griffe auf verschiedenen Timeframes, aber es stellt sich heraus, dass
Fractal=iFractals(Symbol(),tik);

kann nicht getan werden, dass Weg( Seltsam, warum kann Primzahlen in diesem Parameter verwendet werden, aber nicht eine Variable mit einer numerischen Konstante?
void OnTick()
  {
   for(int tik =1; tik <= 6; tik++)
     {
      Fractal=iFractals(Symbol(),tik);   // Вот эта tik переменная вызывает ошибку при компиляции

      switch(tik)
        {
         case 1:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_W1),FractalUP_W1);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_W1),FractalDown_W1); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_W1,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_W1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 2:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalUP_D1);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalDown_D1); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_D1,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_D1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 3:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_H4),FractalUP_H4);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_H4),FractalDown_H4); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_H4,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_H4,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 4:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_H1),FractalUP_H1);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_H1),FractalDown_H1); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_H1,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_H1,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 5:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_M30),FractalUP_30);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_M30),FractalDown_30); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_30,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_30,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;
         case 6:
            CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_M15),FractalUP_15);   // заполнение масива FractalUp[] верхними фракталами на дневном графике
            CopyBuffer(Fractal,1,TimeCurrent(),Bars(Symbol(),PERIOD_M15),FractalDown_15); // заполнение масива FractalUp[] нижними фракталами на дневном графике
            //--- индексация как в таймсериях
            ArraySetAsSeries(FractalUP_15,true);  //Заполнение массива FractalUp[],FractalDown, нулевым баром в первом окне массива и далее по порядку убывания от нулевого в тайм-серии
            ArraySetAsSeries(FractalDown_15,true);//Второй параметр -true- функции ArraySetAsSeries Устанавливает флаг индексации как в таймсериях.
            ;
            break;

        }
     }
 
Kira27:
Hallo!!! Ich habe eine Frage. Ich muss Indikator-Handler für verschiedene Zeitrahmen in Arrays sammeln, aber es stellt sich heraus, dass
das nicht kann( Es ist seltsam, warum kann ich Primzahlen in diesem Parameter verwenden, aber nicht eine Variable mit einer numerischen Konstante?

Denn es muss einen Zeitrahmen geben

handle=iFractals(Symbol(),tf);

Kennung

Beschreibung

PERIOD_CURRENT

Aktueller Zeitraum

PERIOD_M1

1 Minute

PERIOD_M2

2 Minuten

PERIOD_M3

3 Minuten

PERIOD_M4

4 Minuten

PERIOD_M5

5 Minuten

PERIOD_M6

6 Minuten

PERIOD_M10

10 Minuten

PERIOD_M12

12 Minuten

PERIOD_M15

15 Minuten

PERIOD_M20

20 Minuten

PERIOD_M30

30 Minuten

PERIOD_H1

1 Stunde

PERIOD_H2

2 Stunden

PERIOD_H3

3 Stunden

PERIOD_H4

4 Stunden

PERIOD_H6

6 Stunden

PERIOD_H8

8 Stunden

PERIOD_H12

12 Stunden

PERIOD_D1

1 Tag

PERIOD_W1

1 Woche

PERIOD_MN1

1 Monat

 
Kira27:
Ich brauche, um die Indikator-Handles auf verschiedenen Zeitrahmen in Arrays zu sammeln, aber es stellt sich heraus, dass
nicht auf diese Weise getan werden kann (Ich frage mich, warum Sie Primzahlen in diesem Parameter verwenden können, aber nicht Variablen mit numerischen Konstanten
?

Indikatorgriff in MQL5 MUSS EINMAL ERSTELLT WERDEN!!! Und das muss in OnInit() geschehen!!!