//| включаемые файлы |//+------------------------------------------------------------------+
#property tester_indicator "Blau_Ergodic.ex5"
#include <Expert\ExpertSignal.mqh>
//+------------------------------------------------------------------+//| Класс CSampleSignal. |//| Назначение: Класс генератора торговых сигналов. |//| Является производным от класса CExpertSignal. |//+------------------------------------------------------------------+class CSampleSignal : public CExpertSignal
{
protected :
CiCustom m_TSI; // объект для доступа к значениям TSI
CiClose m_close; // объект для доступа к ценам закрытия баров//--- настраиваемые параметрыint q; // q - период, по которому вычисляется моментумint r; // r - период 1-й EMA, применительно к моментумуint s; // s - период 2-й EMA, применительно к результату первого сглаживанияint u; // u - период 3-й EMA, применительно к результату второго сглаживанияint ul; // ul - (сигнальная линия) период EMA, применительно к эргодикеdouble m_stop_loss; // уровень установки ордера "stop loss" относительно цены открытияdouble m_take_profit; // уровень установки ордера "take profit" относительно цены открытияpublic :
CSampleSignal();
//--- методы установки параметров настройкиvirtualint ShortCondition(); // проверка условия открытия селлаvirtualint LongCondition(); // проверка условия открытия баяvoid Q( intvalue ) { q= value ; }
void R( intvalue ) { r= value ; }
void S( intvalue ) { s= value ; }
void U( intvalue ) { u= value ; }
void UL( intvalue ) { ul= value ; }
void StopLoss( doublevalue ) { m_stop_loss= value ; }
void TakeProfit( doublevalue ) { m_take_profit= value ; }
//--- метод проверки параметров настройкиvirtualbool ValidationSettings();
virtualbool InitIndicators(CIndicators* indicators);
protected :
//--- метод инициализации объектовbool InitMyCustomIndicator(CIndicators* indicators);
bool InitClose(CIndicators* indicators);
//--- методы доступа к данным объектовdouble Main( int index) { return (m_TSI.GetData( 0 ,index)); }
double Signal( int index) { return (m_TSI.GetData( 1 ,index)); }
double Close( int index) { return (m_close.GetData(index)); }
};
//+------------------------------------------------------------------+//| Конструктор CSampleSignal. |//| INPUT: нет. |//| OUTPUT: нет. |//| REMARK: нет. |//+------------------------------------------------------------------+void CSampleSignal::CSampleSignal()
{
q= 2 ;
r= 7 ;
s= 5 ;
u= 3 ;
ul= 5 ;
}
//+------------------------------------------------------------------+//| Проверка параметров настройки. |//| INPUT: нет. |//| OUTPUT: true-если настройки правильные, иначе false. |//| REMARK: нет. |//+------------------------------------------------------------------+bool CSampleSignal::ValidationSettings()
{
//--- проверка параметровif (q<= 0 ||r<= 0 ||s<= 0 ||u<= 0 ||ul<= 0 )
{
printf(__FUNCTION__+ ": период должен быть больше нуля" );
return ( false );
}
//--- успешное завершениеreturn ( true );
}
//+------------------------------------------------------------------+//| Инициализация индикаторов и таймсерий. |//| INPUT: indicators - указатель на объект-коллекцию |//| индикаторов и таймсерий. |//| OUTPUT: true-в случае успешного завершения, иначе false. |//| REMARK: нет. |//+------------------------------------------------------------------+bool CSampleSignal::InitIndicators(CIndicators* indicators)
{
//--- проверка указателяif (indicators==NULL) return ( false );
//--- инициализация скользящей среднейif (!InitMyCustomIndicator(indicators)) return ( false );
//--- инициализация таймсерии цен закрытияif (!InitClose(indicators)) return ( false );
//--- успешное завершениеreturn ( true );
}
메타 트레이더는 Windows Phone 8에서 언제 출시됩니까?
나는 계속해서 내 거래 신호 생성기를 작성합니다.
초기화 코드의 마지막 부분에 오류가 있습니다(굵게 강조 표시됨).
'InitMyCustomIndicator' - 함수 에는 본문이 있어야 합니다.
'InitClose' - 함수에는 본문이 있어야 합니다.
나는 계속해서 내 거래 신호 생성기를 작성합니다.
초기화 코드의 마지막 부분에 오류가 있습니다(굵게 강조 표시됨).
'InitMyCustomIndicator' - 함수에는 본문이 있어야 합니다.
'InitClose' - 함수에는 본문이 있어야 합니다.
선언되었지만 정의되지 않은 메서드를 사용하려고 합니다.
수업은 나에게 새롭고 완전히 명확하지 않습니다. 예를 사용하여 정의를 만드는 방법을 보여줄 수 있습니다.
수업은 나에게 새롭고 완전히 명확하지 않습니다. 예를 사용하여 정의를 만드는 방법을 보여줄 수 있습니다.
즉, 굵게 강조 표시된 코드의 마지막 부분만 변경합니까?
그리고 나는 이것을 한다:
즉, 굵게 강조 표시된 코드의 마지막 부분만 변경합니까?
그리고 나는 이것을 한다:
클래스 코드가 다음과 같은 메서드를 제공하는 경우:
그래서 그들은 뭔가를 확인해야 합니다. 그렇지 않으면 그들의 존재에 의미가 없습니다.
안녕하세요!
얼마나 많은 막대를 확인할지 미리 모르는 경우 막대 의 종가 로 for 루프로 반복을 구성하는 방법
예를 들어 i bar 전의 종가가 서로 아래에 있는지 조건을 확인해야 합니다.