MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1300

 
ANDREY :

스프레드를 닫을 수 있습니다. 즉, 입찰 가격에 일부 가치를 추가할 수 있습니다. 하지만 이 값의 크기를 재봉하는 방법은 다음과 같습니다. 실제 틱에서 스프레드는 유동적입니다. 즉, 스프레드 값을 미리 알 수 없습니다. 따라서 실제 진드기에 꿰매는 것은 아마도 불가능합니다 ..... 내 전문적인 견해로는 보이지만 순전히 논리적입니다. 사전에 정확히 알려진 것만 꿰맬 수 있습니다.

메타 트레이더에 놀랐습니까? 나 갔어.. 이미 갔어. 제발....

<DATE> <TIME> <OPEN> <HIGH> <LOW> <CLOSE> <TICKVOL> <VOL> <SPREAD>
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

 
Александр :

메타 트레이더에 놀랐습니까? 나 갔어.. 이미 갔어. 제발....

<DATE> <TIME> <OPEN> <HIGH> <LOW> <CLOSE> <TICKVOL> <VOL> <SPREAD>
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

즉, 스프레드가 O이거나 스프레드 값이 단순히 표시되지 않습니다. 그리고 이것은 MT-4 또는 MT-5에 대한 데이터입니다. 그리고 이 데이터는 어떤 메뉴 항목에 있습니까?

스프레드 값이 있지만 어떤 이유로 표시되지 않는 경우 이 MT 글리치는 내 MT5의 글리치와 매우 유사합니다. Alpari는 히스토리의 깊이가 틱 따옴표의 품질에 어떤 영향도 미치지 않는다고 주장하며 내 문제가 터미널 자체에 숨겨져 있다고 믿고 개발자에게 문의하라고 조언합니다. 즉, 귀하의 예와 마찬가지로 2010년에 대한 기록 품질 값이 있지만 어떤 이유로 MT5에 표시되지 않습니다 .그리고 이것은 2010년에 2천만 틱이 있었던 것이 논리적입니다. 따라서 적어도 일부 기록 품질 값은 표시됩니다. 틱이 전혀 없거나 숫자가 너무 작은 경우(예: 1000) 기록 품질을 표시하지 않는 것이 이해할 수 있습니다.
 

안녕하세요.
뉴비를 주목해주세요.
컴파일할 때 오류나 경고는 없지만 EA는 테스터에서 주문을 열지 않습니다... 그리고 로그에는 오류가 없습니다...

이유는 무엇입니까? 아직 변경을 시도하지 않았습니다 ...

 extern double Lot= 0.1 ;            
extern int Slippage = 30 ;
extern int TakeProfit = 30 ;
extern int StopLoss   = 30 ;
extern int MA_Smoth_S = 60 ;
extern int MA_Smoth_B = 12 ;
extern int MA_Simpl_S = 3 ;
extern int MA_Simpl_B = 1 ;

int start()
         {
           int MA_Simpl_S_Op,      
              MA_Simpl_B_Op;      
                 
          MA_Smoth_S = iMA ( NULL , 0 ,MA_Smoth_S, 0 , MODE_SMMA , PRICE_CLOSE , 1 );
          MA_Smoth_B = iMA ( NULL , 0 ,MA_Smoth_B, 0 , MODE_SMMA , PRICE_CLOSE , 1 );
          MA_Simpl_S = iMA ( NULL , 0 ,MA_Simpl_S, 0 , MODE_SMA , PRICE_CLOSE , 1 );
          MA_Simpl_B = iMA ( NULL , 0 ,MA_Simpl_B, 0 , MODE_SMA , PRICE_CLOSE , 1 );
          MA_Simpl_S_Op = iMA ( NULL , 0 ,MA_Simpl_S, 0 , MODE_SMA , PRICE_CLOSE , 2 );
          MA_Simpl_B_Op = iMA ( NULL , 0 ,MA_Simpl_B, 0 , MODE_SMA , PRICE_CLOSE , 2 );
          
           //Условие для Buy______________________
           while (MA_Smoth_B > MA_Smoth_S)
               {
                 if (MA_Simpl_B_Op < MA_Simpl_S_Op && MA_Simpl_B > MA_Simpl_S)
                  {
                   bool check = OrderSend ( Symbol (),OP_BUY,Lot, NormalizeDouble (Ask, Digits ),Slippage,Bid-StopLoss* Point ,Ask+TakeProfit* Point , "Buy" , 0 , 0 , clrGreen );
                   return ( 0 );
                  }
               }
               
           //Условия для Sell_____________________
           while (MA_Smoth_S > MA_Smoth_B)
               {
                 if (MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
                  {
                   check = OrderSend ( Symbol (),OP_SELL,Lot, NormalizeDouble (Bid, Digits ),Slippage,Ask+StopLoss* Point ,Bid-TakeProfit* Point , "Sell" , 0 , 0 , clrRed );
                   return ( 0 );
                  }   
               }     
           return ( 0 );
         }
 
IndependentMK :

안녕하세요.
뉴비를 주목해주세요.
컴파일할 때 오류나 경고는 없지만 EA는 테스터에서 주문을 열지 않습니다... 그리고 로그에는 오류가 없습니다...

이유는 무엇입니까? 아직 변경을 시도하지 않았습니다 ...

 int X = 5 ;
if (X > 10 && X < 3 )   int ticket = OrderSend ( Symbol (), OP_SELL, Доп_Лот, NormalizeDouble (Bid, Digits ), 3 ,   NormalizeDouble (Ask + StopLoss_S * Point , Digits ),   NormalizeDouble (Bid - TakeProfit_S * Point , Digits ), "" , MAGIC_S, 0 , CLR_NONE);
 

당신은 어떻게 생각하십니까? 테스터가 포지션을 열 까요? 아니요. 왜냐하면 X가 범위를 벗어났습니다. 그래서. Print를 코드에 삽입하고 테스터의 로그를 분석합니다.

 int start()
  {
   int MA_Simpl_S_Op,
       MA_Simpl_B_Op;
   MA_Smoth_S = iMA ( NULL , 0 , MA_Smoth_S, 0 , MODE_SMMA , PRICE_CLOSE , 1 );
   MA_Smoth_B = iMA ( NULL , 0 , MA_Smoth_B, 0 , MODE_SMMA , PRICE_CLOSE , 1 );
   MA_Simpl_S = iMA ( NULL , 0 , MA_Simpl_S, 0 , MODE_SMA , PRICE_CLOSE , 1 );
   MA_Simpl_B = iMA ( NULL , 0 , MA_Simpl_B, 0 , MODE_SMA , PRICE_CLOSE , 1 );
   MA_Simpl_S_Op = iMA ( NULL , 0 , MA_Simpl_S, 0 , MODE_SMA , PRICE_CLOSE , 2 );
   MA_Simpl_B_Op = iMA ( NULL , 0 , MA_Simpl_B, 0 , MODE_SMA , PRICE_CLOSE , 2 );
//Условие для Buy______________________
   Print ( " MA_Smoth_B = " , MA_Smoth_B, " MA_Smoth_B = " , MA_Smoth_B);
   while (MA_Smoth_B > MA_Smoth_S)
     {
       Print ( " MA_Simpl_B_Op = " , MA_Simpl_B_Op, " MA_Simpl_S_Op = " , MA_Simpl_S_Op);
       if (MA_Simpl_B_Op < MA_Simpl_S_Op)
        {
         Print ( " MA_Simpl_B = " , MA_Simpl_B, " MA_Simpl_S = " , MA_Simpl_S);
         if (MA_Simpl_B > MA_Simpl_S)
           {
             bool check = OrderSend ( Symbol (), OP_BUY, Lot, NormalizeDouble (Ask, Digits ), Slippage, Bid - StopLoss * Point , Ask + TakeProfit * Point , "Buy" , 0 , 0 , clrGreen );
             return ( 0 );
           }
        }
     }
//Условия для Sell_____________________
   while (MA_Smoth_S > MA_Smoth_B)
     {
       if (MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
        {
         bool check = OrderSend ( Symbol (), OP_SELL, Lot, NormalizeDouble (Bid, Digits ), Slippage, Ask + StopLoss * Point , Bid - TakeProfit * Point , "Sell" , 0 , 0 , clrRed );
         return ( 0 );
        }
     }
   return ( 0 );
  }
//+------------------------------------------------------------------+
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
ANDREY :

즉, 스프레드가 O이거나 스프레드 값이 단순히 표시되지 않습니다. 그리고 이것은 MT-4 또는 MT-5에 대한 데이터입니다. 그리고 이 데이터는 어떤 메뉴 항목에 있습니까?

스프레드 값이 있지만 어떤 이유로 표시되지 않는 경우 이 MT 글리치는 내 MT5의 글리치와 매우 유사합니다. Alpari는 히스토리의 깊이가 틱 따옴표의 품질에 어떤 영향도 미치지 않는다고 주장하며 내 문제가 터미널 자체에 숨겨져 있다고 믿고 개발자에게 문의하라고 조언합니다. 즉, 귀하의 예와 마찬가지로 2010년에 대한 기록 품질 값이 있지만 어떤 이유로 MT5에 표시되지 않습니다 .그리고 이것은 2010년에 2천만 틱이 있었던 것이 논리적입니다. 따라서 적어도 일부 기록 품질 값은 표시됩니다. 틱이 전혀 없거나 숫자가 너무 작은 경우(예: 1000) 기록 품질을 표시하지 않는 것이 이해할 수 있습니다.

다음은 MT4 견적입니다.

2007.02.12, 00:00, 0.9051, 0.9087, 0.9047, 0.907, 3739

MT5입니다
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

차이를 느껴보세요... 오래전에 틱과 함께 일하는 것을 중단했습니다. 그래서 다양한 "편의/장난"으로 싸울 힘이 부족합니다.

동일한 고문을 다른 DC에 배치합니다. 진드기에 문제가 무엇입니까? Open시에도 Open과 Closing이 동시에 가능합니다. 차이점은 엄청납니다... 누군가가 이 문제(진드기 등)를 해결했을 수도 있지만 어떻게 처리해야 할지 모르겠습니다. 그리고 MT5에는 스프레드도 있습니다...

 
Александр :

다음은 MT4 견적입니다.

2007.02.12, 00:00, 0.9051, 0.9087, 0.9047, 0.907, 3739

여기는 MT5
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

차이를 느껴보세요... 오래전에 틱과 함께 일하는 것을 중단했습니다. 그래서 다양한 "편의/장난"으로 싸울 힘이 부족합니다.

동일한 고문을 다른 DC에 배치합니다. 진드기에 무슨 문제가 있습니까? Open시에도 Open과 Closing이 동시에 가능합니다. 차이점은 엄청납니다... 누군가가 이 문제(진드기 등)를 해결했을 수도 있지만 어떻게 처리해야 할지 모르겠습니다. 그리고 MT5에는 스프레드도 있습니다...

물론, 당신은 이 모든 문제에서 나보다 더 앞서 있습니다.
예를 들어, MT4에서 내 코드를 테스트했습니다. 모든 TICK를 시뮬레이션할 때 코드는 매우 좋은 결과를 보여주었습니다... 그런 다음 MT-4가 실제를 고려하지 않기 때문에 내 아주 좋은 결과가 완전히 정확하지 않다는 것을 알았습니다. 그리고 Alpari에서 MT4의 실제 스프레드는 떠다니기 때문에(특히 밤에) 고려할 수 없습니다. 그리고 내 Expert Advisor는 22에서 1로 가장 좋은 결과를 보여주었습니다.

이 포럼에서 테스트할 때 실제(즉, 부동) 스프레드는 MT5에서만 고려된다고 들었습니다. 이로 인해 MT-5를 연구하고 모델에서 코드를 실행하게 되었습니다. 각 틱은 실제 틱을 기반으로 합니다. 그 후, 내 코드가 더 이상 MT4에서와 같은 좋은 결과를 보여주지 않았기 때문에 정신이 없었습니다. 한편, MT4에 있던 코드의 일부 긍정적인 측면은 MT5에서도 확인되었습니다. 그리고 테스트 결과가 실제 거래에 최대한 가깝도록 코드를 계속 개선할 수 있어 기뻤습니다.

이를 바탕으로 나는 틱 기록에 대한 백 테스팅에 대한 귀하의 부정적인 태도(지식과 경험 부족으로 인해)를 잘 이해하지 못합니다. 결국 , Close(귀하의 것과 같은)가 아니라 주문 개설 요청에 표시된 가격(나와 같은)으로 거래를 열면 틱 테스트의 단점은 무엇 입니까?
내가 보기에 가능한 단점은 불완전한 틱 세트와 로드된 따옴표의 누락일 수 있습니다. 하지만 분초의 수에 비해 틱의 수는 엄청나다. 그리고 나는 누락된 틱(예: 양초)을 감지하고 틱 파일에 추가할 수 있는지 여부에 대한 질문을 아직 연구하지 않았습니다. 따라서 당분간은 2001년으로 거슬러 올라가는 전체 틱 기록이 있다는 Alpari의 보증을 믿어야 합니다.
그리고 나는 여전히 차이점이 무엇인지 이해하지 못합니다. 당신이 당신의 아이디어 중 일부를 보여주기 위해 가져온 양초의 매개 변수를 볼 때 느낄 것입니다.

다른 브로커에서 내 Expert Advisor를 테스트하고 싶지 않습니다. 왜냐하면 실생활에서 감히 거래하려면 Alpari에서만 가능하기 때문입니다. 또한, 당신은 자신이 가장 완전하고 신뢰할 수있는 진드기 데이터를 가지고 있다고 말했습니다.

나는 당신이 나에게 귀중한 정보를 가지고 있다고 확신합니다. 불행히도 나는 아직 당신의 말에서 알아낼 수 없습니다.

Тестирование торговых стратегий на реальных тиках
Тестирование торговых стратегий на реальных тиках
  • www.mql5.com
В данной статье мы покажем результаты тестирования простой торговой стратегии в 3-х режимах: " OHLC на M1 " с использованием только цен Open,High, Low и Close минутных баров; затем детальное моделирование в режиме " Все тики ", и самое достоверное тестирование в режиме " Каждый тик на основе реальных тиков " с использованием записанных тиков из...
 
ANDREY :


틱 기록에 대한 백테스팅에 대한 부정적인 태도. 결국 , Close(귀하의 것과 같은)가 아니라 주문 개설 요청에 표시된 가격(나와 같은)으로 거래를 열면 틱 테스트의 단점은 무엇 입니까?

그리고 나는 여전히 차이점이 무엇인지 이해하지 못합니다. 당신이 당신의 아이디어 중 일부를 보여주기 위해 가져온 양초의 매개 변수를 볼 때 느낄 것입니다.

다른 브로커에서 내 Expert Advisor를 테스트하고 싶지 않습니다. 왜냐하면 실생활에서 감히 거래하려면 Alpari에서만 가능하기 때문입니다. 또한, 당신은 자신이 가장 완전하고 신뢰할 수있는 진드기 데이터를 가지고 있다고 말했습니다.

나는 당신이 나에게 귀중한 정보를 가지고 있다고 확신합니다. 불행히도 나는 아직 당신의 말에서 알아낼 수 없습니다.

1. 부정적인 태도... 아니, 부정적인 것이 아니다. 당신이 달성하고 테스트가 끝날 때까지 몇 주 동안 기다렸다가 따옴표가 충분하지 않고 결과에 큰 영향을 미친다는 것이 밝혀졌습니다. 모든 DC FILTER 따옴표. 필터는 그것들을 왜곡합니다. 나는 견적의 질에 중요하지 않은 Expert Advisor를 작성하는 길을 택했습니다.

2. MT4와 MT5 견적의 차이점은 MT5에는 모든 양초에 대한 스프레드가 있다는 것부터 시작했습니다. 왜 그래? 모르겠어. 오프라인에서 이 스프레드는 최대입니다. 온라인 산책. 즉, 크리티컬하지 않은 시스템을 만드는 것이 필요하다. 항목 1을 참조하십시오. G).

사실 그게 다야. 자막이 없습니다.

 
Александр :

1. 부정적인 태도... 아니요, 부정적인 것이 아닙니다. 당신이 달성하고 테스트가 끝날 때까지 몇 주 동안 기다렸다가 따옴표가 충분하지 않고 결과에 큰 영향을 미친다는 것이 밝혀졌습니다. 모든 DC FILTER 따옴표. 필터는 그것들을 왜곡합니다. 나는 견적의 질에 중요하지 않은 Expert Advisor를 작성하는 길을 택했습니다.

2. MT4와 MT5 견적의 차이점은 MT5에는 모든 양초에 대한 스프레드가 있다는 것부터 시작했습니다. 왜 그래? 모르겠어. 오프라인에서 이 스프레드는 최대입니다. 온라인 산책. 즉, 크리티컬하지 않은 시스템을 만드는 것이 필요하다. 항목 1을 참조하십시오. G).

사실 그게 다야. 자막이 없습니다.

" ....... 그리고 나서 따옴표가 충분하지 않고 결과에 큰 영향을 미친다는 것이 밝혀졌습니다. 모든 DC FILTER 따옴표. 필터가 이를 왜곡합니다. ...."


테스트를 위해 Alpari 서버에서 MT5로 자동 다운로드된 일부 쌍에 대한 2008년 틱 실제 따옴표가 있다고 가정해 보겠습니다. 견적 데이터가 충분하지 않다고 판단하는 방법은 무엇입니까? 일반적으로 견적의 품질을 어떤 기준으로 평가합니까? 실제 진드기 에는 어떤 특성이 있어야 한다고 생각합니까?   최적의 품질 견적?
결국 Alpari에 따르면 실제 따옴표 는 모델링되거나 생성되지 않고 기록된 기록에서 가져옵니다. 내가 이해하는 한 .... 다른 틱이 견적을 가져왔습니다 - 이 견적이 포함된 Alpari 틱이 수정되어 기록되었습니다. 그리고 모든 틱 과 함께. 결과적으로 그들은 가격이 포함된 거대한 틱 데이터베이스를 축적하고 테스트를 위해 MT5에 업로드합니다. 그리고 어떤 이유로 필요한 견적이나 시퀀스가 없는 경우에만 Alpari가 가격이 포함된 실제 틱을 누락하는 대신 이러한 틱이 실제 틱의 모양에 최대한 가까운 알고리즘에 따라 모델링됩니다.

따라서 견적의 품질에 대해 어떤 주장을 할 수 있는지 잘 모르겠습니다. 또는 틱이 와서 가격을 가져왔다고 상상할 수 있습니다(예: 1.00061). 그리고 Alpari는 이 틱에 다른 가격을 할당했습니다(예: 1.00077). 또는 실제로 있었던 것이 아닌 이 진드기에 스프레드를 첨부할 수 있습니다. 그러나 이것이 사실이라면 외부인은 특히 깊은 역사에서 이러한 대체를 감지할 수 없습니다. 따라서 Alpari가 인용문으로 이 진드기를 걸러냈다고 주장하는 것은 확실히 가능합니다. 그러나 이것을 증명하는 것은 거의 불가능하다고 생각합니다. 해당 Alpari 전문가 외에는 필터링된 틱의 기본 가격이나 스프레드가 무엇인지 아무도 모르기 때문입니다. 유일한 옵션은 이 전문가가 이 비밀을 누군가에게 공개하고 문서로 이 사실을 확인할 수도 있는 것입니다. 그러나 문서 증거가 있는 이 정보가 이 포럼에 즉시 나타날 것 같습니다.


"... 모든 DC는 FILTER 인용문을 인용합니다. 필터는 그것을 왜곡합니다....."


나는 이것에 대해 여러 번 읽었습니다. 그러나 이 필터링은 실제 거래와 관련이 있습니다. 그리고 그러한 필터링은 DC에 편리한 것 같습니다. DC가 시장에 가져오지 않은 경우 매우 많은 양의 많은 포지션이 이익을 취하여 마감될 수 있다면 그것으로 그들은 큰 손실을 피할 수 있습니다. 테스트용 견적을 제공할 때 필터링의 요점은 무엇입니까?

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха,  ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
 

손실 로 포지션 을 청산할 때 x2 계수를 얻는 방법을 알려주세요.

이제 1,4,9,16을 얻었지만 2,4,8,16이 필요합니다.

코드에서 수정해야 할 사항은 무엇입니까?

 int cn= 0 ,c= 0 ;
   datetime dt= 0 ;
   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--){
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) && OrderType()<= 1 ) {
     if ((OrderSymbol()==mSymbol)&&(OrderMagicNumber()==Magic)) {
       double Profit=OrderProfit()+OrderCommission()+OrderSwap();
         if (Profit< 0 ) {  
        c++;   
        cn= ( int ) MathPow (c, 2 ) ; // что здесь исправить?
        } else break ;     
 }}}
   Comment (cn);
 
Denis Pershin :

손실 로 포지션 을 청산할 때 x2 계수를 얻는 방법을 알려주세요.

이제 1,4,9,16을 얻었지만 2,4,8,16이 필요합니다.

코드에서 수정해야 할 사항은 무엇입니까?

모든 것을 고쳐야 한다

코드는 주어진 기호와 주어진 마법을 사용하여 주문 내역에서 사용 가능한 첫 번째 주문을 검색합니다.

그런 다음 발견된 수익성 없는 주문의 수를 계산하고 이 주문의 수를 2의 거듭제곱으로 올립니다.

포럼 " KIM의 유용한 기능 "을 검색하고 다음과 같이 자신을 조립하십시오.

- 우리의 상징과 우리의 마법으로 라스트 오더의 티켓을 찾으십시오.

- 찾은 티켓에 대해 OrderProfit() 및 OrderLots()를 가져오고 필요한 경우 마틴게일 계수를 곱합니다.

추신: 기성품 솔루션이 있을 수 있습니다.

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
사유: