MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1555

 
MakarFX :

Herhangi bir hata vermiyor.

Sadece çalışma zamanı hataları değil, algoritmik hatalar da vardır!

Sebebini bulmak istiyorsanız bir koda ihtiyacınız var.

MakarFX :

Bu tür koordinatlarda düğme ters çevrilir, çünkü düğme uzunluğu X noktasından +/- hesaplanır

Neden böyle garip bir düğme var?

 
MakarFX :

Kâr veya zarara ulaşıldığında ExpertRemove () seçeneğini sunabilirim

Teşekkür ederim

Okudum ama eylemlerin mantığını tam olarak anlamadım

belirtilen olaya ulaşıldığında, uzman devre dışı bırakılır ve tablodan tamamen çıkarılır, değil mi?

 
Mihail Matkovskij :

Sadece çalışma zamanı hataları değil, algoritmik hatalar da vardır!

Sebebini bulmak istiyorsanız bir koda ihtiyacınız var.

Neden böyle garip bir düğme var?

Yanlışlıkla böyle bir hataya rastladığımı yazdım

işte kod ... ilgilenirseniz

 //+------------------------------------------------------------------+
//|                                                          BAG.mq4 |
//|                                           Copyright 2020, DrMak. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, DrMak."
#property link        " https://www.mql5.com "
#property version    "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   CreateButton( 0 , "Button_1" , 0 , 200 , 100 , 100 , 50 , CORNER_RIGHT_UPPER , " " , "START" , "Arial Black" , 10 ,
   clrWhite , clrGreen , BORDER_SUNKEN , false , false , false , false , false , 0 );
   CreateButton( 0 , "Button_2" , 0 , 200 , 100 ,- 100 ,- 50 , CORNER_RIGHT_UPPER , " " , "START" , "Arial Black" , 10 ,
   clrWhite , clrGreen , BORDER_SUNKEN , false , false , false , false , false , 0 );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   ObjectsDeleteAll ( 0 , "Button_" );
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---

//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Создает кнопку                                                   |
//+------------------------------------------------------------------+
bool CreateButton( const long               chart_ID= 0 ,               // ID графика
                   const string             name= "Button" ,             // имя кнопки
                   const int                sub_window= 0 ,             // номер подокна
                   const int                x= 0 ,                       // координата по оси X
                   const int                y= 0 ,                       // координата по оси Y
                   const int                width= 50 ,                 // ширина кнопки
                   const int                height= 18 ,                 // высота кнопки
                   const int                corner= 0 ,                 // угол графика для привязки
                   const string             tool= "TOOLTIP" ,           // TOOLTIP
                   const string             text= "Button" ,             // текст
                   const string             font= "Arial" ,             // шрифт
                   const int                font_size= 10 ,             // размер шрифта
                   const color              clr= clrBlack ,             // цвет текста
                   const color              back_clr= C'236,233,216' ,   // цвет фона
                   ENUM_BORDER_TYPE         border_type= BORDER_FLAT ,   // тип границы
                   const bool               state= false ,               // нажата/отжата
                   const bool               back= false ,               // на заднем плане
                   const bool               selection= false ,           // выделить для перемещений
                   const bool               selected= false ,           // выделить для перемещений
                   const bool               hidden= true ,               // скрыт в списке объектов
                   const long               z_order= 0 )                 // приоритет на нажатие мышью
  {
//--- сбросим значение ошибки
   ResetLastError ();
//--- создадим кнопку
   if (! ObjectCreate (chart_ID,name, OBJ_BUTTON ,sub_window, 0 , 0 ))
     {
       Print ( __FUNCTION__ , ": не удалось создать кнопку! Код ошибки = " , GetLastError ()); return ( false );
     }
   ObjectSetInteger (chart_ID,name, OBJPROP_XDISTANCE ,x);
   ObjectSetInteger (chart_ID,name, OBJPROP_YDISTANCE ,y);
   ObjectSetInteger (chart_ID,name, OBJPROP_XSIZE ,width);
   ObjectSetInteger (chart_ID,name, OBJPROP_YSIZE ,height);
   ObjectSetInteger (chart_ID,name, OBJPROP_CORNER ,corner);
   ObjectSetString (chart_ID,name, OBJPROP_TOOLTIP ,tool);
   ObjectSetString (chart_ID,name, OBJPROP_TEXT ,text);
   ObjectSetString (chart_ID,name, OBJPROP_FONT ,font);
   ObjectSetInteger (chart_ID,name, OBJPROP_FONTSIZE ,font_size);
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
   ObjectSetInteger (chart_ID,name, OBJPROP_BGCOLOR ,back_clr);
   ObjectSetInteger (chart_ID,name, OBJPROP_BORDER_TYPE ,border_type);
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
   ObjectSetInteger (chart_ID,name, OBJPROP_STATE ,state);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selected);
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
//--- успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+
 
законопослушный гражданин :

Teşekkür ederim

Okudum ama eylemlerin mantığını tam olarak anlamadım

belirtilen olaya ulaşıldığında, uzman devre dışı bırakılır ve tablodan tamamen çıkarılır, değil mi?

Evet
 
MakarFX :

Yanlışlıkla böyle bir hataya rastladığımı yazdım

işte kod ... ilgilenirseniz

Yani burada düğmelerin hiçbiri yanıt vermeyecektir. OnChartEvent işleyicisi boş...

 
Mihail Matkovskij :

Yani burada düğmelerin hiçbiri yanıt vermeyecektir. OnChartEvent işleyicisi boş...

ve deniyorsunuz) bir düğmeye basıldı ve ikincisi değil
 
MakarFX :
ve deniyorsunuz) bir düğmeye basıldı ve ikincisi değil

Ve bunu genel olarak kim yapıyor, olumsuz boyutlar belirliyor ve neden sormakta tereddüt ediyorum?...

 
MakarFX :
Evet

anladım. bana uymaz.

baykuş kapatıldıktan sonra partinin başlangıca sıfırlanması için global bir değişken oluşturmaya geri dönebilirsiniz.

yine de

sen yarat   küresel değişken

 datetime Start;

int OnInit ()
{
   Start= TimeCurrent ();
.....................
}
void OnTick ()
{
   if (!IsTradeAllowed()) 
   {
      DrawLABEL( "Торговля" , 0 , 0 , 0 ,Red, "Торговля запрещена" );
      Start= TimeCurrent ();
       return ;
   } 
.....................
}

ve daha sonra açık/kapalı sipariş yoksa "Başla"

Lots=Lot;
Sadece nasıl oluşturulacağını anlamıyorum
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные - Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
законопослушный гражданин :

anladım. bana uymaz.

baykuş kapatıldıktan sonra partinin başlangıca sıfırlanması için global bir değişken oluşturmaya geri dönebilirsiniz.

yine de

sen yarat   küresel değişken

ve daha sonra açık/kapalı sipariş yoksa "Başla"

Sadece nasıl oluşturulacağını anlamıyorum

sana bir düğme yapacağım


 
Mihail Matkovskij :

Ve bunu genel olarak kim yapıyor, olumsuz boyutlar belirliyor ve neden sormakta tereddüt ediyorum?...

Yanlışlıkla böyle bir hataya rastladım, ilginç oldu