Можно ли программно определить тип пиременной ? - страница 3

 
George Merts:

В данном случае - я бы это сделал с помощью флага, что-то типа bool bNeedCount, устанавливаем его, если нужен пересчет, или сбрасываем, если пересчет не нужен.

Но, вобще говоря, я считаю более верным передвать ценовые уровни только прямым значением double - так код отвязывается от значности пункта.

И согласен с предыдущим автором - вы зря так скептически относитесь к перегрузке, это очень удобная и нужная фича.

Я понимаю что перегрузка это классно, я понимаю что такое перегрузка,

но посмотрите мой код я по ссылке передаю все данные в виде структуры...  эту функцию метод не перегрузить....

 
Vitalii Ananev:

:)

О да, сразу не обратил внимание. В метод класса передается в качестве параметра экземпляр этого же класса. ..... 

Прошу предоставить пример Вашей реализации ?

Покажите как правильнее, я уж не говорю об идеале ...

 
Vladimir Pastushak:
по ссылке масса непонятных вещей, я изучаю и хочу понять, но изучить можно только методом тыка..
Вы приобретите книгу по любому другому языку программирования (например C#) и по ней изучайте ООП, так вам будет легче разобраться, чем по справочнику MQL. Главное понять сам принцип. А на каком языке программирования это реализовано это уже неважно.
 
Vladimir Pastushak:

Прошу предоставить пример Вашей реализации ?

Покажите как правильнее, я уж не говорю об идеале ...

class Trader
{
private:
   string   Smb;//торгуемый символ
   uint     MN;//магик
   uint     Slip;//проскальзывание
   string   Comm;//комментарий
   bool     Market;//вид исполнения 
   
   double   Price;//цена по которой открывать ордер
   double   StopLoss;//стоп
   double   TakeProfit;//профит
   double   Lots;//объем
   int      NewOrder(uint Cmd,uint try=3);
   double   GetPriceLot(uint Cmd);
protected:


   bool     DeleteOrder(int Ticet); 
   bool     OrderParent();  

   int      CloseOrder(double Vol,uint try);
   void     SortOrder(int &array[]);
public:
                     Trader();
                    ~Trader();
   void     Initalize(string pSmb, uint pMN, uint pSlip, string comm, bool ndd=false);
   void     SetComment(string comm){Comm=comm;};
   void     SetSymbol(string smb){Smb=smb;};
   void     SetMagik(int mn) {MN=mn;};
   void     SetSlippage(int slip) {Slip=slip*GetDigits();}; 
   void     SetMarket(bool NDD){Market=NDD;};
   bool     SetLots(double lot);
   double   GetLots(){return(Lots);};
   

   int      OpenMarket(uint Cmd,double Vol, uint   TP,uint   SL);
   int      OpenMarket(uint Cmd,double Vol, double TP,double SL);   
   int      OpenMarket(uint Cmd,double Vol, double TP,uint   SL);   
   int      OpenMarket(uint Cmd,double Vol, uint   TP,double SL);
         
   int      OpenPending(uint Cmd,double _Price,double Vol, uint   TP,uint   SL);
   int      OpenPending(uint Cmd,double _Price,double Vol, double TP,double SL);
   int      OpenPending(uint Cmd,double _Price,double Vol, double TP,uint   SL);   
   int      OpenPending(uint Cmd,double _Price,double Vol, uint   TP,double SL);   
   

   void     CloseSelectedOrder(int Ticet,double Vol);
   void     CloseSelectedOrder(double Vol);
   void     CloseAllOrder(uint Cmd,bool Sort = false);
   void     CloseAllOrder(uint Cmd,double PartVol,bool Sort=false);   
   void     CloseAllOrder(uint Cmd,uint TimeLimit,bool Sort=false);   
   void     CloseAllOrder(bool Sort = false);


   void     DeleteAllOrder(int Cmd);
   void     DeleteAllOrder(int Cmd,uint TimeLimit);
   void     DeleteAllOrder(int Cmd,datetime Dt);      
   bool     ModifyStopLoss(int Ticet, double SL, uint try=3);
   bool     ModifyStopLoss(double SL, uint try=3);
   bool     Modify(int Ticet, double SL, double TP, uint try=3);
   bool     Modify(double SL, double TP, uint try=3);       
   int      OrderOpenCount(int OrderCmd=-1);
   int      OrderOpenCount(int &Sell,int &Buy,int &SellLimit,int &BuyLimit,int &SellStop,int &BuyStop);   
   double   ProfitOrder(int OrderCmd=-1);
   int      ProfitPoint(int Ticet);
   int      ProfitPoint();   
   int      AllProfitPoint(int Cmd);
   int      GetLastCloseOrderTicket(); 
   int      GetLastOpenOrderTicket();
   bool     LastCloseOrderStopLoss();      
   double   GetPoint();
   int      GetDigits();   

   int      GetOrder(int &array[],bool Sort=false);
   void     ProfitLoss(int &ProfitTicet[],double &Profit[],int &LossTicet[],double &Loss[]);      
   double   GetTakeProfit(uint Cmd,uint Profit);
   double   GetStopLoss(uint Cmd,uint Stop);
   void     TrallStopLoss(uint ProfitStart,uint TrStop,uint LossStep);
};
 
Vitalii Ananev:
Вы приобретите книгу по любому другому языку программирования (например C#) и по ней изучайте ООП, так вам будет легче разобраться, чем по справочнику MQL. Главное понять сам принцип. А на каком языке программирования это реализовано это уже неважно.
Это долго, неужели тут нет знающих с желающих помочь ?
 
Vladimir Pastushak:

Я понимаю что перегрузка это классно, я понимаю что такое перегрузка,

но посмотрите мой код я по ссылке передаю все данные в виде структуры...  эту функцию метод не перегрузить....

Дык, а тогда в чем надо определить тип? Есть переменная дабл и надо определить находится ли в ней инт или дабл? :) Переменная дабл и чтобы в ней ни было, оно всегда дабл.

Расскажите как вы изучаете ООП, что читали?  

 
Dmitry Fedoseev:

Дык, а тогда в чем надо определить тип? Есть переменная дабл и надо определить находится ли в ней инт или дабл? :) Переменная дабл и чтобы в ней ни было, оно всегда дабл.

Расскажите как вы изучаете ООП, что читали?  

Читал то что написано на данном ресурсе то что понял применяю, то что не понял изучаю вопросами к Вам знающим или методом тыка...
 
Dmitry Fedoseev:

Дык, а тогда в чем надо определить тип? Есть переменная дабл и надо определить находится ли в ней инт или дабл? :) Переменная дабл и чтобы в ней ни было, оно всегда дабл.

Расскажите как вы изучаете ООП, что читали?  

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

Не могу понять что плохого в передаче структуры по ссылке ?

 
Vladimir Pastushak:
Это долго, неужели тут нет знающих с желающих помочь ?

Почему, долго вам же не надо изучать программирование с нуля. 

Вот обратите внимание,  перегруженная функция. Можно передать значения тейка и стопа как в пунктах так и указав конкретную цену. Очень облегчает дальнейшую работу. Кроме того вы наверно видели, что и стандартные функции MQL тоже по большей части перегруженные.

   int      OpenPending(uint Cmd,double _Price,double Vol, uint   TP,uint   SL);
   int      OpenPending(uint Cmd,double _Price,double Vol, double TP,double SL);
   int      OpenPending(uint Cmd,double _Price,double Vol, double TP,uint   SL);   
   int      OpenPending(uint Cmd,double _Price,double Vol, uint   TP,double SL);
 
Vladimir Pastushak:
Читал то что написано на данном ресурсе то что понял применяю, то что не понял изучаю вопросами к Вам знающим или методом тыка...
Не помните какие конкретно статьи читали?
Причина обращения: