백 테스트 시 EA가 계속 마이너스 이익을 내는 이유는 무엇입니까? - 페이지 2

 
deVries :

코드를 다시 작성하고 테스트를 시도했으며 설정도 참조하십시오.

최고의 백테스트 데이터는 아니지만 올바르게 수행하면 수익성이 있을 수 있습니다.

전략 테스터 보고서
RSI_strategy_cyxstudio
AlpariUK-데모 - 마이크로+클래식(빌드 451)

상징 EURUSD(유로 vs 미국 달러)
기간 매일(D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
모델 모든 틱(사용 가능한 모든 최소 시간 프레임을 기반으로 한 가장 정확한 방법)
매개변수 RSIP 기간=3; 상한=90; 하한=5; MASlowPeriod=200; MAFastPeriod=5; 로트=0.1; 손절매 = 60; 테이크프로핏=120; TrailingStop=40; 매직넘버=54333; CommentEA="RSI 전략"; Slippage.Pips=3;
테스트 중인 바 1603 모델링된 진드기 40187739 모델링 품질 해당 없음
불일치 차트 오류 2062601
초기 보증금 3000.00
총 순이익 967.18 총 이익 2226.34 총 손실 -1259.16
이익 계수 1.77 예상 수익 13.62
절대 드로다운 107.10 최대 드로다운 327.47 (7.99%) 상대적인 하락 7.99% (327.47)
총 거래 71 숏포지션(원 %) 66 (69.70%) 롱 포지션(원 %) 5 (80.00%)
이익 거래(전체의 %) 50 (70.42%) 손실 거래(총 %) 21 (29.58%)
가장 큰 이익 거래 120.07 손실 무역 -60.00
평균 이익 거래 44.53 손실 무역 -59.96
최고 연속 우승(금전적 이익) 8 (424.26) 연속 손실 (돈 손실) 3 (-179.93)
최대 연속 이익(승수) 424.26 (8) 연속 손실(손실 횟수) -179.93 (3)
평균 연속 우승 4 연속 손실 2


와...?? 나는 다른 방법으로 적어도 7-10번을 썼고 그것은 어떤 포지션도 실행하지 않았거나 마이너스 이익을 냈습니다... 당신은 그것을 어떻게 했습니까????
 
RaptorUK :
그것은 내가 옳지 않은 것이 있다고 생각하게 만들 것입니다.


     if (BUYS< 1 && CurrentRSI < LowerBound && pAsk > MA200) 
        {     //Condition to execute buy entry  
         Ticket = OrderSend ( Symbol (), OP_BUY,......


// LowerBound=5


   if (SELLS< 1 && CurrentRSI > UpperBound && pBid > MA200) 
      {     //Condition to execute sell entry
       Ticket = OrderSend ( Symbol (), OP_SELL, Lots,......


// UpperBound=90
일반적으로 예이지만 이 경우에는 아니오, RSI에 대해 cyxstudio 가 선택한 설정으로 완료됩니다.
 
deVries :

코드를 다시 작성하고 테스트를 시도했으며 설정도 참조하십시오.

최고의 백테스트 데이터는 아니지만 올바르게 수행하면 수익성이 있을 수 있습니다.

전략 테스터 보고서
RSI_strategy_cyxstudio
AlpariUK-데모 - 마이크로+클래식(빌드 451)

상징 EURUSD(유로 vs 미국 달러)
기간 매일(D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
모델 모든 틱(사용 가능한 모든 최소 시간 프레임을 기반으로 한 가장 정확한 방법)
매개변수 RSIP 기간=3; 상한=90; 하한=5; MASlowPeriod=200; MAFastPeriod=5; 로트=0.1; 손절매 = 60; 테이크프로핏=120; TrailingStop=40; 매직넘버=54333; CommentEA="RSI 전략"; Slippage.Pips=3;
테스트 중인 바 1603 모델링된 진드기 40187739 모델링 품질 해당 없음
불일치 차트 오류 2062601
초기 보증금 3000.00
총 순이익 967.18 총 이익 2226.34 총 손실 -1259.16
이익 계수 1.77 예상 수익 13.62
절대 드로다운 107.10 최대 드로다운 327.47 (7.99%) 상대적인 하락 7.99% (327.47)
총 거래 71 숏포지션(원 %) 66 (69.70%) 롱 포지션(원 %) 5 (80.00%)
이익 거래(전체의 %) 50 (70.42%) 손실 거래(총 %) 21 (29.58%)
가장 큰 이익 거래 120.07 손실 무역 -60.00
평균 이익 거래 44.53 손실 무역 -59.96
최고 연속 우승(금전적 이익) 8 (424.26) 연속 손실 (돈 손실) 3 (-179.93)
최대 연속 이익(승수) 424.26 (8) 연속 손실(손실 횟수) -179.93 (3)
평균 연속 우승 4 연속 손실 2


당신의 코드를 볼 수 있게 해 주시겠습니까? 나는 그것을 공부하고 나의 실수로부터 배워야 한다.
 
deVries :
일반적으로 예이지만 이 경우에는 아니오, RSI에 대해 cyxstudio 가 선택한 설정으로 완료됩니다.
아 그래, 설명할 수 있다면 걱정할 이유가 없다 ;-)
 

상한 90 및 하한 10 사용

전략 테스터 보고서
RSI_strategy_cyxstudio
AlpariUK-데모 - 마이크로+클래식(빌드 451)

상징 EURUSD(유로 vs 미국 달러)
기간 매일(D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
모델 모든 틱(사용 가능한 모든 최소 시간 프레임을 기반으로 한 가장 정확한 방법)
매개변수 RSIP 기간=3; 상한=90; 하한=10; MASlowPeriod=200; MAFastPeriod=5; 로트=0.1; 손절매 = 60; 테이크프로핏=120; TrailingStop=40; 매직넘버=54333; CommentEA="RSI 전략"; Slippage.Pips=3;
테스트 중인 바 1603 모델링된 진드기 40187739 모델링 품질 해당 없음
불일치 차트 오류 2062601
초기 보증금 3000.00
총 순이익 782.62 총 이익 3062.38 총 손실 -2279.76
이익 계수 1.34 예상 수익 7.38
절대 드로다운 106.90 최대 드로다운 400.70 (9.90%) 상대적인 하락 9.90% (400.70)
총 거래 106 숏포지션(원 %) 66 (69.70%) 롱 포지션(원 %) 40 (55.00%)
이익 거래(전체의 %) 68 (64.15%) 손실 거래(총 %) 38 (35.85%)
가장 큰 이익 거래 120.07 손실 무역 -60.12
평균 이익 거래 45.04 손실 무역 -59.99
최고 연속 우승(금전적 이익) 8 (425.96) 연속 손실 (돈 손실) 4 (-240.12)
최대 연속 이익 (승수) 490.51 (6) 연속 손실(손실 횟수) -240.12 (4)
평균 연속 우승 연속 손실 2

어떻게 생겼어

 
cyxstudio :

당신의 코드를 볼 수 있게 해 주시겠습니까? 나는 그것을 공부하고 나의 실수로부터 배워야 한다.

이것이 시작이다.....

지금까지의 것과 다른 점에 대해 ..... 의견을 주십시오.

 //+------------------------------------------------------------------+
//|                                       RSI_strategy_cyxstudio.mq4 |
//|                                  Copyright 2013, Tjipke de Vries |
//|                                     https://forum.mql4.com/53695/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"


extern int RSIPeriod        =   3 ;       //number of periods for RSI
extern double UpperBound    =   90 ;     //set upper bound value for RSI
extern double LowerBound    =   5 ;       //set lower bound value for RSI
extern int MASlowPeriod     = 200 ;
extern int MAFastPeriod     = 5 ;
extern double Lots  = 0.1 ;
extern double StopLoss      = 60 ;       //Set the stop loss level
extern double TakeProfit    = 120 ;       //Set the take profit level
extern double TrailingStop = 40 ;
//extra settings for OrderSend
extern int         MagicNumber = 54333 ;
extern string      CommentEA = "RSI strategy" ;
extern int         Slippage.Pips    = 3 ;


int     BUYS= 1 ,SELLS= 1 ;
//++++ These are adjusted for 5 digit brokers.
int      pips2points;       // slippage  3 pips    3=points    30=points
double   pips2dbl;         // Stoploss 15 pips    0.015      0.0150
int      Digits .pips;       // DoubleToStr(dbl/pips2dbl, Digits.pips)
//---
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----   
   if ( Digits % 2 == 1 )   // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262
     {pips2dbl = Point * 10 ; pips2points = 10 ;   Digits .pips = 1 ;}
     else {pips2dbl = Point ;    pips2points =   1 ;   Digits .pips = 0 ;}
     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl        
//----      

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   int Ticket;
   double SL,TP;
   int Total;
   
   double pAsk = MarketInfo( Symbol (), MODE_ASK);
   double pBid = MarketInfo( Symbol (), MODE_BID);
   double MA200 = iMA ( NULL , 1440 , MASlowPeriod, 0 , MODE_SMA , PRICE_CLOSE , 0 );   //200 day Moving Average   
   double MA5 = iMA ( NULL , 1440 , MAFastPeriod, 0 , MODE_SMA , PRICE_CLOSE , 0 );       //  5 day Moving Average
   double CurrentRSI = iRSI ( NULL , 1440 , RSIPeriod, PRICE_CLOSE , 0 );
   
   
   if ( Bars < 100 )
     {
       Print ( "bars less than 100" );
       return ( 0 );  
     }
   
   if (AccountFreeMargin()<( 1000 *Lots))
        {
         Print ( "We have no money. Free Margin = " , AccountFreeMargin());
         return ( 0 );  
        }


   if ( OrdersTotal ()< 1 )
        {
         BUYS= 0 ;
         SELLS= 0 ;
        } 

그런 다음 https://www.mql5.com/en/forum/139654 에서 읽고 거래 확인을 카운트다운하는 루프를 만드십시오.

 
deVries :

이것이 시작이다.....

지금까지의 것과 다른 점에 대해 ..... 의견을 주십시오.

그런 다음 https://www.mql5.com/en/forum/139654 에서 읽고 거래 확인을 카운트다운하는 루프를 만드십시오.


완전하지...

나머지를 채우고 지금 테스트하려고합니다 ...

그건 그렇고 왜 사용하겠습니까 단순 Ask가 동일한 값을 반환할 수 있는 경우는 언제입니까?

 double pAsk = MarketInfo( Symbol (), MODE_ASK);  
 
cyxstudio :


완전하지...

나머지를 채우고 지금 테스트하려고합니다 ...

그건 그렇고 왜 당신은 사용합니까 간단한 Ask가 동일한 값을 반환할 수 있는 경우는 언제입니까?

Ask는 오래된 것일 수 있습니다. 위의 호출은 RefreshRates()를 호출할 필요 없이 최신입니다.
 

int BUYS=1,SELLS=1; 포지션이 열렸는지 여부를 나타내는 지표입니다.

내 자신의 스크립트를 추가하고 20일 동안 전략 테스터 로 테스트할 때 ... 아무 일도 일어나지 않았고 거래가 실행되지 않았습니다.

 
cyxstudio :

int BUYS=1,SELLS=1; 포지션이 열렸는지 여부를 나타내는 지표입니다.

내 자신의 스크립트를 추가하고 20일 동안 전략 테스터로 테스트할 때 ... 아무 일도 일어나지 않았고 거래가 실행되지 않았습니다.

Metatrader를 시작할 때 EA는 거래가 열려 있는지 확인해야 합니다.

거래가 있는 경우 거래를 확인 하기 위해 카운트다운 루프만 수행합니다.

처음에 하나를 설정하고 OrdersTotal() >0으로 설정하면 if(.......> || .......> ){루프를 수행합니다....