Fehler, Irrtümer, Fragen - Seite 1503

 
Slawa:

Diese Tatsache wurde übersehen. Entschuldigung

Vielleicht können wir es reparieren. Es ist schwer zu sagen, wie der Zeitpunkt ist.

Ich danke Ihnen.
 
Slawa:

Ihr Verhalten nennt man militante Ignoranz.

Bitte hören Sie auf, sinnlose Beiträge zu verfassen und beleidigen Sie keine Forumsmitglieder mehr.

Ich habe also nach Zeitzonen gefragt und meine Meinung geäußert, dass die Möglichkeit, Variablen global mit Funktionen zu initialisieren, nicht abgeschafft werden sollte.

 

Einer der Benutzer meiner Software schickte einen Screenshot von einem Problem beim Ausführen der Software im Testprogramm

Was kann es sein und was ist als nächstes zu tun?

 
Vladimir Pastushak:

Einer der Benutzer meiner Software schickte einen Screenshot von einem Problem beim Ausführen der Software im Testprogramm

Was kann es sein und was ist als nächstes zu tun?

Schreiben Sie an servicedesk.
 
Vladimir Pastushak:

Einer der Benutzer meiner Software schickte einen Screenshot von einem Problem beim Ausführen der Software im Testprogramm

Was kann es sein und was ist als nächstes zu tun?

Das ist ein paar Mal passiert. Der Neustart des Terminals hat geholfen.
 
Vladimir Pastushak:

Einer der Benutzer meiner Software schickte einen Screenshot von einem Problem beim Ausführen der Software im Testprogramm

Was kann es sein und was ist als nächstes zu tun?

An servicedesk mit vollständiger Beschreibung und Code (der nach allen Kontrollen entfernt wird).
 
Ich möchte sicherstellen, dassdie Funktionen iHigh(....) /iLow(...) einen Bid-Wert zurückgeben?
 
Sergey Genikhov:
Ich möchte sicherstellen, dass die Funktionen iHigh(....)/iLow(...) den Bid-Wert zurückgeben?
Ja, die Grafik basiert auf den Angebotspreisen.
 
Alexey Kozitsyn:
Ja, die Grafik basiert auf den Angebotspreisen.

Quelle: ))))

 

Beim Verbinden von Grafiken schreibt 2016.02.11 00:21:02.663 'MoyforNeuro' ist kein Experte und kann nicht ausgeführt werden, Compiler gibt keine Fehler, alles hat vorher gut funktioniert, aber nach neuen Builds kam das Problem! Bitte teilen Sie mir mit, was damit nicht in Ordnung ist, hier ist der Experte selbst

//+------------------------------------------------------------------+
//|                                                  Excel_Neuro.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property strict
input string FileName = "OrderEU.txt"; //- Имя файла в каталоге TerminalPath()+"\experts\files",
                                       //  с которого будут считываться данные о изменениях в ордерах.
input int MagicStart = 99;      //- Эксперт удаляет только ордера, магики которых
input int MagicEnd   = 999;      //  входят в указанный здесь интервал
input int Sensitivity  = 30;         //- Чувствительность сигнала в пунктах.
//extern double NewRisk   = 1.0;         //- Коэффициент изменения риска
//extern bool LittleLots  = true;        //- Если true, то при лоте меньше минимальнодопустимого на этом счёте, будет открыт минимальный лот
input int Stoploss = 30;
input int SP = 30;                    //- SleepPage - предельное отклонение от цены
//--------------------------------------------------------------------------
extern double Time_shift=15;
//---------------------------------------------------------------------------
 int    OCount=0;
 int   OMagic[1000];
 string OSymbol[1000];
 double   OType[1000];
 double ORisk[1000];
 double OOP[1000];
 double OSL[1000];
 double OTP[1000];
//---------------------------------------------------------------------------
int start() {
   
 //-----------------------------------------------------------------------------------
    int magic=0;
    
   int _GetLastError = 0, _OrdersTotal = OrdersTotal();
   //bool ALLRIGHT=true;
   if(!FileExist(FileName)) return(0);
   FileLoad(FileName);
   //Удаляем старые
   if(CloseAllBeingAbsentPozitions()<0) return(0);
   //Корректируем существующие
      for(int i=0; i<OCount; i++) {
      magic=OrderExist("",OMagic[i]);
      if(magic>0){
        
      
      if(OrderMagicNumber()==OMagic[i]){
      Print("Ордер с таким магиком уже существует");
      FileDelete(FileName);} 
      } 
      else 
      { 
      //Обрабатываем существующие
            
          for(int q=0; q<=OrdersTotal(); q++) {  
            if(OrderSelect(q,SELECT_BY_POS, MODE_TRADES)){
            Print("Выбрал ордер ", OrderMagicNumber(),"Всего ордеров ",OrdersTotal()); 
                  
               if(OrderType()==OType[i]){
               Print("Ордер по типу соответствует последнему сигналу");
               MODIFY(OSymbol[i], magic, OSL[i], OTP[i]);
               }
               else if(OrderType()!=OType[i]){
               Print("Удалим ордера другого типа");
               //if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);return(0);}
               //if(OrderType()==OP_SELL){ OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);return(0);}
               }
            }            
          }
      //Открываем новые позиции 
            if(OType[i]==OP_BUY) {
               if(MathAbs(MarketInfo(OSymbol[i],MODE_ASK)-OOP[i])<Sensitivity*MarketInfo(OSymbol[i],MODE_POINT)) {
                  BUY(OSymbol[i],ORisk[i], OSL[i], OTP[i], OMagic[i]);
                  Print("Удалим файл после открытия БАЙ ордера");
                  FileDelete(FileName);
               }
            } 
            else if(OType[i]==OP_SELL) {
               if(MathAbs(MarketInfo(OSymbol[i],MODE_BID)-OOP[i])<Sensitivity*MarketInfo(OSymbol[i],MODE_POINT)) {
                  SELL(OSymbol[i],ORisk[i], OSL[i], OTP[i], OMagic[i]);
                  Print("Удалим файл после открытия СЕЛЛ ордера");
                  FileDelete(FileName);
               }
            } 
         }
  
   }//Next i

   return(0);
} //start()
//---------------------------------------------------------------------------
bool FileExist(string file) {
   int handle=FileOpen(file,FILE_BIN);
   if(handle<0) {
      return(false);
   } else {
      FileClose(handle);
      return(true);
   }
}//FileExist()
//---------------------------------------------------------------------------
int FileLoad(string file) {
   int i=0, j=0; double k=0;
   string buffer[1000];
   int handle=FileOpen(file,FILE_BIN);
   if(handle<0) {
      return(-1);
   } else {
      k=FileReadArray(handle,buffer,0,1000);
      FileClose(handle);
      //OCount=0;
      //while(!StringTrimRight(StringTrimLeft(buffer[OCount]))=="") {
      for(OCount=0; OCount<k; OCount++) {
         i = StringFind(buffer[OCount]," ",0);
         ORisk[OCount]=StrToDouble(StringSubstr(buffer[OCount], 0,i));
         j=i+1;
         i = StringFind(buffer[OCount]," ",j);
         OMagic[OCount]=(int)StrToDouble(StringSubstr(buffer[OCount], j,i-j));
         j=i+1;
         i = StringFind(buffer[OCount]," ",j);
         OSymbol[OCount]=StringSubstr(buffer[OCount], j,i-j);
         j=i+1;
         i = StringFind(buffer[OCount]," ",j);
         OType[OCount]=StrToDouble(StringSubstr(buffer[OCount], j,i-j));
         j=i+1;
         i = StringFind(buffer[OCount]," ",j);
         OOP[OCount]=StrToDouble(StringSubstr(buffer[OCount], j,i-j));
         j=i+1;
         i = StringFind(buffer[OCount]," ",j);
         OSL[OCount]=StrToDouble(StringSubstr(buffer[OCount], j,i-j));
         j=i+1;
         OTP[OCount]=StrToDouble(StringSubstr(buffer[OCount], j,0));
         //OCount++;
      }//Next OCount
   }
return(-1);
}//FileLoad()
//+------------------------------------------------------------------+
int OrderExist(string fSymbol="", int fMagic=0, int fType=-1) {
   int  total = OrdersTotal();
   for (int i = total-1; i >= 0; i--) {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      if(OrderSymbol()==fSymbol || fSymbol=="") {
         if(OrderMagicNumber()==fMagic || fMagic==0) {
            if(OrderType()==fType||fType==-1) {
               return(OrderTicket());
            }
         }
      } // Если свой
   } // Next i
   return(-1);
}//OrderExist()
//+------------------------------------------------------------------+
int CloseAllBeingAbsentPozitions() {
   int    Cur_Hour=Hour();                // Серверное время в часах
   //double Cur_Min =Minute();              // Серверное время в минутах
   //double Cur_time=Cur_Hour; //+ Cur_Min/100;    // Текущее время
   int LE;
   int y,x=100;
   double PriceClose=0,z=0;
   bool Del;
   int  total = OrdersTotal();
    
   for (int i = total-1; i >= 0; i--) {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
        while(x<124){
            x++;
            y=24;
            if(x-101+Time_shift-y<0){ 
            y=0;
            } 
            else {
            y=24;}
            z=x-101+Time_shift-y;
            Print("Закрываем ордера, Номер магика X= ",x-1," Выбрал ордер с магиком ",OrderMagicNumber()," Время закрытия ",z);
         
         
         if(OrderMagicNumber()==x&&Cur_Hour==z) continue;
         Del=true;
        }
         
         
         for(int j=0; j<OCount; j++) {
            
            if(OrderMagicNumber()==OMagic[j]) {
               Del=false;
               break;
            }
         }
         if(Del) {
            if(OrderType()>1&&OrderType()<6) 
             if(OrderDelete(OrderTicket())==true)
             Print("Ордер удален");
             else {
               LE=135;
               while(LE>134 && LE<139) {
                  if(OrderType()==OP_BUY) {
                     PriceClose=MarketInfo(OrderSymbol(),MODE_BID);
                  } else if(OrderType()==OP_SELL) {
                     PriceClose=MarketInfo(OrderSymbol(),MODE_ASK);
                  }
                  if(OrderClose(OrderTicket(),OrderLots(),PriceClose,SP))
                  LE = GetLastError();
                  if(LE>0) Print("СтаФФка не закрывается по причине ашипки № ",LE);
               }
               if(LE>0) return(-1);
            }
         }
      }
   } // Next i
   return(0);
}//CloseAllPozitions()
//+------------------------------------------------------------------+
int MODIFY(string mySymbol, int magic, double sl = 0, double tp = 0) {
   double stoplimit=MarketInfo(mySymbol, MODE_STOPLEVEL)*MarketInfo(mySymbol,MODE_POINT);
      Print("Пытаемся модифицировать",OrderMagicNumber());
      //for(int i=0; i<OCount; i++) {
      //for (magic=100; magic <= 123; magic++) {
      //if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
      magic=OrderMagicNumber();
      if(OrderSelect(magic, SELECT_BY_TICKET)) {
      
      double SLo=OrderStopLoss();
      
      double TPo=OrderTakeProfit();
      //sl=NormalizeDouble(sl,MarketInfo(mySymbol,MODE_DIGITS));
      //tp=NormalizeDouble(tp,MarketInfo(mySymbol,MODE_DIGITS));
      
      if(OrderType()==OP_BUY) {
                Print("Проверяем, является ли ордером БАЙ , тип ордера ",OrderType());
                if(NormalizeDouble(sl,Digits)>NormalizeDouble(SLo,Digits)) {
                sl=NormalizeDouble(sl,(int)MarketInfo(mySymbol,MODE_DIGITS));
                }
                else {
                sl=NormalizeDouble(SLo,(int)MarketInfo(mySymbol,MODE_DIGITS));
                }
         
                if(NormalizeDouble(tp,Digits)<NormalizeDouble(TPo,Digits)) {
                tp=NormalizeDouble(tp,(int)MarketInfo(mySymbol,MODE_DIGITS));
                }
                else {
                tp=NormalizeDouble(TPo,(int)MarketInfo(mySymbol,MODE_DIGITS));
                }
         
         
         
         if(sl>0) {
            Print("Проверяем, есть ли у ордера с/л ",OrderStopLoss());
            if(MarketInfo(mySymbol,MODE_BID)-sl<stoplimit) {
               Print("Слишком близкий стоп (",(MarketInfo(mySymbol,MODE_BID)-sl)/MarketInfo(mySymbol,MODE_POINT)," пунктов). Требуется не менее: ", stoplimit/MarketInfo(mySymbol,MODE_POINT));
               return(-1);
            }
         }
         if(tp>0) {
            Print("Проверяем, есть ли у ордера т/п ",OrderTakeProfit());
            if(tp-MarketInfo(mySymbol,MODE_ASK)<stoplimit) {
               Print("Слишком близкий профит (",(tp-MarketInfo(mySymbol,MODE_ASK))/MarketInfo(mySymbol,MODE_POINT)," пунктов). Требуется не менее: ", stoplimit/MarketInfo(mySymbol,MODE_POINT));
               return(-1);
            }
         }
      } else if(OrderType()==OP_SELL) {
                Print("Проверяем, является ли ордером СЕЛЛ , тип ордера ",OrderType());
                if(NormalizeDouble(sl,Digits)<NormalizeDouble(SLo,Digits)) {
                sl=NormalizeDouble(sl,(int)MarketInfo(mySymbol,MODE_DIGITS));
                }
                else {
                sl=NormalizeDouble(SLo,(int)MarketInfo(mySymbol,MODE_DIGITS));
                }
                
                if(NormalizeDouble(tp,Digits)>NormalizeDouble(TPo,Digits)) {
                tp=NormalizeDouble(tp,(int)MarketInfo(mySymbol,MODE_DIGITS));
                }
                else {
                tp=NormalizeDouble(TPo,(int)MarketInfo(mySymbol,MODE_DIGITS));
                }
                                
         if(sl>0) {
            if(sl-MarketInfo(mySymbol,MODE_ASK)<stoplimit) {
               Print("Слишком близкий стоп (",(sl-MarketInfo(mySymbol,MODE_ASK))/MarketInfo(mySymbol,MODE_POINT)," пунктов). Требуется не менее: ", stoplimit/MarketInfo(mySymbol,MODE_POINT));
               return(-1);
            }
         }
         if(tp>0) {
            if(MarketInfo(mySymbol,MODE_BID)-tp<stoplimit) {
               Print("Слишком близкий профит (",(MarketInfo(mySymbol,MODE_BID)-tp)/MarketInfo(mySymbol,MODE_POINT)," пунктов). Требуется не менее: ", stoplimit/MarketInfo(mySymbol,MODE_POINT));
               return(-1);
            }
         }
      }
      if(DoubleToStr(OrderStopLoss(),(int)MarketInfo(mySymbol,MODE_DIGITS))==DoubleToStr(sl,(int)MarketInfo(mySymbol,MODE_DIGITS)) &&
      DoubleToStr(OrderTakeProfit(),(int)MarketInfo(mySymbol,MODE_DIGITS))==DoubleToStr(tp,(int)MarketInfo(mySymbol,MODE_DIGITS))) return(0);
      if(OrderModify(magic,OrderOpenPrice(), sl, tp, 0)==FALSE) {
         Print("Ошибка OrderModify(): ",GetLastError());
         return(-1);
      }
   }
   return(0);
}//Modify()
//+------------------------------------------------------------------+
int BUY(string mySymbol="", double lt=0, double sl=0, double tp=0, int mn=0) {
   if(mySymbol=="") mySymbol=Symbol();
   double stoplimit=MarketInfo(mySymbol, MODE_STOPLEVEL)*MarketInfo(mySymbol,MODE_POINT);
   int magic = -1; //покупаем по цене Ask
   int LE=135;
   mn=(int)NormalizeDouble(mn,(int)MarketInfo(mySymbol,MODE_DIGITS));
   if(lt<MarketInfo(mySymbol, MODE_MINLOT)) return(0);
   if(lt>MarketInfo(mySymbol, MODE_MAXLOT)) lt=MarketInfo(mySymbol, MODE_MAXLOT);
   if(lt>AccountFreeMargin()*0.90/MarketInfo(mySymbol,MODE_MARGINREQUIRED)) lt=AccountFreeMargin()*0.90/MarketInfo(mySymbol,MODE_MARGINREQUIRED);
   lt = NormalizeDouble(lt, (int)MathAbs(MathLog(MarketInfo(mySymbol, MODE_LOTSTEP))/MathLog(10.0)));
   if(sl>0) {
      sl=NormalizeDouble(sl,(int)MarketInfo(mySymbol,MODE_DIGITS));
      if(MarketInfo(mySymbol,MODE_BID)-sl<stoplimit) sl=MarketInfo(mySymbol,MODE_BID)-stoplimit;
   }
   if(tp>0) {
      tp=NormalizeDouble(tp,(int)MarketInfo(mySymbol,MODE_DIGITS));
      if(tp-MarketInfo(mySymbol,MODE_ASK)<stoplimit) tp=MarketInfo(mySymbol,MODE_ASK)+stoplimit;
   }
   while(LE>134 && LE<139) {
      magic = OrderSend(mySymbol, OP_BUY, lt, MarketInfo(mySymbol,MODE_ASK), SP, sl, tp, WindowExpertName(), mn, 0, Blue); 
      LE = GetLastError();
      Sleep(2000);
      RefreshRates();
   }
   if (magic > 0) Sleep(10000);
   return(magic);
}//BUY()
//+------------------------------------------------------------------+
int SELL(string mySymbol="", double lt=0, double sl=0, double tp=0, double mn=0) {
   if(mySymbol=="") mySymbol=Symbol();
   double stoplimit=MarketInfo(mySymbol, MODE_STOPLEVEL)*MarketInfo(mySymbol,MODE_POINT);
   int magic = -1; //продаём по цене Bid
   int LE=135;
   mn=NormalizeDouble(mn,(int)MarketInfo(mySymbol,MODE_DIGITS));
   if(lt<MarketInfo(mySymbol, MODE_MINLOT)) return(0);
   if(lt>MarketInfo(mySymbol, MODE_MAXLOT)) lt=MarketInfo(mySymbol, MODE_MAXLOT);
   if(lt>AccountFreeMargin()*0.90/MarketInfo(mySymbol,MODE_MARGINREQUIRED)) lt=AccountFreeMargin()*0.90/MarketInfo(mySymbol,MODE_MARGINREQUIRED);
   lt = NormalizeDouble(lt, (int)MathAbs(MathLog(MarketInfo(mySymbol, MODE_LOTSTEP))/MathLog(10.0)));
   if(sl>0) {
      sl=NormalizeDouble(sl,(int)MarketInfo(mySymbol,MODE_DIGITS));
      if(sl-MarketInfo(mySymbol,MODE_ASK)<stoplimit) sl=MarketInfo(mySymbol,MODE_ASK)+stoplimit;
   }
   if(tp>0) {
      tp=NormalizeDouble(tp,(int)MarketInfo(mySymbol,MODE_DIGITS));
      if(MarketInfo(mySymbol,MODE_BID)-tp<stoplimit) tp=MarketInfo(mySymbol,MODE_BID)-stoplimit;
   }
   while(LE>134 && LE<139) {
      magic = OrderSend(mySymbol, OP_SELL, lt, MarketInfo(mySymbol,MODE_BID), SP, sl, tp, WindowExpertName(), (int)mn, 0, Red); 
      LE = GetLastError();
      Sleep(2000);
      RefreshRates();
   }
   if (magic > 0) Sleep(10000);
   return(magic);
}//SELL()
//+------------------------------------------------------------------+
Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций