>> 예, 부분적으로 내 질문에 직접 대답했을 수도 있고 확인이나 다른 의견을 원할 수도 있습니다.
맞습니다. 거래 조건을 수정하려는 경우 두 가지 방법이 있습니다. 한 쪽에서 전략 CStrategyMA에 새 조건을 추가 할 수 있습니다 (그러나 초기 전략과 다른 새 전략을 얻을 수 있음), 다른 방법은 새 클래스 (예 : CStrategyMA34)를 만들고 거기에 추가 매수 / 매도 조건을 추가하는 것입니다.
물론 새 전략과 함께 파일을 포함하고 CAdaptiveStrategy 클래스의 Expert_OnInit 함수에 이러한 새 전략을 추가해야 합니다:
두 번째 방법이 더 좋으며, 많은 전략과 그 변형을 추가할 수 있습니다.
CStrategyMA 클래스 인스턴스(있는 경우)를 제거할 필요는 없으며, 샌드박스에서 결과가 나쁘지 않을 것입니다.
시장은 m_all_strategies에 포함 된 전략 목록에서 최상의 전략을 결정하는 데 도움이 될 것입니다.
>> 제가 상상했던 대로 요점을 파악했습니다.
하지만 이제 문제는 또 다른 문제입니다. 저는 최적화를 위해 EA를 "입력"하기 위해 노력하고 있습니다.
예를 들어 다음과 같은 코드 조각을 의미합니다:
for(int i=0; i<RSIcicle; i++)
{
CStrategyRSI *t_StrategyRSI;
t_StrategyRSI=new CStrategyRSI;
if(t_StrategyRSI==NULL)
{
delete m_all_strategies;
Print("Error of creation of object of the CStrategyRSI type");
return(-1);
}
////////////////////////// PLEASE LOOK AT THIS FOLLOWING PIECE OF CODE ///////////////////////
//각 전략의 설정 기간int period=Trsi+Drsi*i;
ENUM_TIMEFRAMES RSItempoframe=RSItempoframe_in; // SET TIMEFRAME (enum), INPUT, FOR STRATEGY
ENUM_APPLIED_PRICE RSIappprice=RSIappprice_in; // SET APPPLIED PRICE (enum), INPUT, FOR STRATEGY
int RSIvarA_root=RSIvarA_in;
int RSIvarB_root=RSIvarB_in;
// 전략 초기화
t_StrategyRSI.Initialization(period,true,RSItempoframe,RSIappprice,RSIvarA_root,RSIvarB_root);
/////////////////////////////////////////////////////////////////////////////////////////////
// 전략의 세부 사항 설정
t_StrategyRSI.SetStrategyInfo(_Symbol,"[RSI_"+IntegerToString(period)+"]",period,"Relative Strenght Index "+IntegerToString(period));
if(t_StrategyRSISet_Stops_ ==true) {
t_StrategyRSI.Set_Stops(tSMSSone,tSMSStwo); //3500,1000);
}
//+------------------------------------------------------------------+//| CStrategyMA.mqh |//| Copyright 2010, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2010, MetaQuotes Software Corp."#property link "http://www.mql5.com"#include <CSampleStrategy.mqh>inputint mval=0, mval1=1, mval2=2, mval3=3, mval4=4, mvalVar=0, mvalFix=0,
mvalVar2=0, mvalFix2=0;
//+------------------------------------------------------------------+//| Class CStrategyMA for implementation of virtual trading |//| by the moving average strategy |//+------------------------------------------------------------------+class CStrategyRSI : public CSampleStrategy
{
protected:
int m_handle; // 이동평균(iMA) 표시기의 핸들int m_period; 이동 평균 표시기의 // 기간double m_values[]; // 인디케이터 값을 저장하기 위한 배열int RSIvarA, RSIvarB;
ENUM_TIMEFRAMES m_timeframe;
ENUM_APPLIED_PRICE m_appprice;
public:
// 전략 초기화 // 입력 추가 알림int Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe,
ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root);
// 전략의 초기화 해제int Deinitialization();
// 거래 조건 및 가상 포지션 개설 확인bool CheckTradeConditions();
};
//+------------------------------------------------------------------+//| Method of initialization of the strategy |//+------------------------------------------------------------------+int CStrategyRSI::Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe,
ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root)
{
//set period for the RSI (was //set period for the moving average)
m_period=period;
m_timeframe=RSItempoframe;
m_appprice=RSIappprice;
RSIvarA=RSIvarA_root;
RSIvarB=RSIvarB_root;
/*
...
*///지표의 핸들 생성
m_handle=iRSI(_Symbol,m_timeframe,m_period,m_appprice);
/*
...
*///+------------------------------------------------------------------+//| checking the trade conditions and opening the virtual positions |//+------------------------------------------------------------------+bool CStrategyRSI::CheckTradeConditions()
{
RecalcPositionProperties(m_position);
// double p_close;/*
...
*/if(CopyRates(_Symbol,m_timeframe,0,3,m_rates)<0)
{
Alert("Error of copying history data - error:",GetLastError(),"!!");
return(false);
}
// 이전 막대의 현재 종가를 복사합니다(현재 막대 1).// p_close=m_rates[1].close; // close price of the previous bar if(CopyBuffer(m_handle,0,0,3,m_values)<0)
{
Alert("Error of copying buffers of the Moving Average indicator - error number:",GetLastError());
return(false);
}
/*
...
*/// 매수 조건 1: RSI 상승bool buy_condition_1=(m_values[mval]>m_values[mval1]) && (m_values[mval1]>m_values[mval2]); // 배열의 []에 있는 정수 변수에 주목하세요.// 매수 조건 2: 이전 종가가 MA보다 높습니다.// bool buy_condition_2=(p_close>m_values[1]);bool buy_condition_2=(m_values[mval+mvalVar+mvalFix]>RSIvarA);
/*
... 등...
*/
내 질문은 다음과 같습니다:
입력 변수를 전략 클래스 파일 (예 : CStrategyRSI.mqh 포함 파일) 수준에서 또는 다른 클래스 / 포함 수준 (CAdaptiveStrategy.mqh)에서 적절한 hiearachy / 연결 / 트리를 사용하여 코드를 수정하는 것이 적절합니까?
즉, 최적화 테스트를 위해 일부 입력 매개 변수를 추가하여 EA 아이디어의 핵심 시스템에 영향을 미칩니다,
다음과 같이 해야 합니다: (CAdaptiveStrategy.mqh의 입력 변수)
/*
...
*/
class CStrategyRSI : public CSampleStrategy
{
protected:
int m_handle; // handle of the Moving Average (iMA) indicator
int m_period; // period of the Moving Average indicator
double m_values[]; // array for storing the value of indicator
int RSIvarA, RSIvarB;
ENUM_TIMEFRAMES m_timeframe;
ENUM_APPLIED_PRICE m_appprice;
public:
// initialization of strategy
int Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe,
ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root);
/*
...
*/
//set period for the RSI (was //set period for the moving average)
m_period=period;
m_timeframe=RSItempoframe;
m_appprice=RSIappprice;
RSIvarA=RSIvarA_root;
RSIvarB=RSIvarB_root;
/*
...
*///지표의 핸들 생성
m_handle=iRSI(_Symbol,m_timeframe,m_period,m_appprice);
/*
...
*/
또는 (CSampleRSI.mqh의 입력 변수) 다음과 같이 해야 합니다.
/*
...
*/inputint RSIvarA_root, RSIvarB_root;
inputENUM_TIMEFRAMES RSItempoframe=PERIOD_M5;
inputENUM_APPLIED_PRICE RSIappprice=PRICE_CLOSE;
class CStrategyRSI : public CSampleStrategy
{
protected:
int m_handle; // 이동평균(iMA) 표시기의 핸들int m_period; 이동 평균 표시기의 // 기간double m_values[]; // 인디케이터 값을 저장하기 위한 배열
ENUM_TIMEFRAMES m_timeframe;
ENUM_APPLIED_PRICE m_appprice;
int RSIvarA, RSIvarB;
public:
// 전략 초기화int Initialization(int period,bool virtual_trade_flag); // 원본 코드를 확인하세요./*
...
*///set period for the RSI (was //set period for the moving average)
m_period=period;
m_timeframe=RSItempoframe;
m_appprice=RSIappprice;
RSIvarA=RSIvarA_root;
RSIvarB=RSIvarB_root;
/*
...
*///지표의 핸들 생성
m_handle=iRSI(_Symbol,m_timeframe,m_period,m_appprice);
/*
...
*/
즉, 입력 변수는 클래스 선언(예2, 여기서는 위의 것만) 전에 전략 포함 파일에서 사용하거나 입력 변수는 다음과 같아야 합니다.
에서 파생되어야 하며, 모든 클래스 초기화 및 입력 매개 변수를 고려해야 하나요? (이 첫 번째 예제(위의 코드 바로 위)를 의미합니다) :)
public: // 전략의 초기화 int Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe, ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root);
CStrategyRSI.mqh 파일에서 입력 변수를 사용하는 경우 시스템 코어에 얼마나 다르게 영향을 미칠까요? 또는 의 입력 변수를 사용하면 시스템 코어에 어떤 영향을 미칠까요?
나는 단지 테스트의 문제라면, 나는 대신 테스트와 또한 테스트 모두를 원한다면 CStrategyRSI.mqh에서 입력 변수를 사용할 수 있다고 생각합니다.
EA 아이디어의 핵심 시스템 (적응 형 시스템 및 거래 시뮬레이터, 가상 트레이더 포함)에 영향을 미치려면 다음을 선언해야합니다.
입력 변수는 전략 포함에 없지만 모든 적절한 연결 및 호출과 함께 적응 형 포함 파일에 있습니다.
전략 테스터에서 최적화 옵션을 사용하여 전략의 최상의 매개 변수를 찾으려면 특정 전략으로 EA를 다시 작성하고 플레이하는 것이 좋습니다.
>> 알겠습니다. 쉬운 일은 아닐 겁니다...
적응형 EA의 개념과 구조상 최적화할 특정 전략과 파라미터가 없기 때문에 Strategy Tester에서 직접 파라미터를 최적화할 수 없습니다.
>> 예. EA는 전략에 대해 아직 최적화 된매개 변수로 작동하도록 이상화되어 있습니다. 제가 이해한 바에 따르면 시장이 어떻게 반응하는지에 따라 (또는 다른 관점에서 그 반대의 경우도 마찬가지입니다...) 다른 전략을 활용한다는 것입니다.
전략 테스터에서 거래 또는 테스트에 적응형 EA를 사용할 때 우리는 다양한 전략의 신호 집합으로 거래 시스템을 갖게됩니다. 즉, 테스터는 우리가 만든 가상 샌드박스에 액세스할 수 없으며 이에 대해 아무것도 알지 못합니다.
>> 이 개념을 이해했지만 완전히 이해하지는 못했습니다.
테스터가 가상 샌드박스와 상호 작용할 수 없고, 트레이딩 논리도 이해하지 못한다는 것을 이해합니다.
제 유일한 목표는 애드온과 함께 사용하기 위해 EA를 수정하는 것이었습니다. 다른 EA를 다시 작성하거나 모든 전략을 다시 작성하거나 각 전략을 개별적으로 테스트하지 않고 매개 변수 최적화를 위해서도이 EA를 사용하는 것이 목표였습니다. 제 아이디어는 동일한 EA 내에서 매개 변수를 최적화 할 수있는 가능성에 대한 "편안함"을위한 것이지만이 최적화는 가상 거래 / 적응 형 시스템에서 작동하도록 의도 된 것이 아닙니다. 동일한 EA 입력 창을 사용하여 전략의 매개 변수를 최적화 할 수있는 가능성을 갖는 것이지 각 전략에 대해 다른 각 EA를 작성하고 최적화 매개 변수를 가져 와서 적응 형 전략 시스템에 고정 값으로 넣는 것이 아닙니다. 제 요점을 이해하셨기를 바랍니다.
입력 매개 변수를 사용하여 사용할 거래 전략의 매개 변수를 구성하려면 파일을 사용하는 것이 더 좋으며 매개 변수와 거래 전략 목록을 구성 할 수 있습니다.
>> 어떤 파일에 대해 이야기하고 있습니까? ( 입력 매개 변수를 사용하여 사용할 거래 전략의 매개 변수를 구성하려면 파일을 사용하는 것이 좋습니다. )
아니면 각 전략에 대해 다른 개별 EA를 작성하고 최적화 한 다음 매개 변수를 CStrategyXXX.mqh에 고정 값으로 복사하는 것을 말하는 건가요?
Are you talking about to use CStrategyXXX.mqh or the fact to write another individual EA for each strategy, optimize it, and copy the parameters as fixed values in CStrategyXXX.mqh?
즉, 적응형 EA의 일부 설정에 따라 전략 컨테이너를 채울 수 있습니다.
예를 들어, Adaptive_Expert.Expert_OnInit()에서 적응형 EA 설정이 있는 파일을 로드할 수 있습니다:
MA;3 MA;15 MA;25 Stoch;3;12;20 Stoch;3;15;30
Strategy1;Param1;Param2; Strategy2;Param1;Param2;
각 줄을 구문 분석하여 포함해야 하는 전략을 인식하고 해당 매개변수를 지정하여 추가합니다. 이는 컴파일 없이 적응형 EA를 구성하는 방법 중 하나입니다. 단순화를 위해 기사에서는 고려하지 않았습니다.
테스터를 가상 샌드박스와 상호 작용하는 것은 의미가 없으며 거래 논리적 의미가 없다는 것을 이해합니다.
저의 유일한 목표는 다른 EA를 다시 작성하거나 모든 전략을 다시 작성하거나 각 전략을 개별적으로 테스트하지 않고 매개 변수 최적화를 위해이 EA를 사용하기 위해 애드온과 함께 사용하기 위해 EA를 수정하는 것이 었습니다. 제 아이디어는 동일한 EA 내에서 매개 변수를 최적화 할 수있는 가능성에 대한 "편안함"을위한 것이지만이 최적화는 가상 거래 / 적응 형 시스템에서 작동하도록 의도 된 것이 아닙니다. 동일한 EA 입력 창을 사용하여 전략의 매개 변수를 최적화 할 수있는 가능성을 갖는 것이지 각 전략에 대해 다른 각 EA를 작성하고 최적화 매개 변수를 가져 와서 적응 형 전략 시스템에 고정 값으로 넣는 것이 아닙니다. 제 요점을 이해하셨기를 바랍니다.
샌드박스를 살펴보는 방법이 있습니다. 전략 테스터를 사용하여 간접적으로 할 수 있습니다.
기사의 그림 2에 제시된 결과를 재현하고 싶다고 가정해 보겠습니다.
적응형 EA의 디버그 버전이 필요합니다 (샌드박스를 보고합니다) 다음으로 전략 테스터에서 Adaptive_Expert_Sample을 컴파일하여 열고 EURUSD H1 01.01.2010~20.08.2010을 선택한 후 테스트를 시작합니다. 샌드박스와 적응형 전략 결과는 tester\files\equity_res.txt에 저장됩니다. 이 방법을 사용하면 모든 수치를 매우 쉽게 재현할 수 있습니다.
아주 좋은 기사, 산만 함은 제안 된 기능적 가능성을 없애고 통합하는 대신 결과를 재현하려는 사람들로부터 비롯됩니다. 이제 완전한 기능과 수익성을 갖춘 자동 및 반자동 거래 EA를 만들 확률이 실현되었습니다. 광범위한 지표 테스트, 결과를 컴파일하고 해당 데이터의 적합성 통계 위에 지표의 통계 데이터를 추출하여 EA가 구현할 최상의 거래 전략을 선택할 수 있습니다. 지금까지 EA에서 기본적 분석과 기술적 분석이 MQL5 언어의 보조를 통해 결합된 적은 없었습니다. 앞으로 모든 시장의 EA가 시장 변동을 예측하기 위해 함께 실현되는 것을 볼 수 있습니다.
외환주의자 여러분,
>>친애하는
질문에 답변하셨습니다 :)
>> 예, 부분적으로 내 질문에 직접 대답했을 수도 있고 확인이나 다른 의견을 원할 수도 있습니다.
맞습니다. 거래 조건을 수정하려는 경우 두 가지 방법이 있습니다. 한 쪽에서 전략 CStrategyMA에 새 조건을 추가 할 수 있습니다 (그러나 초기 전략과 다른 새 전략을 얻을 수 있음), 다른 방법은 새 클래스 (예 : CStrategyMA34)를 만들고 거기에 추가 매수 / 매도 조건을 추가하는 것입니다.
물론 새 전략과 함께 파일을 포함하고 CAdaptiveStrategy 클래스의 Expert_OnInit 함수에 이러한 새 전략을 추가해야 합니다:
두 번째 방법이 더 좋으며, 많은 전략과 그 변형을 추가할 수 있습니다.
CStrategyMA 클래스 인스턴스(있는 경우)를 제거할 필요는 없으며, 샌드박스에서 결과가 나쁘지 않을 것입니다.
시장은 m_all_strategies에 포함 된 전략 목록에서 최상의 전략을 결정하는 데 도움이 될 것입니다.
>> 제가 상상했던 대로 요점을 파악했습니다.
하지만 이제 문제는 또 다른 문제입니다. 저는 최적화를 위해 EA를 "입력"하기 위해 노력하고 있습니다.
예를 들어 다음과 같은 코드 조각을 의미합니다:
where (선언) :
및 where 변수:
RSItempoframe, RSIappprice, RSIvarA_root, RSIvarB_root
와 공동으로 작업합니다.
내 질문은 다음과 같습니다:
입력 변수를 전략 클래스 파일 (예 : CStrategyRSI.mqh 포함 파일) 수준에서 또는 다른 클래스 / 포함 수준 (CAdaptiveStrategy.mqh)에서 적절한 hiearachy / 연결 / 트리를 사용하여 코드를 수정하는 것이 적절합니까?
즉, 최적화 테스트를 위해 일부 입력 매개 변수를 추가하여 EA 아이디어의 핵심 시스템에 영향을 미칩니다,
다음과 같이 해야 합니다: (CAdaptiveStrategy.mqh의 입력 변수)
또는 (CSampleRSI.mqh의 입력 변수) 다음과 같이 해야 합니다.
즉, 입력 변수는 클래스 선언(예2, 여기서는 위의 것만) 전에 전략 포함 파일에서 사용하거나 입력 변수는 다음과 같아야 합니다.
에서 파생되어야 하며, 모든 클래스 초기화 및 입력 매개 변수를 고려해야 하나요? (이 첫 번째 예제(위의 코드 바로 위)를 의미합니다) :)
public:
// 전략의 초기화
int Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe,
ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root);
CStrategyRSI.mqh 파일에서 입력 변수를 사용하는 경우 시스템 코어에 얼마나 다르게 영향을 미칠까요? 또는 의 입력 변수를 사용하면 시스템 코어에 어떤 영향을 미칠까요?
나는 단지 테스트의 문제라면, 나는 대신 테스트와 또한 테스트 모두를 원한다면 CStrategyRSI.mqh에서 입력 변수를 사용할 수 있다고 생각합니다.
EA 아이디어의 핵심 시스템 (적응 형 시스템 및 거래 시뮬레이터, 가상 트레이더 포함)에 영향을 미치려면 다음을 선언해야합니다.
입력 변수는 전략 포함에 없지만 모든 적절한 연결 및 호출과 함께 적응 형 포함 파일에 있습니다.
초기화 및 클래스 / 함수 선언의 입력 / 출력?
그렇죠?
제 요점을 이해하셨길 바랍니다.
Tnkx
....그러나 이제 질문은 또 다른 문제입니다. 최적화를 위해 EA를 "입력"하기 위해 노력하고 있습니다....
전략 테스터의 최적화 옵션을 사용하여 전략의 최적 매개 변수를 찾으려면 특정 전략으로 EA를 다시 작성하고 플레이하는 것이 좋습니다.
적응형 EA의 개념과 구조상 최적화할 특정 전략과 파라미터가 없기 때문에 전략 테스터에서 직접 파라미터를 최적화할 수 없습니다.
전략 테스터에서 트레이딩 또는 테스트에 적응형 EA를 사용할 때 우리는 다양한 전략의 신호 집합으로 트레이딩 시스템을 갖게 됩니다. 즉, 테스터는 우리가 만든 가상 샌드박스에 액세스할 수 없으며 이에 대해 아무것도 알지 못합니다.
입력 매개 변수를 사용하여 사용할 거래 전략의 매개 변수를 구성하려면 파일을 사용하는 것이 더 좋으며, 이를 통해 매개 변수와 거래 전략 목록을 구성 할 수 있습니다.
전략 테스터에서 최적화 옵션을 사용하여 전략의 최상의 매개 변수를 찾으려면 특정 전략으로 EA를 다시 작성하고 플레이하는 것이 좋습니다.
>> 알겠습니다. 쉬운 일은 아닐 겁니다...
적응형 EA의 개념과 구조상 최적화할 특정 전략과 파라미터가 없기 때문에 Strategy Tester에서 직접 파라미터를 최적화할 수 없습니다.
>> 예. EA는 전략에 대해 아직 최적화 된매개 변수로 작동하도록 이상화되어 있습니다. 제가 이해한 바에 따르면 시장이 어떻게 반응하는지에 따라 (또는 다른 관점에서 그 반대의 경우도 마찬가지입니다...) 다른 전략을 활용한다는 것입니다.
전략 테스터에서 거래 또는 테스트에 적응형 EA를 사용할 때 우리는 다양한 전략의 신호 집합으로 거래 시스템을 갖게됩니다. 즉, 테스터는 우리가 만든 가상 샌드박스에 액세스할 수 없으며 이에 대해 아무것도 알지 못합니다.
>> 이 개념을 이해했지만 완전히 이해하지는 못했습니다.
테스터가 가상 샌드박스와 상호 작용할 수 없고, 트레이딩 논리도 이해하지 못한다는 것을 이해합니다.
제 유일한 목표는 애드온과 함께 사용하기 위해 EA를 수정하는 것이었습니다. 다른 EA를 다시 작성하거나 모든 전략을 다시 작성하거나 각 전략을 개별적으로 테스트하지 않고 매개 변수 최적화를 위해서도이 EA를 사용하는 것이 목표였습니다. 제 아이디어는 동일한 EA 내에서 매개 변수를 최적화 할 수있는 가능성에 대한 "편안함"을위한 것이지만이 최적화는 가상 거래 / 적응 형 시스템에서 작동하도록 의도 된 것이 아닙니다. 동일한 EA 입력 창을 사용하여 전략의 매개 변수를 최적화 할 수있는 가능성을 갖는 것이지 각 전략에 대해 다른 각 EA를 작성하고 최적화 매개 변수를 가져 와서 적응 형 전략 시스템에 고정 값으로 넣는 것이 아닙니다. 제 요점을 이해하셨기를 바랍니다.
입력 매개 변수를 사용하여 사용할 거래 전략의 매개 변수를 구성하려면 파일을 사용하는 것이 더 좋으며 매개 변수와 거래 전략 목록을 구성 할 수 있습니다.
>> 어떤 파일에 대해 이야기하고 있습니까? ( 입력 매개 변수를 사용하여 사용할 거래 전략의 매개 변수를 구성하려면 파일을 사용하는 것이 좋습니다. )
아니면 각 전략에 대해 다른 개별 EA를 작성하고 최적화 한 다음 매개 변수를 CStrategyXXX.mqh에 고정 값으로 복사하는 것을 말하는 건가요?
Are you talking about to use CStrategyXXX.mqh or the fact to write another individual EA for each strategy, optimize it, and copy the parameters as fixed values in CStrategyXXX.mqh?
즉, 적응형 EA의 일부 설정에 따라 전략 컨테이너를 채울 수 있습니다.
예를 들어, Adaptive_Expert.Expert_OnInit()에서 적응형 EA 설정이 있는 파일을 로드할 수 있습니다:
MA;15
MA;25
Stoch;3;12;20
Stoch;3;15;30
Strategy1;Param1;Param2;
Strategy2;Param1;Param2;
각 줄을 구문 분석하여 포함해야 하는 전략을 인식하고 해당 매개변수를 지정하여 추가합니다. 이는 컴파일 없이 적응형 EA를 구성하는 방법 중 하나입니다. 단순화를 위해 기사에서는 고려하지 않았습니다.
테스터를 가상 샌드박스와 상호 작용하는 것은 의미가 없으며 거래 논리적 의미가 없다는 것을 이해합니다.
저의 유일한 목표는 다른 EA를 다시 작성하거나 모든 전략을 다시 작성하거나 각 전략을 개별적으로 테스트하지 않고 매개 변수 최적화를 위해이 EA를 사용하기 위해 애드온과 함께 사용하기 위해 EA를 수정하는 것이 었습니다. 제 아이디어는 동일한 EA 내에서 매개 변수를 최적화 할 수있는 가능성에 대한 "편안함"을위한 것이지만이 최적화는 가상 거래 / 적응 형 시스템에서 작동하도록 의도 된 것이 아닙니다. 동일한 EA 입력 창을 사용하여 전략의 매개 변수를 최적화 할 수있는 가능성을 갖는 것이지 각 전략에 대해 다른 각 EA를 작성하고 최적화 매개 변수를 가져 와서 적응 형 전략 시스템에 고정 값으로 넣는 것이 아닙니다. 제 요점을 이해하셨기를 바랍니다.
샌드박스를 살펴보는 방법이 있습니다. 전략 테스터를 사용하여 간접적으로 할 수 있습니다.
기사의 그림 2에 제시된 결과를 재현하고 싶다고 가정해 보겠습니다.
적응형 EA의 디버그 버전이 필요합니다 (샌드박스를 보고합니다) 다음으로 전략 테스터에서 Adaptive_Expert_Sample을 컴파일하여 열고 EURUSD H1 01.01.2010~20.08.2010을 선택한 후 테스트를 시작합니다. 샌드박스와 적응형 전략 결과는 tester\files\equity_res.txt에 저장됩니다. 이 방법을 사용하면 모든 수치를 매우 쉽게 재현할 수 있습니다.
가상 트레이딩 주식/잔고 분석을 통해 최적화를 단순화할 수 있습니다.
안녕하세요 여러분,
이 훌륭한 기사에 감사드립니다. 저는 현재 적응 형 EA 만 작업하고 있습니다.
그러나 이러한 종류의 EA에서 후행 중지 기능을 어디에 포함해야할지 잘 모르겠습니다.
CAdaptiveStrategy.mqh 부분에 이러한 기능을 추가 할 수 있다고 생각합니다.
누구든지 도움을 주실 수 있나요? 혹시 이미 그런 기능을 개발하신 분이 계신가요?
미리 감사드립니다!
감사합니다,
Patrick
문서에 나온 결과를 재현할 수 없습니다.
소스 파일을 다운로드하여 컴파일하고 동일한 기간(EURUSD H1, 2010/04/01~2010/08/2010)에 실행했는데 다른 결과가 나왔습니다.
디버그 파일을 사용하여 가상 거래 출력을 확인했는데 가상 주식 그래프는 동일하지만 실제 거래는 일치하지 않습니다.
실제 거래의 로그 파일이 없으면 내 거래가 기사의 거래와 일치하지 않는 이유를 찾기가 어렵습니다.
왜 일치하지 않는지 알 수 있을까요?