Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 58

 
Ich möchte selbst lernen, wie man Code schreibt... Also dachte ich, ich frage mal um Rat. Ich dachte, vielleicht könnte mir jemand eine Probe geben... Danke!
 
Stafort:
Ich möchte selbst lernen, wie man Code schreibt... Also dachte ich, ich frage mal um Rat. Ich dachte, vielleicht könnte mir jemand eine Probe geben... Danke!
Hier haben Sie eine Vielzahl von Mustern, wählen Sie das am besten geeignete aus, und es hat Bearbeitungen, die Ihren Bedürfnissen entsprechen. Wenn Sie das nicht können, können Sie in diesem Forum jederzeit Fragen stellen und Antworten erhalten.
 
Der Kunde beschwert sich, dass der Expert Advisor weiterhin Geschäfte eröffnet, obwohl er aus dem Diagramm entfernt wurde. Das kann doch nicht der Fall sein, oder?
Und wenn Sie es nicht aus dem Diagramm entfernen und einfach das EA-Fenster schließen, wird es funktionieren?
Ich danke Ihnen.
 
Vladimir Tkach:
Der Kunde beschwert sich, dass der Expert Advisor weiterhin Geschäfte eröffnet, auch wenn er aus dem Diagramm entfernt wurde. Das kann doch nicht der Fall sein, oder?
Und wenn Sie es nicht aus dem Diagramm entfernen und einfach das EA-Fenster schließen, wird es funktionieren?
Ich danke Ihnen.

Wenn er gelöscht und korrekt geschrieben wird, sollte er nicht gelöscht werden. Entladen mit Deinitialisierungscode - 1. Wenn der Expert Advisor einrastet... Wir müssen uns damit befassen...

Wenn Sie das EA-Fenster schließen, wird der EA mit Deinitialisierungscode entladen - 4:

REASON_CHARTCLOSE

4

Chart ist geschlossen


https://www.mql5.com/ru/docs/constants/namedconstants/uninit

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
MONTE_CRISTO:
Nun, das stimmt, es gibt dort Metaquote-Zitate, soweit ich mich erinnere, und Tickstory ist von guter Qualität.
Wenn Sie ein Konto bei einem Brokerage-Unternehmen mit MT5 zu öffnen, werden die Kurse "nicht zerrissen", was ist die Frage? Ich habe nie gelernt, wie man sie vorbereitet, während es mit MT5 einfacher und schneller zu exportieren ist.
 
Sergey Gritsay:
Zumindest ein Screenshot, um zu verstehen, welche Zeilen Sie zusammenführen möchten
Sergey Gritsay:
Zumindest einen Screenshot, um zu verstehen, welche Zeilen Sie zusammenführen möchten.
Sergey Gritsay:
Zumindest einen Screenshot, um zu verstehen, welche Art von Linien Sie kombinieren möchten. Vielen Dank für Ihre Antwort! Ich möchte zwei obere Werkzeugzeilen auf MT4 zu einer verbinden.
 

Was könnte die rote Farbe der Variablen dT bedeuten?


 
Andrei:

Was könnte die rote Farbe der Variablen dT bedeuten?


wird als "externe" Eingangsvariable deklariert
 
Leute, ein Hinweis. Tester gibt Fehler: 2017.02.08 18:24:43.751 TestGenerator: Nicht übereinstimmende Datenfehler (Tiefstwert 1.09860 am 2016.07.27 19:30 wird vom niedrigsten Zeitrahmen nicht erreicht, Tiefstpreis 1.09880 stimmt nicht überein)
Was bedeutet das und wie kann es behoben werden? Was habe ich falsch gemacht?
double Margin_Percent=AccountFreeMargin()*Percent/100; //Используемые средства для открытия ордеров
double Lots=Margin_Percent/MarketInfo(Symbol(),MODE_MARGINREQUIRED);//Определение общего количества лотов
double Lots_Volume=(MathFloor(Lots)+MarketInfo(Symbol(),MODE_LOTSTEP));
double MacdCurrent=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,1); //Параметры MACD основной линии текущего бара
double MacdPrevious1=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,2);//Параметры MACD основной линии предыдущего бара
double MacdPrevious2=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,3);//Параметры MACD основной линии со смещением на 2 бара
double StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,0);//Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime New_Time=TimeCurrent();// Время текущего бара
   bool New_Bar=false;                    // Флаг нового бара
   int ticket,total,cnt;
//---------------------------------------------------------------------------
   total=OrdersTotal();// Опредление количства ордеров
   if(total<1)
     {
      //--- нет открытых ордеров
      if(Margin_Percent<MarketInfo(Symbol(),MODE_MARGINREQUIRED)*(MarketInfo(Symbol(),MODE_MINLOT)))
         //Проверка на наличие денежных средств для открытия минимального лота
        {
         Print("Не хватает средств. Свободные средства = ",AccountFreeMargin());
         return;
        }
      if(Time[0]==New_Time) // Сравниваем время
        {
         New_Bar=true;      // Поймался новый бар
         if(New_Bar==false)    // Если бар не новый..
            return;            // ..то уходим  
        }
      //Определение количества лотов
      if(Lots>Lots_Volume)
         Lots=Lots_Volume;
      else if(Lots<Lots_Volume)
         Lots=MathFloor(Lots);
      return;
      //--- условие для открытия длинной позиции (BUY)
      if(CurrentPSAR<iOpen(NULL,0,1) &&
         ((MacdPrevious1>0 && MacdPrevious2<0) ||
         (MacdCurrent>0 && MacdPrevious1<0) ||
         (MacdCurrent>0 && MacdPrevious1==0 && MacdPrevious2<0)||
         (MacdCurrent>0 && MacdPrevious1==0 && MacdPrevious2==0)))
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point,0,NULL,MAGICNUMBER,0,Green);
         if(ticket>0)//проверка отрытия позиции
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY ордер открыт : ",OrderOpenPrice());
            else Print("Ошибка открытия ордера BUY : ",GetLastError());
            return;
           }
        }
      //--- условие для открытия короткой позиции (SELL)
      if(CurrentPSAR>iOpen(NULL,0,1) &&
         ((MacdCurrent<0 && MacdPrevious1>0) ||
         (MacdPrevious1<0 && MacdPrevious2>0) ||
         (MacdCurrent<0 && MacdPrevious1<0 && MacdPrevious2>0) ||
         (MacdCurrent<0 && MacdPrevious1==0 && MacdPrevious2==0)))
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point,0,NULL,MAGICNUMBER,0,Red);
         if(ticket>0)//проверка открытия позиции
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("SELL ордер открыт : ",OrderOpenPrice());
            else Print("Ошибка открытия ордера SELL : ",GetLastError());
            return;
           }
        }
      return; //--- выход из блока "нет открытых ордеров"
     }
//--- важно правильно войти в рынок, но более важно правильно из него выйти  
   for(cnt=0;cnt<total;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderMagicNumber()==MAGICNUMBER && // проверка магического номера ордера
         OrderSymbol()==Symbol()) // проверка символа ордера
        {
         //--- длинная позиция открыта
         if(OrderType()==OP_BUY)
           {
            //--- должен быть закрыт?
            if(CurrentPSAR>iOpen(NULL,0,1) &&
               ((MacdCurrent<0 && MacdPrevious1>0) ||
               (MacdPrevious1<0 && MacdPrevious2>0) ||
               (MacdCurrent<0 && MacdPrevious1<0 && MacdPrevious2>0) ||
               (MacdCurrent<0 && MacdPrevious1==0 && MacdPrevious2==0)))
              {
               //--- закрытие ордера и выход
               if(OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
                 {
                  Print("Ордер закрыт");
                  ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point,0,NULL,MAGICNUMBER,0,Red);
                  if(ticket>0)//проверка открытия позиции
                    {
                     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                        Print("SELL ордер открыт : ",OrderOpenPrice());
                     else Print("Ошибка открытия ордера SELL : ",GetLastError());
                     return;
                    }
                 }
              else Print("Ошибка закрытия ордера ",GetLastError());

              }
            //------------------Модификация ордера по СтопЛоссу
            else if(StopLoss>Previous_StopLoss && StopLoss<iOpen(NULL,0,0))
              {
               if(OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point,0,0,Blue))
                  Print("Цена Stop Loss ордера успешно модифицирована.");
               else Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
               return;
              }
            return;
           }
         // идём на короткую позицию
         else if(OrderType()==OP_SELL)
           {
            //--- должен быть закрыт?
            if(CurrentPSAR<iOpen(NULL,0,1) &&
               ((MacdPrevious1>0 && MacdPrevious2<0) ||
               (MacdCurrent>0 && MacdPrevious1<0) ||
               (MacdCurrent>0 && MacdPrevious1==0 && MacdPrevious2<0)||
               (MacdCurrent>0 && MacdPrevious1==0 && MacdPrevious2==0)))
              {
               //--- закрытие ордера и выход
               if(OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
                 {
                  Print("Ордер закрыт");
                  ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point,0,NULL,MAGICNUMBER,0,Green);
                  if(ticket>0)//проверка отрытия позиции
                    {
                     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                        Print("BUY ордер открыт : ",OrderOpenPrice());
                     else Print("Ошибка открытия ордера BUY : ",GetLastError());
                     return;
                    }
                 }
               else Print("Ошибка закрытия ордера ",GetLastError());
              }
            //-----------------Модификация ордера по СтопЛоссу            
            else if(StopLoss<Previous_StopLoss && StopLoss>iOpen(NULL,0,0))
              {
               if(OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point,0,0,Blue))
                  Print("Цена Stop Loss ордера успешно модифицирована.");
               else Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
               return;
              }
           }
        }
     }
//------
  }
//-------------------------------------------------------------------------------------------------------
 
Michail_David:
Leute, ein Hinweis. Tester gibt Fehler: 2017.02.08 18:24:43.751 TestGenerator: Nicht übereinstimmende Datenfehler (Tiefstwert 1.09860 am 2016.07.27 19:30 wird vom niedrigsten Zeitrahmen nicht erreicht, Tiefstpreis 1.09880 stimmt nicht überein)
Was bedeutet das und wie kann es behoben werden? Was habe ich falsch gemacht?
Es sind die Zitate, sie sind von schlechter Qualität.
Grund der Beschwerde: