У меня ещё вопрос)) Только не отправляйте читать инструкцию, читал её не однократно, всё равно не всё понимаю некоторое в классах) Вот есть класс трейлинг стоп по Parabolic SAR, расположенный в папке Expert\Trailing\ именованный TrailingParabolicSAR.mqh Расскажите если не сложно, как с ним взаимодействовать. Просто я на примерах лучше понимаю))) Заранее, спасибо тем кто откликнется)
//+------------------------------------------------------------------+//| TrailingParabolicSAR.mqh |//| Copyright 2009-2013, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#include <Expert\ExpertTrailing.mqh>
// wizard description start//+------------------------------------------------------------------+//| Description of the class |//| Title=Trailing Stop based on Parabolic SAR |//| Type=Trailing |//| Name=ParabolicSAR |//| Class=CTrailingPSAR |//| Page= |//| Parameter=Step,double,0.02,Speed increment |//| Parameter=Maximum,double,0.2,Maximum rate |//+------------------------------------------------------------------+// wizard description end//+------------------------------------------------------------------+//| Class CTrailingPSAR. |//| Appointment: Class traling stops with Parabolic SAR. |//| Derives from class CExpertTrailing. |//+------------------------------------------------------------------+class CTrailingPSAR : public CExpertTrailing
{
protected:
CiSAR m_sar; // object-indicator//--- adjusted parametersdouble m_step; // the "speed increment" parameter of the indicatordouble m_maximum; // the "maximum rate" parameter of the indicatorpublic:
CTrailingPSAR(void);
~CTrailingPSAR(void);
//--- methods of setting adjustable parametersvoid Step(double step) { m_step=step; }
void Maximum(double maximum) { m_maximum=maximum; }
//--- method of creating the indicator and timeseriesvirtualbool InitIndicators(CIndicators *indicators);
//---virtualbool CheckTrailingStopLong(CPositionInfo *position,double &sl,double &tp);
virtualbool CheckTrailingStopShort(CPositionInfo *position,double &sl,double &tp);
};
//+------------------------------------------------------------------+//| Constructor |//+------------------------------------------------------------------+void CTrailingPSAR::CTrailingPSAR(void) : m_step(0.02),
m_maximum(0.2)
{
}
//+------------------------------------------------------------------+//| Destructor |//+------------------------------------------------------------------+void CTrailingPSAR::~CTrailingPSAR(void)
{
}
//+------------------------------------------------------------------+//| Create indicators. |//+------------------------------------------------------------------+bool CTrailingPSAR::InitIndicators(CIndicators *indicators)
{
//--- check pointerif(indicators==NULL)
return(false);
//--- add object to collectionif(!indicators.Add(GetPointer(m_sar)))
{
printf(__FUNCTION__+": error adding object");
return(false);
}
//--- initialize objectif(!m_sar.Create(m_symbol.Name(),m_period,m_step,m_maximum))
{
printf(__FUNCTION__+": error initializing object");
return(false);
}
//--- okreturn(true);
}
//+------------------------------------------------------------------+//| Checking trailing stop and/or profit for long position. |//+------------------------------------------------------------------+bool CTrailingPSAR::CheckTrailingStopLong(CPositionInfo *position,double &sl,double &tp)
{
//--- checkif(position==NULL)
return(false);
//---double level =NormalizeDouble(m_symbol.Bid()-m_symbol.StopsLevel()*m_symbol.Point(),m_symbol.Digits());
double new_sl=NormalizeDouble(m_sar.Main(1),m_symbol.Digits());
double pos_sl=position.StopLoss();
double base =(pos_sl==0.0) ? position.PriceOpen() : pos_sl;
//---
sl=EMPTY_VALUE;
tp=EMPTY_VALUE;
if(new_sl>base && new_sl<level)
sl=new_sl;
//---return(sl!=EMPTY_VALUE);
}
//+------------------------------------------------------------------+//| Checking trailing stop and/or profit for short position. |//+------------------------------------------------------------------+bool CTrailingPSAR::CheckTrailingStopShort(CPositionInfo *position,double &sl,double &tp)
{
//--- checkif(position==NULL)
return(false);
//---double level =NormalizeDouble(m_symbol.Ask()+m_symbol.StopsLevel()*m_symbol.Point(),m_symbol.Digits());
double new_sl=NormalizeDouble(m_sar.Main(1)+m_symbol.Spread()*m_symbol.Point(),m_symbol.Digits());
double pos_sl=position.StopLoss();
double base =(pos_sl==0.0) ? position.PriceOpen() : pos_sl;
//---
sl=EMPTY_VALUE;
tp=EMPTY_VALUE;
if(new_sl<base && new_sl>level)
sl=new_sl;
//---return(sl!=EMPTY_VALUE);
}
//+------------------------------------------------------------------+
Kira27: У меня ещё вопрос)) Только не отправляйте читать инструкцию, читал её не однократно, всё равно не всё понимаю некоторое в классах) Вот есть класс трейлинг стоп по Parabolic SAR, расположенный в папке Expert\Trailing\ именованный TrailingParabolicSAR.mqh Расскажите если не сложно, как с ним взаимодействовать. Просто я на примерах лучше понимаю))) Заранее, спасибо тем кто откликнется)
Пример использования дан в [dta folder]\MQL5\Experts\Advisors\ExpertMAPSAR.mq5
Если запустить эксперт в режиме обычного тестирования, принты выдают что положено в log тестера. Там же публикуется всё по ордерам/позициям. Если этот же эксперт тут же запустить в режиме визуализации, принты ничего невыдают. Никакие манипуляции с ордерами/позициями также не выводятся.
Если запустить эксперт в режиме обычного тестирования, принты выдают что положено в log тестера. Там же публикуется всё по ордерам/позициям. Если этот же эксперт тут же запустить в режиме визуализации, принты ничего невыдают. Никакие манипуляции с ордерами/позициями также не выводятся.
У меня ещё вопрос)) Только не отправляйте читать инструкцию, читал её не однократно, всё равно не всё понимаю некоторое в классах) Вот есть класс трейлинг стоп по Parabolic SAR, расположенный в папке Expert\Trailing\ именованный TrailingParabolicSAR.mqh Расскажите если не сложно, как с ним взаимодействовать. Просто я на примерах лучше понимаю))) Заранее, спасибо тем кто откликнется)
Пример использования дан в [dta folder]\MQL5\Experts\Advisors\ExpertMAPSAR.mq5
Пример использования дан в [dta folder]\MQL5\Experts\Advisors\ExpertMAPSAR.mq5
Спасибо!!!
Вопрос по тестеру.
В режиме визуализации принты не выводятся. Это так и должно быть или я что-то не так делаю?
я что-то не так делаю?
Вероятнее всего.
Здравствуйте, не могу подключить счёт в мт5((( не подскажите в чем может быть причина? Постоянное подключение.. Но все никак (
А с компьютера пробовали?
Вероятнее всего.
В Ините есть немного принтов.
Если запустить эксперт в режиме обычного тестирования, принты выдают что положено в log тестера. Там же публикуется всё по ордерам/позициям.
Если этот же эксперт тут же запустить в режиме визуализации, принты ничего невыдают. Никакие манипуляции с ордерами/позициями также не выводятся.
А как сделать, чтобы было?
В Ините есть немного принтов.
Если запустить эксперт в режиме обычного тестирования, принты выдают что положено в log тестера. Там же публикуется всё по ордерам/позициям.
Если этот же эксперт тут же запустить в режиме визуализации, принты ничего невыдают. Никакие манипуляции с ордерами/позициями также не выводятся.
А как сделать, чтобы было?
А где вы смотрите?
А где вы смотрите?