invalid pointer access

 

Всем привет. Попробовал написать под mql5. На удивление легче чем в 4-ке.

Не могу понять где допустил ошибку. Если знаете подскажите.

Пытаюсь прикрутить стандартный треллинг к советнику

   CPositionInfo *pos;
   CAccountInfo *acc;
   CSymbolInfo *symb;
   CTrailingFixedPips *tral;
   CTrade *trade;

Где только не пробовал создавать 

CPositionInfo *pos;

в итоге пробую треллинг

pos.Select(_Symbol);

tral.StopLevel(Tral_StopLevel);
            tral.ProfitLevel(0);
            /// проверяем треллинг
            double sl=EMPTY_VALUE;
            double tp=EMPTY_VALUE;
                  if(pos.PositionType()==POSITION_TYPE_BUY){
                     //--- long trailing stop operatio
                     if(tral.CheckTrailingStopLong(pos,sl,tp)){
                        // меняем стоплосс
                        if(sl==EMPTY_VALUE) sl=pos.StopLoss();
                        if(tp==EMPTY_VALUE) tp=pos.TakeProfit();
                        if(trade.PositionModify(_Symbol,sl,tp)){
                           Print("Треллинг работает вверх");
                        } 
                     }
                  }
                  if(pos.PositionType()==POSITION_TYPE_SELL){
                     if(tral.CheckTrailingStopShort(pos,sl,tp)){
                        // меняем стоплосс
                        if(sl==EMPTY_VALUE) sl=pos.StopLoss();
                        if(tp==EMPTY_VALUE) tp=pos.TakeProfit();
                        if(trade.PositionModify(_Symbol,sl,tp)){
                           Print("Треллинг работает вниз");
                        } 
                     }else{
                        Print("Sell не меняем ",GetLastError());
                     }
                  }

Пробовал и так

if(tral.CheckTrailingStopLong(GetPointer(pos),sl,tp))

Всегда выдает invalid pointer access, то в самом классе трелинга то в моем коде. То выдает ошибку - нет типа такой позиции. Пока кроме решения написать 2 функции треллинга в голову не пришло((

 
best1:

Всегда выдает invalid pointer access, то в самом классе трелинга то в моем коде. То выдает ошибку - нет типа такой позиции. Пока кроме решения написать 2 функции треллинга в голову не пришло((

А объекты то пустые в начале кода:

 CPositionInfo *pos;
 CAccountInfo *acc;
 CSymbolInfo *symb;
 CTrailingFixedPips *tral;
 CTrade *trade;

Нужен оператор new.

И тогда так:

 CPositionInfo *pos = new CPositionInfo;
 CAccountInfo *acc = new CAccountInfo;
 CSymbolInfo *symb = new CSymbolInfo;
 CTrailingFixedPips *tral = new CTrailingFixedPips;
 CTrade *trade = new CTrade;
 
denkir:

А объекты то пустые в начале кода:

Нужен оператор new.

И тогда так:

не помогло

выдает всеравно ошибку

2013.08.04 15:51:21    2013.08.01 01:00:02   invalid pointer access in 'TrailingFixedPips.mqh' (117,18)

 
best1:

не помогло

выдает всеравно ошибку

2013.08.04 15:51:21    2013.08.01 01:00:02   invalid pointer access in 'TrailingFixedPips.mqh' (117,18)

Перед использованием (для начала):

tral.Init(symb,0,10);
 
хромает очень сильно документация. Надо чтоб как в MT4 - под каждой функцией кусочек кода с использованием
 
best1:
хромает очень сильно документация. Надо чтоб как в MT4 - под каждой функцией кусочек кода с использованием
Согласен. Но согласитесь, что Документация по MQL5 будет потолще, чем в MQL4. Может когда-нибудь дойдут руки у разрабов до всех её страниц...
Причина обращения: