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

 
danya-asg :

나는 내 실수를 깨달았지만 그것을 해결하는 방법을 이해하지 못했습니다. 작업은 일반적으로 1초마다 시작되지만 현재 촛불의 시작 부분부터 시간을 올바르게 계산하지 않습니다.

Seconds() 함수 는 마지막으로 알려진 틱의 데이터에 따라 초를 제공하며 틱이 없더라도 분 촛불이 열린 순간 부터 함수 가 호출된 순간까지의 실제 시간(초)을 어떻게든 계산해야 합니다. 마지막 몇 초 동안 전혀.

TimeSeconds (TimeLocal() ) 또는 ( TimeLocal() - Time[0]) 도 작동 하지 않습니다. 컴퓨터의 현지 시간은 서버와 몇 초 정도 다를 수 있습니다. 문제를 해결하는 방법?


매초마다 OnTimer()가 실행되고,

 void OnTimer ()
{
OnTick (); //-- старт каждую секунду
}
 
Alekseu Fedotov :


매초마다 OnTimer()가 실행되고,


시작하려면 프로그램의 올바른 작동을 위해서만 1초마다 서버 시간 을 표시해야 하며 여기에서는 이미 다음 틱이 왔는지 여부에 따라 다릅니다. 안 오면 온타이머가 시작됐는데 시간이 계속 늦어지는 게 문제다.
 

지금까지 내가 생각해 낸 유일한 것이지만 어떻게 든 비뚤어진 것입니다.

 int sek
void OnTick ()
{
if ( Seconds () > sek)
sek = Seconds ();
Clicker (); //-- старт каждый тик
}
void OnTimer ()
{
sek = TimeSeconds ( TimeLocal ());
Clicker (); //-- старт каждую секунду
}

그리고 이를 위해 10분마다 컴퓨터에 시간 동기화를 설정해야 했습니다.

 
danya-asg :

지금까지 내가 생각해 낸 유일한 것이지만 어떻게 든 비뚤어진 것입니다.

그리고 이를 위해 10분마다 컴퓨터에 시간 동기화를 설정해야 했습니다.


100-200ms 의 밀리초 타이머 를 만들고 완전히 작동해야 합니다.
초가 너무 길어 자주 건너뜁니다.

 EventSetMillisecondTimer ( 200 );
GetTickCount ();
 

그 내용의 맨 아래에 도달하기 위해 무엇을 읽기 시작해야 하는지 알려주세요. 처음에 무엇을 해야 하는지, 중간에, 마지막에 무엇을 입력해야 하는지 전혀 명확하지 않습니다. 작업은 칠면조에 올빼미를 만들고 진입 후 2 개의 양초에 대한 중지를 드래그하는 것입니다. 거래가 현재 추세와 반대되는 경우 거래를 닫고 같은 방식으로 중지를 반전하여 반전에서 엽니다. 하나 이상의 비디오 표준을 찾을 수 없으며 상수 20 및 80을 시작 및 종료 지점으로 만드는 방법을 모릅니다. 글쎄, 또한 격차를 없애기 위해 금요일에 거래를 마감하고 월요일에 여는 기능을 추가하십시오. 이 사건이 왜 그렇게 복잡합니까? 4개의 매개변수를 지정하고 날짜를 추가하면 되는 것 같습니다.저는 2년 동안 주식 시장에 있었고 그러한 차량이 병합되지 않을 가능성이 가장 높다고 말할 수 있습니다

파일:
f9h46khtl1.png  29 kb
 
novikov433 :

그 내용의 맨 아래에 도달하기 위해 무엇을 읽기 시작해야 하는지 알려주세요. 처음에 무엇을 해야 하는지, 중간에, 마지막에 무엇을 입력해야 하는지 전혀 명확하지 않습니다. 작업은 칠면조에 올빼미를 만들고 진입 후 2 개의 양초에 대한 중지를 드래그하는 것입니다. 거래가 현재 추세와 반대되는 경우 거래를 닫고 같은 방식으로 중지를 반전하여 반전에서 엽니다. 하나 이상의 비디오 표준을 찾을 수 없으며 상수 20 및 80을 시작 및 종료 지점으로 만드는 방법을 모릅니다. 글쎄, 또한 격차를 없애기 위해 금요일에 거래를 마감하고 월요일에 여는 기능을 추가하십시오. 이 사건이 왜 그렇게 복잡합니까? 4개의 매개변수를 지정하고 날짜를 추가하면 되는 것 같습니다.저는 2년 동안 주식 시장에 있었고 그러한 차량이 병합되지 않을 가능성이 가장 높다고 말할 수 있습니다

술취한 멍청이를 용서하세요... 하지만 이 말을 할게요. "이러한 차량이 배수되지 않을 것"이라고 확신하는 경우 수동으로 20달러를 벌고 이 고문을 프리랜서로 주문하는 데 방해가 되는 이유는 무엇입니까? 나는 당신에게 확신합니다. 그곳의 존경하는 사람들 대부분은 이 TS를 배포하지 않을 것이며, 더군다나 그 고문은 어디에도 없을 것입니다 ...
 
Alexey Viktorov :
술취한 멍청이를 용서하세요... 하지만 이 말을 할게요. "이러한 차량이 배수되지 않을 것"이라고 확신하는 경우 수동으로 20달러를 벌고 이 고문을 프리랜서로 주문하는 데 방해가 되는 이유는 무엇입니까? 나는 당신에게 확신합니다. 그곳의 존경하는 사람들 대부분은 이 TS를 배포하지 않을 것이며, 더군다나 그 고문은 어디에도 없을 것입니다 ...

어드바이저를 직접 만드는 방법을 이해하는 방법을 배우고 싶습니다. 아니면 향후 시장이 바뀔 수도 있고, 예를 들어 알고리즘을 약간 변경하려면 다시 초과 지불해야 합니까? 음, 사실, TS는 고갈되지 않을 것입니다. 왜냐하면 수익성이 없는 주문이 손익분기점으로 이전되고 추세를 기다려야 하기 때문입니다.

일종의 올빼미 생성자에서 ts를 만드는 것이 정말로 가능합니까? 스스로 하는 방법에 대한 가장 기본적인 이해만 하고 지정된 장소에서 정차하거나 특정 날짜에 거래를 주문하는 것과 같은 일부 기능을 이미 추가하고 추가할 것입니다.

생성자에서도 1,2,3 등을 수행해야 하는 두뇌가 요리하지 않는 것 그리고 왜 가장 중요한 것은 mql 4 교육을 수행하는 화살표와 이 순서로 모든 것을 연결하는 것입니다. 인터넷 전투기가 정확히 왜 이런 일이 발생하는지 설명할 것이 전혀 없는 과정을 만드는 방법이 아니라, 즉, 자신이 새로운 것을 하지 않을 것이지만 단순히 코드를 복사해야 하는 것입니다. .. 그들은 어떤 순서가 책임이 있는지 알고 무작위로 찌르지 않았습니다. 내 임무는 다른 것에 있습니다. 필요한 필터를 다운로드하고 추세 형성의 본질을 이해하는 것입니다. 도와 주셔서 감사합니다!

 
novikov433 :

어드바이저를 직접 만드는 방법을 이해하는 방법을 배우고 싶습니다. 아니면 향후 시장이 바뀔 수도 있고, 예를 들어 알고리즘을 약간 변경하려면 다시 초과 지불해야 합니까? 음, 사실, TS는 고갈되지 않을 것입니다. 왜냐하면 수익성이 없는 주문이 손익분기점으로 이전되고 추세를 기다려야 하기 때문입니다.

일종의 올빼미 생성자에서 ts를 만드는 것이 정말로 가능합니까? 스스로 하는 방법에 대한 가장 기본적인 이해만 하고 지정된 장소에서 정차하거나 특정 날짜에 거래를 주문하는 것과 같은 일부 기능을 이미 추가하고 추가할 사항

자동 전화 교환을 위한 기술 사양을 작성하고 기술 사양에 모든 회선이 주석 처리되어 있음을 표시하는 것이 현실적입니다. 조금 더 지불하십시오. 코드를 작성하고 변경 사항을 관찰하면 자가 학습이 시작됩니다.
 
novikov433 : ... 저는 ... Expert Advisor를 만드는 방법을 이해하고 싶습니다 ... 글쎄, TS는 실제로 병합되지 않습니다. 왜냐하면 수익성이 없는 주문은 손익분기점으로 이전되고 추세를 기다려야 하기 때문입니다.
친애하는 novikov433 !!! 프로그래밍을 가르치거나 무료 고문을 쓰거나 둘 다 !!! 그 대가 로 주문 손실이 손익분기점으로 전환되는 방법을 가르쳐 주십시오. 간단한 예시로 가능합니다. 나는 아내에게 주문(주문)을 합니다. 이른 아침에 시장에서 감자 한 통을 사고, 10시(기본 분석)까지 가격이 상승하여 판매합니다. 그러나 때로는 9시 반에 (뉴스) 감자 차를 가져옵니다. 그리고 (뉴스에서) 가격이 즉시 하락하고 하루가 끝날 때까지 또는 일주일 내내 하락합니다. 나는 StopLoss를 넣었습니다-가격이 10 루블 감소하면 가능한 한 즉시 (시장 가격으로) 판매하십시오. 손실을 제거하기 위해 순서를 변경하는 방법. 이 옵션이 흥미롭다면 비누를 개인적으로 작성하십시오.
 
안녕하세요. 테스터에서 테스트하는 동안 하나의 오류를 처리하도록 도와주세요. 모든 틱에 대해 테스트하는 동안 EA는 첫 번째 바이스톱 거래를 열며 조건이 통과하지 않고 삭제합니다. 두 번째 Sellstop이 열리고 시장으로 전환되고 조건이 작동하지 않더라도 닫힙니다. 로그의 다음 항목은 buy2, orderclose 기능 에 대한 알 수 없는 티켓을 닫으려는 시도입니다. 직장에서 부정확할 수 있기 때문에 나는 메모리에서 코드를 적용합니다. 주문 파괴 블록은 정상입니다
Symb= Symbol ();                               
   Total= 0 ;                                     
   for ( int i= 1 ; i<= OrdersTotal (); i++)          
     {
       if ( OrderSelect (i- 1 , SELECT_BY_POS )== true ) 
        {                                       
         if ( OrderSymbol ()!=Symb) continue ;      
         if ( OrderType ()> 1 ) continue ;
         if ( OrderType <= 1 )                     
            {
             Total++;                               
             if (Total> 1 )                           
               {
                Alert ( "Несколько рыночных ордеров. Эксперт не работает." );
                return ;                             
               }
             Ticket= OrderTicket ();                  
             Tip   = OrderType ();                    
             Price = OrderOpenPrice ();               
             SL    = OrderStopLoss ();                
             TP    = OrderTakeProfit ();              
             Lot   = OrderLots ();                    
            }
        }

닫는 블록도 특정 질문을 제기하지 않는 것 같으며 조건은 단순화된 것으로 나타났습니다.

 while ( true )                                  
     {
       if (Tip== 0 && Cls_B== true )                
        {                                       
         Alert ( "Попытка закрыть Buy " ,Ticket);
         RefreshRates ();                        
         Ans= OrderClose (Ticket,Lot, Bid , 2 );      
         if (Ans== true )                         
           {
             Alert ( "Закрыт ордер Buy " ,Ticket);
             break ;                              
           }
         return ;                                
        }
 
       if (Tip== 1 && Cls_S== true )                
        {                                       
         Alert ( "Попытка закрыть Sell " ,Ticket);
         RefreshRates ();                        
         Ans= OrderClose (Ticket,Lot, Ask , 2 );      
         if (Ans== true )                         
           {
             Alert ( "Закрыт ордер Sell " ,Ticket);
             break ;                               // Выход из цикла закр
           }
         return ;                                 // Выход из start()
        }
       break ;                                     // Выход из while
     }

나는 매우 감사할 것입니다.