Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1288

 
Quello che è _Digits lo capisco.
Ma come posso ottenere questo valore per un'altra coppia di valute?
Puoi dirmelo per favore?
 
User_mt5:
Quello che è _Digits lo capisco.
Come ottenerlo per un'altra coppia di valute?
Per favore, aiutatemi.

CIFRE SIMBOLO

Numero di cifre dopo la virgola decimale

int

 
Ciao!!! Puoi dirmi come registrare la struttura completata

MqlTradeRequest mrequest ???

Forse c'è una funzione in MQL5? Voglio capire perché ricevo questo messaggio 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:
Ciao!!! Puoi dirmi come registrare la struttura completata

MqlTradeRequest mrequest ???

Forse c'è una funzione in MQL5? Voglio capire perché ricevo questo messaggio 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

Ed ecco la trascrizione: qui
Ошибка 4756
Ошибка 4756
  • 2019.12.06
  • www.mql5.com
Всем добрый день. Помогите пожалуйста разобраться. При добавлении эксперта в маркет, во время тестирования выходит это - -- NEW_ORDER(): lot=0...
 
Potete per favore dirmi
come rimuovere programmaticamente la finestra di dialogo Alert dalla finestra?
 
Per favore ditemi come interpretare questa linea nel codice -- CParabolicStop *SARTrailing[];
CNRTRStop *NRTRTrailing[]; Capisco che CParabolicStop e CNRTRStop sono classi, * puntatore, array SARTrailing[] e NRTRTrailing[] Ma cosa significano queste stringhe? L'articolo di questo consigliere https://www.mql5.com/it/articles/134 dice che questo è --- Come faccio a capire questo? E dove esattamente vengono creati questi array? Posso davvero caricare classi in array, o oggetti di classi? E a cosa serve in termini pratici?
//+------------------------------------------------------------------+
//|                                          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);
     }
  }
//+------------------------------------------------------------------+

E se non sei duro, per favore specifica dove è scritto che questo asterisco è un puntatore * nella documentazione. L'ho visto una volta, ma ho già cercato in un libro di testo e non riesco a trovarlo((((

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

Salve, è possibile e come creare un algoritmo per aprire e chiudere un affare senza usare alcun indicatore?

Per esempio, prendete due linee, una linea di tendenza è in alto e la seconda è anche in basso, mettetele una sopra l'altra, c'è un punto di intersezione tra le due linee, supponiamo che sia a 15-30 nel tempo, poi come fare l'ordine aperto automaticamente allo stesso tempo per iniziare in qualsiasi direzione, come fare l'algoritmo troverà questi punti e aprire una posizione? Vorrei un chiarimento e le vostre opinioni.

Possiamo creare un EA basato su tale T3?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Ho bisogno di raccogliere in array, le gestioni dell'indicatore su diversi timeframe, ma risulta che
Fractal=iFractals(Symbol(),tik);

non può essere fatto in questo modo (strano, perché i numeri primi possono essere utilizzati in questo parametro, ma non una variabile con una costante numerica?
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:
Ho bisogno di raccogliere i gestori di indicatori su diversi timeframe in array, ma risulta che
non può farlo ( è strano, perché posso usare numeri primi in questo parametro, ma non una variabile con una costante numerica?

Perché ci deve essere un lasso di tempo

handle=iFractals(Symbol(),tf);

Identificatore

Descrizione

PERIODO_CORRENTE

Periodo corrente

PERIODO_M1

1 minuto

PERIODO_M2

2 minuti

PERIODO_M3

3 minuti

PERIODO_M4

4 minuti

PERIODO_M5

5 minuti

PERIODO_M6

6 minuti

PERIODO_M10

10 minuti

PERIODO_M12

12 minuti

PERIODO_M15

15 minuti

PERIODO_M20

20 minuti

PERIODO_M30

30 minuti

PERIODO_H1

1 ora

PERIODO_H2

2 ore

PERIODO_H3

3 ore

PERIODO_H4

4 ore

PERIODO_H6

6 ore

PERIODO_H8

8 ore

PERIODO_H12

12 ore

PERIODO_D1

1 giorno

PERIODO_W1

1 settimana

PERIODO_MN1

1 mese

 
Kira27:
Ho bisogno di raccogliere le maniglie degli indicatori su diversi timeframe in array, ma risulta che
non può essere fatto in questo modo (mi chiedo perché si possono usare numeri primi in questo parametro, ma non variabili con costanti numeriche
?

La maniglia dell'indicatore in MQL5 DEVE ESSERE CREATA UNA SOLA VOLTA!!! E deve essere fatto in OnInit()!!!