Проблема с подключением библиотеки TrailingFixedPips.mqh

 

Здравствуйте!

Не получается вызвать методы из библиотеки TrailingFixedPips.mqh

В чем моя ошибка? Ниже прилагаю код советника.

//+------------------------------------------------------------------+
//|                                               proba_trailing.mq5 |
//|                                                           Viktor |
//|                                                           Viktor |
//+------------------------------------------------------------------+
#property copyright "Viktor"
#property link      "Viktor"
#property version   "1.00"
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh> 
#include <Expert\Trailing\TrailingFixedPips.mqh>
//+------------------------------------------------------------------+

//--- input parameters
input int   SL;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   MqlTick last_tick;
   double sl,tp;
   static bool flag_of_open_psn=true;
//----------------------------------------------------------------
   CTrade CTrade_obj_1;
   CPositionInfo CPositionInfo_Obj_1;
   CSymbolInfo CSymbolInfo_Obj_1;
   CTrailingFixedPips CTrailingFixedPips_Obj_1;
//----------------------------------------------------------------
   SymbolInfoTick(Symbol(),last_tick);
   Print("Тик: ",last_tick.last);
   if(flag_of_open_psn)
     {
      //-------------------------------------------------------------
      CTrailingFixedPips_Obj_1.StopLevel(SL);
      CTrailingFixedPips_Obj_1.ProfitLevel(0);
      //-------------------------------------------------------------
      if(CTrailingFixedPips_Obj_1.ValidationSettings())
        {
         Print("Настройки по стопам - ок!");
        }
      else
        {
         Print("Настройки по стопам - не прошли!");
        } // if(CTrailingFixedPips_Obj_1.ValidationSettings())
      // -------------------------------------------------------------
      if(CTrade_obj_1.Buy(1,NULL,0.0,CSymbolInfo_Obj_1.NormalizePrice(last_tick.last-SL),CSymbolInfo_Obj_1.NormalizePrice(0.0),NULL))
        {
         Print("Buy opened");
        } // if(CTrade_obj_1.Buy(1,NULL,0.0,CSymbolInfo_Obj_1.NormalizePrice(last_tick.last-SL),CSymbolInfo_Obj_1.NormalizePrice(0.0),NULL))
      // -------------------------------------------------------------
      flag_of_open_psn=false;
      if(CPositionInfo_Obj_1.Select(Symbol()))
        {
         Print("Psn selected");
        } // if(CPositionInfo_Obj_1.Select(Symbol()))
      // -------------------------------------------------------------
      Print("Time of open: ",CPositionInfo_Obj_1.Time());
     } // if(flag_of_open_psn)
   Print("Прибыль: ",CPositionInfo_Obj_1.StopLoss());
   CTrailingFixedPips_Obj_1.CheckTrailingStopLong(GetPointer(CPositionInfo_Obj_1),sl,tp);
   Print("sl = ",sl,", tp = ",tp);
  }
//+------------------------------------------------------------------+
Файлы:
 
Виктор:

Здравствуйте!

Не получается вызвать методы из библиотеки TrailingFixedPips.mqh

В чем моя ошибка? Ниже прилагаю код советника.

Пункт 1. Если кратко, то: CTrailingFixedPips предназначен для использования в советниках, которые генерирует Мастер MQL5.

Пункт 2. Если более подробно: в коде есть ошибки. Но это не отменяет пункт 1.

 
Vladimir Karputov:

Пункт 1. Если кратко, то: CTrailingFixedPips предназначен для использования в советниках, которые генерирует Мастер MQL5.

Пункт 2. Если более подробно: в коде есть ошибки. Но это не отменяет пункт 1.

1) Какую библиотеку использовать взамен?

2) Буду благодарен, если укажете на ошибки.

 
Виктор:

1) Какую библиотеку использовать взамен?

2) Буду благодарен, если укажете на ошибки.

Писать на MQL5.

Объекты торговых классов нужно объявлять один раз в шапке, там где подключаются файлы классов. Не нужно создавать объекты торговых классов на каждом тике в Ontick()

//+------------------------------------------------------------------+
//|                                                 TrailingStop.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.001"
#property description "Пример TrailingStop"
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
CPositionInfo  m_position;                   // trade position object
CTrade         m_trade;                      // trading object
CSymbolInfo    m_symbol;                     // symbol info object

далее будет ...
 
Продолжать буду, после Вашего сообщения, что Вы прочли предыдущий пост.
 
Vladimir Karputov:
Продолжать буду, после Вашего сообщения, что Вы прочли предыдущий пост.
Прочел. Объекты перенес.
 

Теперь входные параметры.

Я люблю указывать уровни SL и TP в размерности четырёхзнака, у Вас в коде - в истинных величинах (Ваши 100 пунктов равны моим 10 пунктам). Как будем писать?

 
Vladimir Karputov:

Теперь входные параметры.

Я люблю указывать уровни SL и TP в размерности четырёхзнака, у Вас в коде - в истинных величинах (Ваши 100 пунктов равны моим 10 пунктам). Как будем писать?

Я пишу для ФОРТС, а не для FOREX. Поэтому, у меня, просто, стоп в рублях. Раньше писал роботов для FOREX и тоже пользовался четырехзначными значениями стопов, несмотря на то что появился пятый знак.
 
Виктор:
Я пишу для ФОРТС, а не для FOREX. Поэтому, у меня, просто, стоп в рублях. Раньше писал роботов для FOREX и тоже пользовался четырехзначными значениями стопов, несмотря на то что появился пятый знак.

Значит в истинных пунктах будем писать. Нам понадобятся такие входные параметры: Stop Loss,  Take Profit, Trailing Stop и railing Step

//+------------------------------------------------------------------+
//|                                                 TrailingStop.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
#property description "Example TrailingStop"
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
CPositionInfo  m_position;                   // trade position object
CTrade         m_trade;                      // trading object
CSymbolInfo    m_symbol;                     // symbol info object
//--- input parameters
input double   InpLots           = 0.1;      // Volume transaction
input int      InpStopLoss       = 15;       // Stop Loss (in pips)
input int      InpTakeProfit     = 40;       // Take Profit (in pips)
input int      InpTrailingStop   = 5;        // Trailing Stop (in pips)
input int      InpTrailingStep   = 5;        // Trailing Step (in pips)
//---
ulong          m_ticket;
ulong          m_magic=15489;                // magic number
ulong          m_slippage=10;                // slippage

double         ExtStopLoss=0.0;
double         ExtTakeProfit=0.0;
double         ExtTrailingStop=0.0;
double         ExtTrailingStep=0.0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
Вводим переменные ExtXXXX - в них будем хранить расчётные величины стопов и трейлинга, инициализируем их позже в OnInit().
 
Vladimir Karputov:

Значит в истинных пунктах будем писать. Нам понадобятся такие входные параметры: Stop Loss,  Take Profit, Trailing Stop и railing Step

Вводим переменные ExtXXXX - в них будем хранить расчётные величины стопов и трейлинга, инициализируем их позже в OnInit().
А библиотека какая будет трал рассчитывать?
 
Виктор:
А библиотека какая будет трал рассчитывать?
Никакая. Сами напишем трейлинг.
Причина обращения: