阵列超出范围,需要帮助 - 页 12

 
Алексей Тарабанов:

第四天...所有进步的人类...

而且他已经离开了范围。

我们在等着你!

 
Dark Kchlyzov:

我不太明白。

首先,我们记住数组的大小,然后预先检查索引,不超过数组的大小。

在寻找极值的时候,我也不知道会有多少个。我在变量中储存了我找到的数量。之后,我检查是否发现极值的数量没有出来。我在处理静态数组时,越位的情况下充满了空值或随机值。

我不喜欢动态数组,但你的情况是相当大的。

我理解你的任务是寻找相同的每日最小值。

我想这样解决。首先,我会把最小极值记入数组中(在图片中,你完全是这样做的,在条件中,你正在比较所有的每日低价)。然后我会在一定程度上准确地寻找相同的人。

 

我们邀请我们的专家。

1)从维塔利-穆齐琴科 所写的产品来看,他是我们岗位上最重要的专家(Guru)。

2)瓦列里-亚斯特雷姆斯基

3)阿列克谢-塔拉巴诺夫

4)Aleksey Stepanenko- 一个不只是说说而已的人,而是从头开始写了一个代码,但问题仍然存在。

5)还有其他所有的。

我们走吧:我已经测试了由Aleksei Stepanenko 编写的代码#属性版本 "2.00"。

见屏幕截图1

我们看到的是,Day1和DayMin 在一个平行的0.67366。

进一步说:如果这个工具没有历史记录,那就是正常的。

我们打开工具,画线;它不会在测试器中回滚。

并按历史记录手动进行。


在2019.10.16 15.00的历史中,我们发现日低点

我们抛出一条线,向后走。

然后我们意识到这里有问题,截图1中DayMin 的水平(值)应该是=67233。

我刚刚开始学习MQL4,我很难理解Aleksei Stepanenko的 代码(课中课,数组覆盖数组等)。

我有一个问题要问专家,你们的指标和所有的产品是如何工作的(我会感到羞愧)。

在帖子的第9页,在扩展表格中的地址的原因 https://www.mql5.com/ru/forum/357558/page9#comment_19689951

 
Dark Kchlyzov:

我们邀请我们的专家。

1)从维塔利-穆齐琴科 所写的产品来看,他是我们岗位上最重要的专家(Guru)。

2)瓦列里-亚斯特雷姆斯基

3)阿列克谢-塔拉巴诺夫

4)Aleksey Stepanenko- 一个不只是说说而已的人,而是从头开始写了一个代码,但问题仍然存在。

5)还有其他所有的。

在这里:我已经测试了由Aleksei Stepanenko#property版本 "2.00 "编写的代码。

见屏幕截图1

我们看到的是,Day1和DayMin 在一个平行的0.67366。

进一步说:如果这个仪器没有历史记录,那么它就是正常的。

我们看一下屏幕截图2

我们打开工具,投下线条;它在测试器中没有晃动。

并按历史记录手动进行。

我们看一下截图3

在2019.10.16 15.00的历史中,我们发现日低点

让我们抛出线,向后走

我们看一下屏幕截图4

然后我们明白这里有问题,截图1中DayMin 的水平(值)应该是=67233。

我刚刚开始学习MQL4对我来说很难理解Aleksei Stepanenko的 代码(在类中有一个类,数组是重写的东西,等等)。

我有一个问题要问专家,你们的指标和所有的产品是如何工作的(我会感到羞愧)。

在帖子的第9页,在扩大的表格中的上诉理由 https://www.mql5.com/ru/forum/357558/page9#comment_19689951

算法是按它说的做,而不是按你认为的做。我也会打印到一个文件中,看看算出了什么,往往不是我想的那样,而是我写的那样。

 
Valeriy Yastremskiy :

算法按照它说的做,而不是你想的。我还打印到一个文件,看看那里计算了什么,而且通常根本不是我计划的,而是我写的。

我不知道任何人如何编写代码。

但就个人而言,我以当前的风格为自己简单而清晰地写了所有东西,我无法获得随机值。

但很明显腿从哪里长出来。如果超出范围,它就是这样,而不是进一步吹口哨。

(算法做的是写的,而不是你想的)算法应该做你想的,而不是它想要的。否则就是沉淀物的流失。就个人而言,这个选项不适合我。

例子  全局变量  (虽然这对某些人来说似乎是一个古老的东西)

 //+------------------------------------------------------------------+
//|                                                     new_test.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.4" 
#property strict
//------------------------------------------------------------------+
int Order_MagicNumber; // для авто торговли 
int Magic = 0 ;         //для ручная торговля
//------------------------------------------------------------------+
extern color   Color               = Black;   // Color линия Bid
extern bool    Objects             = true ;     // Удалять объекты созданные Cоветником
extern int     In_Time             = 3 ;       // Время входа эксперта на рынок  (время терминала)
extern int     Out_Time            = 23 ;       // Время выхода эксперта с рынка  (время терминала)
extern int     Time_End_Friday     = 18 ;       // Время после которого не торгуем в пятницу (время терминала)
extern string r_t                 = "" ;       // + 
extern int     Step                = 10 ;       // Step trailing stop            ( Шаг трал стопа ) 
//--------------------------------------------------------------------------------------------------------
extern string R_T   = "Параметры" ;           // ===================== Ручная Торговля ====================
extern int     Take_Profit         = 5000 ;     // Take Profit   
extern int     Stop_Loss           = 1200 ;     // Stop Loss           
extern int     Stop_Loss_Profit    = 15 ;       // Stop loss without loss   ( Стоп-лосс без убытка )
extern int     Start_Profit        = 50 ;       // Start Trailing Stop          ( Старт трейлинг стоп )
extern string a_t                 = "" ;       // + 
//--------------------------------------------------------------------------------------------------------
extern string A_T  = "Параметры" ;             // ================ Автоматическая торговля =================
extern int     Take_Profit_A       = 2500 ;     // Take Profit   
extern int     Stop_Loss_A         = 1200 ;     // Stop Loss    
extern int     Stop_Loss_Profit_A  = 15 ;       // Stop loss without loss   ( Стоп-лосс без убытка )
extern int     Start_Profit_A      = 50 ;       // Start Trailing Stop          ( Старт трейлинг стоп )  

//------------------------------------------------------------------+
//--------------------------------------------------------------------------------------------------------
extern string A_S  = "Параметры" ;             // ======================= Scalping =========================
extern int     Take_Profit_S       = 10000 ;     // Take Profit   
extern int     Stop_Loss_S         = 1500 ;     // Stop Loss    
extern int     Stop_Loss_Profit_S  = 15 ;       // Stop loss without loss   ( Стоп-лосс без убытка )
extern int     Start_Profit_S      = 30 ;     // Start Trailing Stop          ( Старт трейлинг стоп )  

//------------------------------------------------------------------+
string symbol_EURUSD = "EURUSD" ;
string symbol_GBPUSD = "GBPUSD" ;
string symbol_AUDUSD = "AUDUSD" ;
string symbol_NZDUSD = "NZDUSD" ;
string symbol_USDCHF = "USDCHF" ;
string symbol_USDJPY = "USDJPY" ;
string symbol_USDCAD = "USDCAD" ;
string symbol_USDCNH = "USDCNH" ;
string symbol_SPX500 = "SPX500" ;
//-------------------------------------------------------------------+
double Rvi_Blue_H1;
double Rvi_Red_H1;
double Rvi_Blue_H4;
double Rvi_Red_H4;
double Rvi_Blue_D1;
double Rvi_Red_D1;
double Rvi_Blue_W1;
double Rvi_Red_W1;
//-------------------------------------------------------------------+
double TakeProfit     = NormalizeDouble (Take_Profit* _Point , _Digits );       // Тейк-профит         ручная торговля
double StopLoss       = NormalizeDouble (Stop_Loss* _Point , _Digits );         // Стоп-лосс           ручная торговля
double StopLossProfit = NormalizeDouble (Stop_Loss_Profit* _Point , _Digits ); // Стоп-лосс безубытка ручная торговля
double StartProfit    = NormalizeDouble (Start_Profit* _Point , _Digits );     // Стрт-профит         ручная торговля

//-------------------------------------------------------------------+

double TakeProfit_S     = NormalizeDouble (Take_Profit_S* _Point , _Digits );       // Тейк-профит         Scalping 
double StopLoss_S       = NormalizeDouble (Stop_Loss_S* _Point , _Digits );         // Стоп-лосс           Scalping  
double StopLossProfit_S = NormalizeDouble (Stop_Loss_Profit_S* _Point , _Digits ); // Стоп-лосс безубытка Scalping 
double StartProfit_S    = NormalizeDouble (Start_Profit_S* _Point , _Digits );     // Стрт-профит         Scalping 

//-------------------------------------------------------------------+ 

double TakeProfit_B   = NormalizeDouble (Take_Profit_A* _Point , _Digits );     // Тейк-профит Breakdown автоматической торговли 
double TakeProfit_C   = NormalizeDouble (Take_Profit_A* _Point , _Digits );     // Тейк-профит Center    автоматической торговли 
double TakeProfit_ATR = NormalizeDouble (Take_Profit_A* _Point , _Digits );     // Тейк-профит ATR       автоматической торговли
double TakeProfit_H1  = NormalizeDouble (Take_Profit_A* _Point , _Digits );     // Тейк-профит H1        автоматической торговли
double TakeProfit_H4  = NormalizeDouble (Take_Profit_A* _Point , _Digits );     // Тейк-профит H4        автоматической торговли
double TakeProfit_D1  = NormalizeDouble (Take_Profit_A* _Point , _Digits );     // Тейк-профит D1        автоматической торговли
double TakeProfit_W1  = NormalizeDouble (Take_Profit_A* _Point , _Digits );     // Тейк-профит W1        автоматической торговли
double TakeProfit_TB  = NormalizeDouble (Take_Profit_A* _Point , _Digits );     // Тейк-профит Trend_Bar автоматической торговли


double StopLoss_B   = NormalizeDouble (Stop_Loss_A* _Point , _Digits );   // Стоп-лосс Breakdown автоматической торговли
double StopLoss_C   = NormalizeDouble (Stop_Loss_A* _Point , _Digits );   // Стоп-лосс Cente     автоматической торговли
double StopLoss_ATR = NormalizeDouble (Stop_Loss_A* _Point , _Digits );   // Стоп-лосс ATR       автоматической торговли
double StopLoss_H1  = NormalizeDouble (Stop_Loss_A* _Point , _Digits );   // Стоп-лосс H1        автоматической торговли
double StopLoss_H4  = NormalizeDouble (Stop_Loss_A* _Point , _Digits );   // Стоп-лосс H4        автоматической торговли
double StopLoss_D1  = NormalizeDouble (Stop_Loss_A* _Point , _Digits );   // Стоп-лосс D1        автоматической торговли
double StopLoss_W1  = NormalizeDouble (Stop_Loss_A* _Point , _Digits );   // Стоп-лосс W1        автоматической торговли
double StopLoss_TB  = NormalizeDouble (Stop_Loss_A* _Point , _Digits );   // Стоп-лосс Trend_Bar автоматической торговли


double StopLossProfit_B   = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits );   // Стоп-лосс безубытка Breakdown автоматической торговли
double StopLossProfit_C   = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits );   // Стоп-лосс безубытка Center    автоматической торговли
double StopLossProfit_ATR = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits );   // Стоп-лосс безубытка ATR       автоматической торговли
double StopLossProfit_H1  = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits );   // Стоп-лосс безубытка H1        автоматической торговли
double StopLossProfit_H4  = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits );   // Стоп-лосс безубытка H4        автоматической торговли
double StopLossProfit_D1  = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits );   // Стоп-лосс безубытка D1        автоматической торговли
double StopLossProfit_W1  = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits );   // Стоп-лосс безубытка W1        автоматической торговли
double StopLossProfit_TB  = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits );   // Стоп-лосс безубытка Trend_Bar автоматической торговли


double StartProfit_B   = NormalizeDouble (Start_Profit_A* _Point , _Digits );         // Стрт-профит Breakdown автоматической торговли
double StartProfit_C   = NormalizeDouble (Start_Profit_A* _Point , _Digits );         // Стрт-профит Center    автоматической торговли
double StartProfit_ATR = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits );     // Стрт-профит ATR       автоматической торговли
double StartProfit_H1  = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits );     // Стрт-профит H1        автоматической торговли
double StartProfit_H4  = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits );     // Стрт-профит H4        автоматической торговли
double StartProfit_D1  = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits );     // Стрт-профит D1        автоматической торговли
double StartProfit_W1  = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits );     // Стрт-профит W1        автоматической торговли
double StartProfit_TB  = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits );     // Стрт-профит Trend_Bar автоматической торговли

double step           = NormalizeDouble (Step* _Point , _Digits );             // Шаг трал стопа      ручная торговля
//-------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                        Функция Level 
//+------------------------------------------------------------------+
double   Bar_data_D1  [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1
int      ACR_D1;             // Возвращает количество скопированных баров D1
double   Bar_data_W1  [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров W1
int      ACR_W1;             // Возвращает количество скопированных баров W1
double   Bar_data_MN1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров MN1
int      ACR_MN1;            // Возвращает количество скопированных баров MN1
double   High_D1_Level;      // Возвращает значение максимальной цены бара D1
double   Low_D1_Level;       // Возвращает значение минимальной цены бара  D1
double   High_W1_Level;      // Возвращает значение максимальной цены бара W1
double   Low_W1_Level ;      // Возвращает значение минимальной цены бара  W1
double   High_MN1_Level;     // Возвращает значение максимальной цены бара MN1
double   Low_MN1_Level;      // Возвращает значение минимальной цены бара  MN1
double   Max_D_Level;        // ближайшей максимальный D уровень
double   Min_D_Level ;       // ближайшей минимальный  D уровень
double   Max_W_Level ;       // ближайшей максимальный W уровень
double   Min_W_Level ;       // ближайшей минимальный  W уровень
double   Max_MN_Level ;      // ближайшей максимальный MN уровень
double   Min_MN_Level ;      // ближайшей минимальный  MN уровень
//+------------------------------------------------------------------+
double Lots;            // переменная для расчёта лота и вывода в кнопке
string lots;            // переменная для отоброжения имя кнопки Lots
string sell;            // переменная для отоброжения имя кнопки Sell
string bay;             // переменная для отоброжения имя кнопки Bay
string balance;         // переменная для отоброжения имя кнопки balance
int    avto_torgovlya;  // объекта «Кнопка» Авто_торговля
int    avto_tral_stop;  // объекта «Кнопка» Авто_трал_стоп
int    break_even;      // объекта «Кнопка» Безубыток
int    scalper;         // объекта «Кнопка» scalper  
//-------------------------------------------------------------------+
int       Time_Seconds;        // сохроняем секунду 
int       Time_Minute;         // сохроняем минуту 
int       Time_Hour;           // сохроняем час
int       ticks_to_close = 10; // количество тиков до снятия эксперта с терменала
int       ExtRVIPeriod   = 10;
datetime  Order_datetime_S;
datetime  Time_Day;

//-------------------------------------------------------------------+

 
string String_Order;      // описание сигнала Bay или Sell
int Signal_Order_1;       // если 1 то Bay - если -1 то сел (обнуляем 1 раз в день) 
double BuyTralStop_S,    SellTralStop_S;
int N1_Order_Bay_Time;   // записываем время последней сделки (обнуляем 1 раз в день) 
int N1_Order_Sell_Time;  // записываем время последней сделки (обнуляем 1 раз в день) 

int tframe[] = { 1 , 5 , 15 , 30 , 60 , 240 , 1440 , 10080 , 43200 };              
string tf[]  = { "M1" , "M5" , "M15" , "M30" , " H1" , " H4" , "D1" , "W1" , "MN1" }; 
int tfnumber = 9 ;    

int     ADX_Period = 14 ;                                          
int     ADX_Price  = PRICE_CLOSE ; 
double Step_Psar  = 0.02 ;
double Max_Psar   = 0.2 ;

color   UpColor   = clrBlue ;                                       
color   DownColor = clrRed ;                               // Trend_Bar
color   FlatColor = clrLime ;
color   TextColor = clrGreen ;
int     Corner    = 0 ;

double Psar;                                                     
double PADX,NADX;                                             
string TimeFrameStr;                                     
double IndVal[ 9 ];                  
//-------------------------------------------------------------------+

string lots;             // переменная для отображения имя кнопки Lots
string sell;             // переменная для отображения имя кнопки Sell
string bay;             // переменная для отображения имя кнопки Bay
string balance;         // переменная для отображения имя кнопки balance
int     avto_torgovlya;   // объекта «Кнопка» Авто_торговля
int     avto_tral_stop;   // объекта «Кнопка» Авто_трал_стоп
int     break_even;       // объекта «Кнопка» Без убыток
int     scalper;         // объекта «Кнопка» scalper  
//-------------------------------------------------------------------+
double     Lots;                 // переменная для расчёта лота
int        Time_Seconds;         // сохраняем секунду 
int        Time_Minute;         // сохраняем минуту 
int        Time_Hour;           // сохраняем час
int        Friday;               //переменная для торговли в пятницу если равно 0 торговля разрешена 1 торговля запрещена 
int        ticks_to_close = 10 ; // количество тиков до снятия эксперта с терминала
int        ExtRVIPeriod   = 10 ;
datetime   Order_datetime_S;

//-------------------------------------------------------------------+
string File_Name;
int file_handle;
int Signal[ 100 ]; // Signal [0] текущий день   Signal [10]  Shaping_Signal Bay       
                 // Signal [1] H1             Signal [11]  Shaping_Signal Sell
                 // Signal [2] H4             Signal [12]        
                 // Signal [3] D1             Signal [13]
                 // Signal [4] W1             Signal [14]
                 // Signal [5] Scalper        Signal [15]
                 // Signal [6] Breakdown      Signal [16]
                 // Signal [7] Center         Signal [17]
                 // Signal [8] ATR            Signal [18]
                 // Signal [9] Trend_Bar      Signal [19]
//-------------------------------------------------------------------+
int     ATR_Period = 5 ;
double beginner   = 0 ;
int     timeshift  = 0 , timeshifts = 0 ;
double H4, L4, H4t, L4t;   
double fullatr;
double ATR_Level_5, ATR_Level_6;
double rates_d1 [][ 6 ];
double ATR_Level [ 10 ]; //Сохраняем  в массиве Signal[100] значение линий 
                       //ATR_Level[0] line BAY
                       //ATR_Level[1] line SELL  
                       //ATR_Level[2] line Center
                       //ATR_Level[3] line High_d1 Предыдущий день
                       //ATR_Level[4] line Low_d1  Предыдущий день 
                       //ATR_Level[5] line D_max от line SELL
                       //ATR_Level[6] line D_min от line BAY                
//-------------------------------------------------------------------+
double BuyTralStop,     SellTralStop;
double BuyTralStopS,    SellTralStopS;
double BuyTralStopH1,   SellTralStopH1;
double BuyTralStopH4,   SellTralStopH4;
double BuyTralStopD1,   SellTralStopD1;
double BuyTralStopW1,   SellTralStopW1;
double BuyTralStop_C,   SellTralStop_C;
double BuyTralStop_B,   SellTralStop_B;
double BuyTralStop_ATR, SellTralStop_ATR;
double BuyTralStop_TB, SellTralStop_TB;
//-------------------------------------------------------------------+
int S_Order_Time[ 2 ]; // [0] Bay
                     // [1] Sell
string S_Order; // описание сигнала                     
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Алексей Тарабанов:

第四天...所有进步的人类...

而且他已经离开了范围。

我们在等着你!

 
Vitaly Muzichenko:

在我看来。

期待见到你!

 
Dark Kchlyzov:

查一查,不是吗?

附加的文件:
20201213.log  588 kb
 
Dark Kchlyzov:

但就我个人而言,我为自己写的一切都简单明了,都是这种风格,我不会得到随机的价值。

但很明显,腿是从哪里长出来的。而且,如果 超出范围是真的,它 不是用口哨进一步飞过去的。

(我不认为算法会做它所说的,而不是你认为 它应该做。我个人不喜欢这个选项。


没有任何逻辑。你没有随机值,但数组中存在一个 离群点。

而最主要的矛盾是,算法并不是按照自己的意愿来做,而是按照它的规定来做。与愿望没有任何关联。

 

你为什么不问问作者呢?

#属性版权 "Copyright 2020, MetaQuotes Software Corp."
#属性链接 "https://www.mql5.com"

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...