Hatalar, hatalar, sorular - sayfa 1488

 
Aleksandr Novikov :

Öyleyse cevap, uygun bir soru olmasa da, her zaman olduğu gibi tarihe geçecek mi?

Yoksa yönetim sadece üst menüdeki bağlantıların sırasını nasıl değiştireceğini mi biliyor?

Dördüncü forum uzun süredir desteklenmiyor ancak referans materyal olarak bırakılıyor. En azından yönetim öyle dedi.
 
Alexey Kozitsyn :

Yönetimden olmama rağmen soruma da cevap vermediniz...

Evet, foruma hesabım altından girdim ve sana ne kazandıracak? Sadece merakı tatmin etmek mi?


Artyom Trishkin :
Dördüncü forum uzun süredir desteklenmiyor ancak referans materyal olarak bırakılıyor. En azından yönetimin aldığı karar buydu.

Böylece herkesi kapatacak ve mql5 forumuna yönlendireceklerdi. Neden onu hadım edelim?

Sonuçta, insanlar onu kullanmaya ve iletişim kurmaya devam ediyor, bu da ihtiyaç duyulduğu ve işlevselliğinin bırakılması gerektiği anlamına geliyor!

Ve her zaman olduğu gibi, kullanıcıları ve fikirlerini umursamadıkları ve her şeye tek taraflı karar verdikleri ortaya çıktı.

 
Aleksandr Novikov :

Evet, foruma hesabım altından girdim ve sana ne kazandıracak? Sadece merakı gidermek için mi?

Hesabınıza giriş yapmadan orada bir yıldız işareti görmek isteyip istemediğinizi nereden bileyim? O zaman orada görmemeniz mantıklı.
 
Aleksandr Novikov :

Evet, foruma hesabım altından girdim ve sana ne kazandıracak? Sadece merakı gidermek için mi?


Böylece herkesi kapatacak ve mql5 forumuna yönlendireceklerdi. Neden onu hadım edelim?

Sonuçta, insanlar onu kullanmaya ve iletişim kurmaya devam ediyor, bu da ihtiyaç duyulduğu ve işlevselliğinin bırakılması gerektiği anlamına geliyor!

Ve her zaman olduğu gibi, kullanıcıları ve fikirlerini umursamadıkları ve her şeye tek taraflı karar verdikleri ortaya çıktı.

İşte bu, yaklaşık bir yıl önce dördüncü forumu desteklemeyi bırakmaya karar verdiklerinde size sorulmadı. Tam olarak orada birçok yararlı bilgi olduğu için, onu patlatmadılar - kullanın. Ama arka plan bilgisi olarak.
 
Andrey Voytenko :

Başlatma için. Böyle yazmak mümkün mü?

...

Genel olarak, ={0} aracılığıyla favori başlatmam dizelerle çalışmaz. Bu öyle bir üzüntü ki.

Gönderdiğiniz için teşekkürler, hata düzeltildi. Düzeltme sonraki yapıya dahil edilecektir.
 

MT4 sorusu.

Güzel gün. Parti büyüklüğünü belirleme sorunuyla karşı karşıya kaldı. İşte kod.

Özellikle Alpari. Özellikle USD-JPY'de. Grafikteki siparişlerle ilgili verileri göstermelidir, ancak ..... dolar-yen için doğru değeri gösteremez!!! Dizideki verilerle ilgileniyor!

Ek olarak ne yapılabilir???

 #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 sorusu.

Güzel gün. Parti büyüklüğünü belirleme sorunuyla karşı karşıya kaldı. İşte kod.

Özellikle Alpari. Özellikle USD-JPY'de. Grafikteki siparişlerle ilgili verileri göstermelidir, ancak ..... dolar-yen için doğru değeri gösteremez!!! Dizideki verilerle ilgileniyor!

Ek olarak ne yapılabilir???

Ama yine de Kovalev'in ders kitabında çalışıyor. Ondan doğru şekilde kopyalamayı ve yeni gereksinimler için düzeltmeyi engelleyen nedir?
 
Artyom Trishkin :
Ama yine de Kovalev'in ders kitabında çalışıyor. Ondan doğru şekilde kopyalamayı ve yeni gereksinimler için düzeltmeyi engelleyen nedir?

Sizi şaşırtacağım ama diğer alışveriş merkezlerinde de işe yarıyor. Bu yazıyı baştan dikkatlice okursanız...

Özellikle Alpari. Özellikle USD-JPY'de.

Ek olarak ne yapılabilir???

 
Sergey Vedmanov :

Sizi şaşırtacağım ama diğer alışveriş merkezlerinde de işe yarıyor. Bu yazıyı baştan dikkatlice okursanız...

Özellikle Alpari. Özellikle USD-JPY'de.

Ek olarak ne yapılabilir???

... diğer Alışveriş Merkezlerinde mi? :)

Senin özelliklerini gördüm. Gereksiz olduğunu düşündüğüm için almadım. Bütün bu Kovalev terminalleri...

Ancak kodunuzda, saklanan veriler ile bu verilerin açıklaması arasında yorumlarda bir tutarsızlık görüyorum zaten kafa karıştırıcı.

Daha ileri:

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

lot, a2 değişkeninden yazdırılır, ancak içinde ne kaydediyoruz? Bu:

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

Ya da belki DoubleToString() aracılığıyla görüntülemeniz gerekiyor?

Evet ve parti yanlış şekilde normalleştirildi. Partiyi normalleştirmek için bir işleve ihtiyacınız var. aramayacağım. Kim'i arayabilirsin - sana uyacak.

 
Artyom Trishkin :

... diğer Alışveriş Merkezlerinde mi? :)

Senin özelliklerini gördüm. Gereksiz olduğunu düşündüğüm için almadım. Bütün bu Kovalev terminalleri...

Ancak kodunuzda, saklanan veriler ile bu verilerin açıklaması arasında yorumlarda bir tutarsızlık görüyorum zaten kafa karıştırıcı.

Daha ileri:

lot, a2 değişkeninden yazdırılır, ancak içinde ne kaydediyoruz? Bu:

Ya da belki DoubleToString() aracılığıyla görüntülemeniz gerekiyor?

Evet ve parti yanlış şekilde normalleştirildi. Partiyi normalleştirmek için bir işleve ihtiyacınız var. aramayacağım. Kim'i arayabilirsin - sana uyacak.

Bulundu. Teşekkür ederim. Ama bu sorunu çözmez çünkü.

Diğer DC'lerde bu kodla düzgün çalışır.

Kim'in işleviyle doğru çalışmıyor.

DoubleToString() aracılığıyla doğru yazar, ancak yanlış sayar. DoubleToString() ile saymayacağım. İleri geri çevirseniz bile tangaları normal yazıyor ama tangalardan gelen dubleler yine eğri çıkıyor.

Sorun Alpari DC'de ve bu sorunu aşmak için bir koltuk değneğine ihtiyacınız var.

Başka bir USD-SEK çiftinde açılış fiyatını yanlış gösteriyor.

 #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));                                   //
      }                                                               //
   }                                                                 //
//+--------------------------------------------------------------------+