在MQL5中一起学习和写作 - 页 45

 
Dimka-novitsek:
这台电脑非常慢...

不,这并不是一个comp:)

在'Output yu.mq5'(4873,19)中,Output yu(GBPUSD,H1)数组超出了范围--字迹不清楚...

你已经访问了一个数组元素,而数组的大小小于你所访问的元素的索引号。

这就像你有数组arr[10],想得到一个项arr[11]。 但只有10个元素。

这就是你被告知的情况。

你甚至给出了5000行中的4873行错误的行号 :)

 
谢谢你!!!。
 
我试图为所有的数组(有11个)提供一个适当的条件。但请告诉我,这里怎么会出现同样的错误?И
double      ATR[];                // массив для индикатора iATR
//---- handles for indicators
int         ATR_handle;           // указатель на индикатор iATR


..................................................
..................................................

///////////////////////////////////////////////////////////////////////////////////////////////  
double iStdDevf(        string symbol, int timeframe, int ma_period, int ma_shift, ENUM_MA_METHOD ma_method,  ENUM_APPLIED_PRICE applied_price, int shift){
     SymbolSelect(
  symbol,       // имя символа
  true      // включить или выключить
   );
 StdDev_handle= iStdDev(
               symbol,            // имя символа
       periodd(timeframe),            // период
                   ma_period,         // период усреднения
                 ma_shift,          // смещение индикатора по горизонтали
         ma_method,         // тип сглаживания
    applied_price      // тип цены или handle
   );   
  
   if(StdDev_handle==INVALID_HANDLE)     
     {
     return (0.0);}                     //Если массив не был создан, то 0          
      
    CopyBuffer(StdDev_handle,0,0,100,ATR);
    if(shift>99)return(0);
    ArraySetAsSeries(ATR,true);         // Установим порядок расположения массива от 0 к 100
    return( StdDev[shift]); }           //Вывод ризультата
///////////////////////////////////////////////////////////////////////////////////////////////  

该函数要求一个参数--已知是一个整数,百分之百的非负数,并在函数内部检查它不超过99。[shift--它是同一个数字--它指的是数组 StdDev数字移位的一个元素。那么,这与数字无关了?将其声明为double ATR[100]; 是否正确?п.p. 错误是行号,字符正好是shift

2012.09.29 20:56:26 Output yu (GBPUSD,H1) array out of range in 'Output yu.mq5' (4886,19)

它不可能访问错误的数组元素,对吗?

 
Dimka-novitsek:
我试图为所有的数组(有11个)提供一个适当的条件。但请告诉我,这里怎么会出现同样的错误?И

该函数要求一个参数--已知是一个整数,百分之百的非负数,并在函数内部检查它不超过99。[shift--它是同一个数字--它指的是数组 StdDev数字移位的一个元素。那么,这与数字无关了?将其声明为double ATR[100]; 是否正确?п.p. 错误是行号,字符正好是shift

2012.09.29 20:56:26 Output yu (GBPUSD,H1) array out of range in 'Output yu.mq5' (4886,19)

它不可能访问错误的数组元素,对吗?


StdDev
它是什么? 它在哪里宣布? 它的大小是什么?
 
谢谢大家,真的!昨天是一场噩梦,现在我又整理了一下,比较清楚了。暂时就这些了。
 
你知道,一切似乎都在正常工作,它画出了一切,甚至是我以前没有见过的东西!"。关于这个问题--请告诉我,程序是否会因为新的蜱虫的到来而提前终止工作?
 
Dimka-novitsek: 而随着新的蜱虫的到来,该计划是否会提前终止?
见《参考手册》,搜索词:NewTick
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Изучаем и пишем вместе на MQL5

Yedelkin , 2011.04.30 08:47

Вопрос

ENUM_DEAL_ENTRY

 

Идентификатор

Описание

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

Выход из рынка

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_STATE

Признак статусной записи

Что такое " статусная запись", и когда может потребоваться (необходимо использовать) признак этой записи?
幽兰:
状态输入是指资金进入账户,例如在任何账户中,第一行是余额,这是状态输入。

这似乎并不正确。


void OnStart()
  {
//---
   if(HistorySelect(0,TimeCurrent()))
     {
      int total=HistoryDealsTotal();
      for(int i=0;i<total;i++)
        {
         ulong ticket=HistoryDealGetTicket(i);
         ENUM_DEAL_ENTRY deal_entry=(ENUM_DEAL_ENTRY) HistoryDealGetInteger(ticket,DEAL_ENTRY);
         printf("Deal ticket#%u entry=%s",ticket,EnumToString(deal_entry));
        }
     }
  }

返回。

2014.08.27 19:15:42.163 Deal_Entry_State (AUDUSD,D1) Deal ticket#3879156 entry=DEAL_ENTRY_IN

谁知道什么是 deal_entry_state ?

 
angevoyageur:

这似乎不是真的。

从逻辑上讲,如果平衡的方向是DEAL_ENTRY_IN,那么为什么不在 "方向"/方向栏中?

例如买入,在这种情况下,它的方向也是DEAL_ENTRY_IN

 
A100:

从逻辑上讲,如果平衡的方向是DEAL_ENTRY_IN,那么为什么不在 "方向"/方向栏中?

因为它被指定为例如购买,在这种情况下,它也有DEAL_ENTRY_IN 方向。

   if(HistorySelect(0,TimeCurrent()))
     {
      int total=HistoryDealsTotal();
      for(int i=0;i<total;i++)
        {
         ulong ticket=HistoryDealGetTicket(i);
         ENUM_DEAL_ENTRY deal_entry=(ENUM_DEAL_ENTRY) HistoryDealGetInteger(ticket,DEAL_ENTRY);
         ENUM_DEAL_TYPE  deal_type=(ENUM_DEAL_TYPE) HistoryDealGetInteger(ticket,DEAL_TYPE);
         printf("Deal ticket#%u type=%s entry=%s",ticket,EnumToString(deal_type),EnumToString(deal_entry));
        }
     }


2014.08.28 13:25:44.007 Deal_Entry_State (AUDUSD,H8) Deal ticket#3892717 type=DEAL_TYPE_BUY entry=DEAL_ENTRY_OUT

2014.08.28 13:25:44.007 Deal_Entry_State (AUDUSD,H8) Deal ticket#3892714 type=DEAL_TYPE_SELL entry=DEAL_ENTRY_IN

2014.08.28 13:25:44.007 Deal_Entry_State (AUDUSD,H8) Deal ticket#3879156type=DEAL_TYPE_BALANCE entry=DEAL_ENTRY_IN

问题是,什么是DEAL_ENTRY_STATE?问题 仍然是 什么DEAL_ENTRY_STATE