Ошибки, баги, вопросы - страница 855

 
gdtt:

Вот эта конструкция:

 считаю должна быть запрещена, т.к. производится прямое обращение к private члену другого объекта, пусть и этого же типа данных.

 

Считаете, что должно быть запрещено? Не используйте.

Любые члены класса, объявленные после спецификатора доступа к элементам private: (и до следующего спецификатора доступа), доступны только функциям-членам этого класса.

В документации явно сказано про доступ и ничего не сказано про объекты (только про классы).

Кстати, конструкторы копирования основаны как раз на таком эффекте.

 
stringo:

Считаете, что должно быть запрещено? Не используйте.

В документации явно сказано про доступ и ничего не сказано про объекты (только про классы).

Кстати, конструкторы копирования основаны как раз на таком эффекте.

ок, понял, спасибо
 
Alex5757000Получается, что предварительно вызванная функция OrderCalcMargin() для отложенного ордера вернула 0.0?

Ну да, судя по описанию ситуации, функция OrderCalcMargin() для отложенных ордеров возвращает "0.0". Это говорит о том, что для выставления отложенных ордеров  маржа не требуется.

Если же Вам нужно оценить, какой размер маржи потребуется при срабатывании отложенного ордера, то подставляйте первым параметром один из рыночных ордеров. 

 

Итак, ошибка "EX5 loading failed"  после того как функции кинул в библиотеку

#import "GetPriceBy.ex5"
double GetHighByTime(datetime Time);
double GetLowByTime(datetime Time);
#import

в чем ошибка то?

 ------------------------------

решил проверить может в самих функциях проблема. Даже если тела всех функций библиотеки состоят только из "return(1);" все равно ошибка

 импорт как и в примере справки

#import "user32.dll"
int    MessageBoxW(uint hWnd,string lpText,string lpCaption,uint uType);
#import "stdlib.ex5"
string ErrorDescription(int error_code);
int    RGB(int red_value,int green_value,int blue_value);
bool   CompareDoubles(double number1,double number2);
string DoubleToStrMorePrecision(double number,int precision);
string IntegerToHexString(int integer_number);
#import "ExpertSample.dll"
int    GetIntValue(int);
double GetDoubleValue(double);
string GetStringValue(string);
double GetArrayItemValue(double &arr[],int,int);
bool   SetArrayItemValue(double &arr[],int,int,double);
double GetRatesItemValue(double &rates[][6],int,int,int);
#import
 
FiftyStars:

Итак, ошибка "EX5 loading failed"  после того как функции кинул в библиотеку

В библиотеке функции объявлены как экспортируемые?
 
alexvd:
В библиотеке функции объявлены как экспортируемые?
объявлены, но я уже решил проблему - просто перезагрузил компьютер xD видимо месяц бесперерывной работы дал о себе знать...причем проблемы уже много где начали появляться
 
Скажите, вот моя структура запроса, что еще ей в принципе не хватает?
  
 
 MqlTick last_tick;SymbolInfoTick(Symbol(),last_tick);
 
   MqlTradeRequest request={0};
      MqlTradeResult result={0};
      
 
  {
    request.     action=TRADE_ACTION_DEAL;           // Тип выполняемого действия
    request.     price=last_tick.bid;
    request.                        volume=1;           // Запрашиваемый объем сделки в лотах     
    request.     type=ORDER_TYPE_SELL;     // Тип ордера
    request.     type_filling =ORDER_FILLING_RETURN;          
    
   }
   
  OrderSend(request,result); 
  
  
  int Error=GetLastError(); ResetLastError();
        printf("Error %i ",Error);
      
        

2012.10.10 19:22:29 депозита (EURUSD,M1) Error 4756             ERR_TRADE_SEND_FAILED
4756
Не удалось отправить торговый запрос

 Я конечно извиняюсь, почему нельзя обойтись минимумом информации, допустим, если я сразу открываю позу, не ордер, то ведь цену можно бы и не указывать? Если нет стопов-профитов, ну нет и нет? Может, я их хочу позже роботом ставить..      Какого поля торговому запросу так критично не хватает? Или в чем в нем дело? 

А это- его можно тоже не указывать?   type_filling.  Там что-то обьясняется, вроде заказ может исполняться не по всему обьему.. Как так? Я в общем не очень вьехал.. Ладно 

А, видно там это быо критично request.symbol=_Symbol;  Я думал, что поставка позиции имено на том графике где робот будет в общем сама разумеющейся.. 

 
Подскажите, как в качестве параметра результата оптимизации (Custom max) установить LR Correlation?
 
Vacuum:
Подскажите, как в качестве параметра результата оптимизации (Custom max) установить LR Correlation?

Для начала LR Correlation нужно рассчитать. Делается это в этой библиотеке https://www.mql5.com/ru/code/1081

А дальше вернуть это значение через OnTester, как здесь https://www.mql5.com/ru/articles/286

CTradeStatistics
CTradeStatistics
  • голосов: 8
  • 2012.09.13
  • Andrey Voytenko
  • www.mql5.com
Класс для расчета показателей из перечисления ENUM_STATISTICS
 
Dimka-novitsek:
Скажите, вот моя структура запроса, что еще ей в принципе не хватает?

2012.10.10 19:22:29 депозита (EURUSD,M1) Error 4756             ERR_TRADE_SEND_FAILED
4756
Не удалось отправить торговый запрос

 Я конечно извиняюсь, почему нельзя обойтись минимумом информации, допустим, если я сразу открываю позу, не ордер, то ведь цену можно бы и не указывать? Если нет стопов-профитов, ну нет и нет? Может, я их хочу позже роботом ставить..      Какого поля торговому запросу так критично не хватает? Или в чем в нем дело? 

А это- его можно тоже не указывать?   type_filling.  Там что-то обьясняется, вроде заказ может исполняться не по всему обьему.. Как так? Я в общем не очень вьехал.. Ладно 

А, видно там это быо критично request.symbol=_Symbol;  Я думал, что поставка позиции имено на том графике где робот будет в общем сама разумеющейся.. 

 Советую использовать стандартную библиотеку:

#include <Trade\Trade.mqh>
CTrade            trade;
MqlTick           last_tick;
double Lot=0.01;
string main_comment="";
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- тип позиции
   bool Type;
//----------------------------------+
//--- если покупаем
   Type=true;                         
//--- если продаём     
   Type=false;
//----------------------------------+
   if(Type)
     {
      SymbolInfoTick(_Symbol,last_tick);
      double price=last_tick.ask;
      trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,NormalizeDouble(Lot,2),price,0,0,main_comment);
     }
   else
     {
      SymbolInfoTick(_Symbol,last_tick);
      double price=last_tick.bid;
      trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,NormalizeDouble(Lot,2),price,0,0,main_comment);
     }

  }
Причина обращения: