오류, 버그, 질문 - 페이지 1488

 
Aleksandr Novikov :

그래서 대답은 편리한 질문이 아니라면 언제나처럼 역사에 남을 것입니까? 아니면 역사에 남을 것입니까?

아니면 관리자가 상단 메뉴에서 링크 순서를 변경하는 방법만 알고 있습니까?

네 번째 포럼은 오랫동안 지원되지 않았지만 참고 자료로 남아 있습니다. 적어도 행정부는 그렇게 말했다.
 
Alexey Kozitsyn :

제가 관리직이 아닌데도 질문에 답을 안해주시네요...

예, 내 계정으로 포럼에 입장했는데 무엇을 제공합니까? 단순히 호기심을 충족시키기 위해?


Artyom Trishkin :
네 번째 포럼은 오랫동안 지원되지 않았지만 참고 자료로 남아 있습니다. 적어도 행정부는 그렇게 말했다.

그래서 그들은 닫고 모든 사람을 mql5 포럼으로 리디렉션합니다. 왜 그를 거세합니까?

결국 사람들은 그것을 계속 사용하고 의사 소통하기 때문에 필요하고 기능은 남겨 두어야합니다!

그리고 항상 그랬듯이 그들은 사용자와 그들의 의견에 대해 신경 쓰지 않고 일방적으로 모든 것을 결정했습니다.

 
Aleksandr Novikov :

예, 내 계정으로 포럼에 입장했는데 무엇을 제공합니까? 단순히 호기심을 충족시키기 위해?

계정에 로그인하지 않고 별표를 보고 싶은지 어떻게 알 수 있습니까? 그러면 거기에서 보지 않을 것이 논리적입니다.
 
Aleksandr Novikov :

예, 내 계정으로 포럼에 입장했는데 무엇을 제공합니까? 그냥 호기심을 충족?


그래서 그들은 닫고 모든 사람을 mql5 포럼으로 리디렉션합니다. 왜 그를 거세합니까?

결국 사람들은 그것을 계속 사용하고 의사 소통하기 때문에 필요하고 기능은 남겨 두어야합니다!

그리고 항상 그랬듯이 그들은 사용자와 그들의 의견에 대해 신경 쓰지 않고 일방적으로 모든 것을 결정했습니다.

그게 다야, 약 1년 전에 네 번째 포럼 지원을 중단하기로 결정했을 때 질문을 받지 않았습니다. 바로 거기에 유용한 정보가 많기 때문에 두드리는 것이 아니라 사용하십시오. 그러나 배경 정보로.
 
Andrey Voytenko :

초기화용. 이렇게 쓰는게 가능한가요?

...

일반적으로 ={0}을 통한 내가 가장 좋아하는 초기화는 문자열에서 작동하지 않습니다. 그런 슬픔입니다.

게시해 주셔서 감사합니다. 버그가 수정되었습니다. 수정 사항은 다음 빌드에 포함됩니다.
 

MT4 질문입니다.

안녕하세요. 로트 크기를 결정하는 문제에 직면했습니다. 다음은 코드입니다.

특히 알파리. 특히 USD-JPY. 차트에 주문에 대한 데이터를 표시해야하지만 ..... 달러 엔의 경우 올바른 값이 표시되지 않습니다!!! 어레이의 데이터에 관심이 있습니다!

추가로 할 수 있는 것은???

 #property version "1.00"
#property strict
#property indicator_chart_window
double Mas_Ord_Old[ 1000 ][ 19 ];
double Mas_Ord_New[ 1000 ][ 19 ];
double Mas_Tip[ 6 ];
string Mas_tip[ 6 ];
extern int FontSize= 12 ;
extern color TextColor= clrIvory ;
extern color TextColor1= clrGray ;
extern color TextColor2= clrRed ;
extern color TextColor3= clrYellow ;
extern int X= 20 ;
extern int Y= 15 ;
int n;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
Terminal();
//---
Comment ( " пример неправильного лота " );
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
DeleteLabel();
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
Terminal();
int shift= 15 ;
DeleteLabel();
n= 13 ;
double proffit= 0 ;
double pro= 0 ;
double stloss= 0 ;
double los= 0 ;
int a9=( int ) NormalizeDouble ( Mas_Ord_Old [ 0 ][ 10 ], 0 ); //MathIsValidNumber
//for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
for ( int cnt=a9- 1 ;cnt>= 0 ;cnt--)
{
//.. и наша вал.пара
double a0= Mas_Ord_Old [cnt][ 0 ]; // OrderTicket(); I // Тикет ордера
double a1= Mas_Ord_Old [cnt][ 1 ]; // OrderOpenPrice(); D // Курс открытия орд
double a2= Mas_Ord_Old [cnt][ 2 ]; // OrderLots(); D // Количество лотов !!!!!!!!!!!!!!!!
double a3= Mas_Ord_Old [cnt][ 3 ]; // OrderTakeProfit(); D // Курс ТР
double a4= Mas_Ord_Old [cnt][ 4 ]; // OrderSwap(); D // Своп
double a5= Mas_Ord_Old [cnt][ 5 ]; // OrderStopLoss(); D // Курс SL
double a6= Mas_Ord_Old [cnt][ 6 ]; // OrderType(); I // Тип ордера
double a7= Mas_Ord_Old [cnt][ 7 ]; // OrderMagicNumber(); I // Магическое число
double a8= Mas_Ord_Old [cnt][ 8 ]; //
double Aa2= ( double )(( NormalizeDouble ( a2, 2 ))* 100 );
double Aaa2=( double )(( NormalizeDouble ( Aa2, 2 ))/ 100 );
// Print("2- OrderLots= ",Aa2," OrderType= ",Aaa2," OrderMagicNumber= ",a7," Ciomment= ",a8," кол-во = ",a0);
string text= StringConcatenate ( " Тикет= Опен= " ,a1, " ЛОТ!!!= " ,a2, " ЛОТ 2= " ,Aa2, " 4= " ,a4, " 5= " ,a5, " 6= " ,a6, " 7= " ,a7, " 8= " ,a8);
CreateLabel( StringConcatenate ( "Label_" ,n),text,X,Y+n*shift, clrYellow );
}

//--- return value of prev_calculated for next call
return (rates_total);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
// double Mas_Ord_Old[1000][9];
// double Mas_Ord_New[1000][9];
// double Mas_Tip[6];
// ~~~~~~~~~~~~~~~~~~ Работа с ордерами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool Terminal()
{
int Qnt= 0 ; // Счётчик количества ордеров

//--------------------------------------------------------------- 3 --
ArrayCopy (Mas_Ord_Old, Mas_Ord_New, 0 , 0 , WHOLE_ARRAY ); // Сохраняем предыдущую историю
Qnt= 0 ; // Обнуление счётчика ордеров
ArrayInitialize (Mas_Ord_New, 0 ); // Обнуление массива
// ArrayInitialize(Mas_Tip, 0); // Обнуление массива
//--------------------------------------------------------------- 4 --
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) // По рыночн. и отлож. ордерам
{ //.. и наша вал.пара && (OrderSymbol()==Symbol())
if (( OrderSelect (i,SELECT_BY_POS)== true ) )
{
//------------------------------------------------------ 5 --
Mas_Ord_New[Qnt][ 0 ]=OrderTicket(); // Курс открытия орд
Mas_Ord_New[Qnt][ 1 ]=OrderOpenPrice(); // Курс открытия орд
Mas_Ord_New[Qnt][ 2 ]= OrderLots(); // Курс SL
Mas_Ord_New[Qnt][ 3 ]=OrderTakeProfit(); // Курс ТР
Mas_Ord_New[Qnt][ 4 ]=OrderSwap(); // Номер ордера
Mas_Ord_New[Qnt][ 5 ]=OrderStopLoss(); // Количество лотов
// Mas_Tip[OrderType()]++; // Кол. ордеров типа
Mas_Ord_New[Qnt][ 6 ]=OrderType(); // Тип ордера
Mas_Ord_New[Qnt][ 7 ]=OrderMagicNumber(); // Магическое число
if (OrderComment()== "" )
Mas_Ord_New[Qnt][ 8 ]= 0 ; // Если нет коммент
else
Mas_Ord_New[Qnt][ 8 ]= 1 ; // Если есть коммент
Qnt++; // Колич. ордеров
//------------------------------------------------------ 6 --
}
}
Mas_Ord_New[ 0 ][ 10 ]=Qnt; // Колич. ордеров
//--------------------------------------------------------------- 7 --
return 0 ;
}
// ~~~~~~~~~~~~~~~~~~ Работа с ордерами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//+--------------------------------------------------------------------+
void CreateLabel( string name, string text, int x, int y, color c) //
{ //
ObjectCreate (name, OBJ_LABEL , 0 , 0 , 0 ); //
ObjectSetText(name,text,FontSize, "Times New Roman" ,TextColor); //
ObjectSet(name, OBJPROP_CORNER , 0
); //
ObjectSet(name, OBJPROP_XDISTANCE ,x); //
ObjectSet(name, OBJPROP_YDISTANCE ,y); //
ObjectSet(name, OBJPROP_COLOR ,c); //
n++; //
} //
void DeleteLabel() //
{ //
for ( int i= ObjectsTotal ();i>= 0 ;i--) //
{ //
if ( StringSubstr ( ObjectName (i), 0 , 6 )== "Label_" ) //
ObjectDelete ( ObjectName (i)); //
} //
} //
//+--------------------------------------------------------------------+
 
Sergey Vedmanov :

MT4 질문입니다.

안녕하세요. 로트 크기를 결정하는 문제에 직면했습니다. 다음은 코드입니다.

특히 알파리. 특히 USD-JPY. 차트에 주문에 대한 데이터를 표시해야하지만 ..... 달러 엔의 경우 올바른 값이 표시되지 않습니다!!! 어레이의 데이터에 관심이 있습니다!

추가로 무엇을 할 수 있나요???

그러나 Kovalev의 교과서에서는 여전히 작동합니다. 올바르게 복사하고 새로운 요구 사항에 맞게 수정하는 것을 방해하는 것은 무엇입니까?
 
Artyom Trishkin :
그러나 Kovalev의 교과서에서는 여전히 작동합니다. 올바르게 복사하고 새로운 요구 사항에 맞게 수정하는 것을 방해하는 것은 무엇입니까?

나는 당신을 놀라게 할 것이지만 다른 쇼핑 센터에서도 작동합니다. 이 글을 처음부터 잘 읽어보시면...

특히 알파리. 특히 USD-JPY.

추가로 할 수 있는 일은???

 
Sergey Vedmanov :

나는 당신을 놀라게 할 것이지만 다른 쇼핑 센터에서도 작동합니다. 이 글을 처음부터 잘 읽어보시면...

특히 알파리. 특히 USD-JPY.

추가로 할 수 있는 일은???

... 다른 쇼핑 센터에서? :)

나는 당신의 세부 사항을 보았다. 나는 그것이 모두 중복되는 것 같아서 그것을 선택하지 않았습니다. 이 모든 Kovalev 터미널 ...

그러나 귀하의 코드에서 저장된 데이터와 주석의 이 데이터에 대한 설명 사이의 불일치가 이미 혼동되고 있음을 알 수 있습니다.

더 나아가:

 string text= StringConcatenate ( " Тикет= Опен= " ,a1, " ЛОТ!!!= " ,a2, " ЛОТ 2= " ,Aa2, " 4= " ,a4, " 5= " ,a5, " 6= " ,a6, " 7= " ,a7, " 8= " ,a8);

로트는 변수 2에서 인쇄되지만 무엇을 저장합니까? 이것:

Mas_Ord_New[Qnt][ 2 ]= OrderLots(); // Курс SL

아니면 DoubleToString()을 통해 표시해야 합니까?

예, 로트가 잘못 정규화되었습니다. 로트를 정규화하는 기능이 필요합니다. 검색하지 않겠습니다. Kim을 찾을 수 있습니다.

 
Artyom Trishkin :

... 다른 쇼핑 센터에서? :)

나는 당신의 세부 사항을 보았다. 나는 그것이 모두 중복되는 것 같아서 그것을 선택하지 않았습니다. 이 모든 Kovalev 터미널 ...

그러나 귀하의 코드에서 저장된 데이터와 주석의 이 데이터에 대한 설명 사이의 불일치가 이미 혼동되고 있음을 알 수 있습니다.

더 나아가:

로트는 변수 2에서 인쇄되지만 무엇을 저장합니까? 이것:

아니면 DoubleToString()을 통해 표시해야 합니까?

예, 로트가 잘못 정규화되었습니다. 로트를 정규화하는 기능이 필요합니다. 검색하지 않겠습니다. Kim을 찾을 수 있습니다.

설립하다. 고맙습니다. 그러나 이것은 문제를 해결하지 못하기 때문입니다.

다른 DC에서는 이 코드와 함께 올바르게 작동합니다.

Kim의 기능과 제대로 작동하지 않습니다.

DoubleToString()을 통해 올바르게 쓰지만 잘못 계산합니다. DoubleToString()을 통해 계산하지 않습니다. 앞뒤로 번역해도 끈팬티는 정상적으로 쓰는데 끈팬티에서 더블이 또 곡선이 나오네요.

문제는 Alpari DC에 있으며 이 문제를 해결하려면 목발이 필요합니다.

다른 USD-SEK 쌍에서는 시작 가격이 잘못 표시됩니다.

 #property version    "1.00"
#property strict
#property indicator_chart_window
   double Mas_Ord_Old[ 1000 ][ 19 ];
   double Mas_Ord_New[ 1000 ][ 19 ];
   double Mas_Tip[ 6 ];
   string Mas_tip[ 6 ];
extern int FontSize= 12 ;
extern color TextColor= clrIvory ;
extern color TextColor1= clrGray ;
extern color TextColor2= clrRed ;
extern color TextColor3= clrYellow ;
extern int X= 20 ;
extern int Y= 15 ;
int n;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   Terminal();
//---
Comment ( " пример неправильного лота " );
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
 DeleteLabel();
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
Terminal();
int shift= 15 ;
DeleteLabel();
n= 13 ;
double proffit= 0 ;
double pro= 0 ;
double stloss= 0 ;
double los= 0 ;
       int a9=( int ) NormalizeDouble ( Mas_Ord_Old [ 0 ][ 10 ], 0 ); //MathIsValidNumber
//for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
for ( int cnt=a9- 1 ;cnt>= 0 ;cnt--)
 {
                                 //.. и наша вал.пара
     double a0= Mas_Ord_Old [cnt][ 0 ];   //  OrderTicket();      I // Тикет ордера
     double a1= Mas_Ord_Old [cnt][ 1 ];   //  OrderOpenPrice();   D // Курс открытия орд
     string a2= DoubleToString (Mas_Ord_Old [cnt][ 2 ], 2 );   //  OrderLots();        D // Количество лотов !!!!!!!!!!!!!!!!
     double a3= Mas_Ord_Old [cnt][ 3 ];   //  OrderTakeProfit();  D // Курс ТР
     double a4= Mas_Ord_Old [cnt][ 4 ];   //  OrderSwap();        D // Своп
     double a5= Mas_Ord_Old [cnt][ 5 ];   //  OrderStopLoss();    D // Курс SL
     double a6= Mas_Ord_Old [cnt][ 6 ];   //  OrderType();        I // Тип ордера
     double a7= Mas_Ord_Old [cnt][ 7 ];   //  OrderMagicNumber(); I // Магическое число 
     double a8= Mas_Ord_Old [cnt][ 8 ];   //  
     double Aa2= ( double )( StringToDouble (a2));
     double Aaa2=( double )(( NormalizeDouble ( Aa2, 2 ))/ 100 ); 
   //   Print("2-  OrderLots= ",Aa2," OrderType= ",Aaa2," OrderMagicNumber= ",a7," Ciomment= ",a8," кол-во = ",a0);
     string text= StringConcatenate ( " Опен= " ,a1, " ЛОТ string= " ,a2, " ЛОТ double= " ,Aa2 );
    CreateLabel( StringConcatenate ( "Label_" ,n),text,X,Y+n*shift, clrYellow );
  }
  
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//  double Mas_Ord_Old[1000][9];
//  double Mas_Ord_New[1000][9];
//  double Mas_Tip[6];
// ~~~~~~~~~~~~~~~~~~ Работа с ордерами  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   bool Terminal()
  {
   int Qnt= 0 ;                           // Счётчик количества ордеров
 
//--------------------------------------------------------------- 3 --
   ArrayCopy (Mas_Ord_Old, Mas_Ord_New, 0 , 0 , WHOLE_ARRAY ); // Сохраняем предыдущую историю
   Qnt= 0 ;                               // Обнуление счётчика ордеров
   ArrayInitialize (Mas_Ord_New, 0 );     // Обнуление массива
 //  ArrayInitialize(Mas_Tip,    0);     // Обнуление массива
//--------------------------------------------------------------- 4 --
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) // По рыночн. и отлож. ордерам
     {                                 //.. и наша вал.пара && (OrderSymbol()==Symbol())
       if (( OrderSelect (i,SELECT_BY_POS)== true ) )              
        {
         //------------------------------------------------------ 5 --
         Mas_Ord_New[Qnt][ 0 ]=OrderTicket();       // Курс открытия орд
         Mas_Ord_New[Qnt][ 1 ]=OrderOpenPrice();     // Курс открытия орд
         Mas_Ord_New[Qnt][ 2 ]=NormalizeLot( OrderLots(), 0 , Symbol ());     // Курс SL
         Mas_Ord_New[Qnt][ 3 ]=OrderTakeProfit();   // Курс ТР
         Mas_Ord_New[Qnt][ 4 ]=OrderSwap();         // Номер ордера
         Mas_Ord_New[Qnt][ 5 ]=OrderStopLoss();         // Количество лотов
       //  Mas_Tip[OrderType()]++;                // Кол. ордеров типа
         Mas_Ord_New[Qnt][ 6 ]=OrderType();         // Тип ордера
         Mas_Ord_New[Qnt][ 7 ]=OrderMagicNumber();   // Магическое число 
         if (OrderComment()== "" )
            Mas_Ord_New[Qnt][ 8 ]= 0 ;                 // Если нет коммент
         else
            Mas_Ord_New[Qnt][ 8 ]= 1 ;                 // Если есть коммент
          Qnt++;                                   // Колич. ордеров
         //------------------------------------------------------ 6 --
        }
     }
   Mas_Ord_New[ 0 ][ 10 ]=Qnt;                         // Колич. ордеров
//--------------------------------------------------------------- 7 --
   return 0 ;
  }
// ~~~~~~~~~~~~~~~~~~ Работа с ордерами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//+----------------------------------------------------------------------------+
double NormalizeLot( double lo, bool ro=False, string sy= "" ) {
   double l, k;
   if (sy== "" || sy== "0" ) sy= Symbol ();
   double ls=MarketInfo(sy, MODE_LOTSTEP);
   double ml=MarketInfo(sy, MODE_MINLOT);
   double mx=MarketInfo(sy, MODE_MAXLOT);

   if (ml== 0 ) ml= 0.1 ;
   if (mx== 0 ) mx= 100 ;

   if (ls> 0 ) k= 1 /ls; else k= 1 /ml;
   if (ro) l= MathCeil (lo*k)/k; else l= MathFloor (lo*k)/k;

   if (l<ml) l=ml;
   if (l>mx) l=mx;

   return (l);
//+----------------------------------------------------------------------------+
}
//+--------------------------------------------------------------------+
void CreateLabel( string name, string text, int x, int y, color c)               // 
   {                                                                 //
   ObjectCreate (name, OBJ_LABEL , 0 , 0 , 0 );                               //
   ObjectSetText(name,text,FontSize, "Times New Roman" ,TextColor);     //
   ObjectSet(name, OBJPROP_CORNER , 0
   );                                 //
   ObjectSet(name, OBJPROP_XDISTANCE ,x);                               //
   ObjectSet(name, OBJPROP_YDISTANCE ,y);                               //
   ObjectSet(name, OBJPROP_COLOR ,c);                               //
   n++;                                                               //
   }                                                                 //
void DeleteLabel()                                                   //
   {                                                                 //
   for ( int i= ObjectsTotal ();i>= 0 ;i--)                                 //
      {                                                               //
       if ( StringSubstr ( ObjectName (i), 0 , 6 )== "Label_" )                   //
       ObjectDelete ( ObjectName (i));                                   //
      }                                                               //
   }                                                                 //
//+--------------------------------------------------------------------+