초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 832

 
void OnTick ()
  {
 TimeCurrent (dt); 
//--- Достаточно ли количество баров для работы
   if ( Bars ( _Symbol , _Period )< 10 ) // общее количество баров на графике меньше 10?
     {
       Alert ( "На графике меньше 10 баров, советник не будет работать!!" );
       return ;
     }
//--- сначала нужно записать в массивы значения буферов индиктора Fractal
//--- заполнение данными буфера

   ArraySetAsSeries (Signal, true );
   ArraySetAsSeries (Main, true );

   
   if ( CopyBuffer (Stochastic_handle, 0 , 0 , 100 ,Main)<= 0 ) return ;
   if ( CopyBuffer (Stochastic_handle, 1 , 0 , 100 ,Signal)<= 0 ) return ;

   double Main_1=Main[ 1 ];
   Main_1= NormalizeDouble (Main_1, 5 );
   Print ( "Main_1=" , DoubleToString (Main_1, 5 ));
    
   double Main_2=Main[ 2 ];
   Main_2= NormalizeDouble (Main_2, 5 );
   
   double Main_3=Main[ 3 ];
   Main_3= NormalizeDouble (Main_3, 5 );
   
   double Signal_1=Signal[ 1 ];
   Signal_1= NormalizeDouble (Signal_1, 5 );
   Print ( "Signal_1=" , DoubleToString (Signal_1, 5 ));
   
   double Signal_2=Signal[ 2 ];
   Signal_2= NormalizeDouble (Signal_2, 5 );
   
   double Signal_3=Signal[ 3 ];
   Signal_3= NormalizeDouble (Signal_3, 5 );
   
   
// Для сохранения значения времени бара мы используем static-переменную Old_Time.
// При каждом выполнении функции OnTick мы будем сравнивать время текущего бара с сохраненным временем.
// Если они не равны, это означает, что начал строится новый бар.

   static datetime Old_Time;
   datetime New_Time[ 1 ];
   bool IsNewBar= false ;

// копируем время текущего бара в элемент New_Time[0]
   int copied= CopyTime ( _Symbol , _Period , 0 , 1 ,New_Time);
   if (copied> 0 ) // ok, успешно скопировано
     {
       if (Old_Time!=New_Time[ 0 ]) // если старое время не равно
        {
         IsNewBar= true ;   // новый бар
         if ( MQL5InfoInteger ( MQL5_DEBUGGING )) Print ( "Новый бар" ,New_Time[ 0 ], "старый бар" ,Old_Time);
         Old_Time=New_Time[ 0 ];   // сохраняем время бара
        }
     }
   else
     {
       Alert ( "Ошибка копирования времени, номер ошибки =" , GetLastError ());
       ResetLastError ();
       return ;
     }
     
     
// открытие покупок

     if (Main_1>Signal_1&&Main_2<Signal_2&&Main_3<Signal_3&&Main_2< 20 )
     {
       if (IsNewBar!= false )
        {
           
              {
               open_by_market();

              }
        }
     }
  

   // закрытие покупок 
 
   if (Signal_3> 80 &&Signal_2> 80 &&Signal_1< 80 )
   {
   if ( PositionsTotal ()> 0 )
        {
         for ( int i= 0 ;i< PositionsTotal ();i++)
           {
             ulong orders_ticket= PositionGetTicket (i);
             if ((( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY ) ))
              
              
              {  trade.PositionClose(orders_ticket); }        
            
         }
     }           
   }
 
}
   

좋은 오후에요. 두 가지 작업을 구현하는 방법을 지정하십시오(구매 신호의 예에서).

주어진: 진입점 - 20 미만의 확률적 선의 교차점

거래 성사 - 느린 스토캐스틱 라인으로 위에서 아래로 레벨 80 교차

1과제. 그래서 오픈 포지션 으로 가격이 특정 델타를 넘어설 때 새로운 거래가 열릴 것입니다. 첨부된 그림과 같은 수준에서 여러 위치를 열지 마십시오.

2과제. 클로저가 첫 번째가 아니라 두 번째에 있으므로 느린 확률적 선에 의해 위에서 아래로 레벨 80이 교차합니다.

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
파일:
121.png  27 kb
 
gastinets :

좋은 오후에요. 두 가지 작업을 구현하는 방법을 지정하십시오(구매 신호의 예에서).

주어진: 진입점 - 20 미만의 확률적 선의 교차점

거래 성사 - 느린 스토캐스틱 라인으로 위에서 아래로 레벨 80 교차

1과제. 그래서 오픈 포지션 으로 가격이 특정 델타를 넘어설 때 새로운 거래가 열릴 것입니다. 첨부된 그림과 같은 수준에서 여러 위치를 열지 마십시오.

2과제. 클로저가 첫 번째가 아니라 두 번째에 있으므로 느린 확률적 선에 의해 위에서 아래로 레벨 80이 교차합니다.

먼저 다음 사항을 명확히 하십시오.

  • 포지션 개방 조건
  • 포지션 마감 조건

 
구성된 Expert Advisor에서 OnTick 기능 의 위치에 대한 정보에 액세스하는 방법을 알려주십시오. 열려 있든 없든. 위치에 대한 포인터는 어디에서 얻을 수 있습니까? 아니면 다른 방법으로 해야 합니까?
 
VHS :
구성된 Expert Advisor에서 OnTick 기능 의 위치에 대한 정보에 액세스하는 방법을 알려주십시오. 열려 있든 없든. 위치에 대한 포인터는 어디에서 얻을 수 있습니까? 아니면 다른 방법으로 해야 합니까?

누가 설계한 전문가?

코드를 보여주세요.
 
이 주제와 관련이 없는 댓글은 " MQL4 MT4 MetaTrader 4 초보자의 질문 "으로 이동되었습니다.
 
Vladimir Karputov :

누가 설계한 전문가?

코드를 보여주세요.
Expert Advisor는 맞춤형 신호 등급과 맞춤형 거래 등급에 따라 Wizard가 설계했습니다. EA 자체의 코드는 표준입니다. OnTick은 ExtExpert.OnTick()을 실행하고 나머지는 표준 라이브러리 에서 가져온 것입니다. 사실 이 질문은 아무도 대답하지 않은 이전 질문의 연속입니다. Wizard가 설계한 Expert Advisor가 신호 클래스의 신호를 무시하고 포지션을 열 때만 사용자 지정 신호 클래스를 사용하고 거래에만 닫도록 하고 싶습니다. 나는 신호의 작업을 무시하는 방법을 알아 냈습니다. 그러나 무시를 활성화하기 위해 onTick에 열린 위치가 있는지 여부에 대한 정보를 얻는 방법을 이해하지 못합니다.
 
VHS :
*** 거래를 위해 폐쇄됨 ***

불명.

 

VHS :
***а закрывал уже только по трейдингу ***

블라디미르 카르푸토프 :

불명.

키보드에 "D"와 "L"이 나란히 있습니다. 잘못된.

 
Artyom Trishkin :

키보드에 "D"와 "L"이 나란히 있습니다. 잘못된.

예, Artyom, 대단히 감사합니다. 분명히 자동 고침 (또는 비뚤어진 손). 커스텀 클래스와 클로저는 트레이딩이 아니라 트레일링입니다.
CExpert 클래스 에서 Processing 메서드는 먼저 Direction으로 이동하여 신호 클래스의 신호를 확인합니다. 그런 다음 (SelectPosition 위치가 있는 경우에만) Trailing을 확인합니다. 결과적으로 열린 위치가 있으면 신호 클래스에서 신호를 수신하여 후행 클래스의 신호가 없을 때 닫히는 경우가 있습니다.
후행 클래스에서 열린 위치의 존재에 대한 정보를 가져와 OnTick을 통해 Ignore로 전달하는 이전 옵션이 작동하지 않았습니다. OnInit에서 후행 객체를 기억하고 OnTick에서 정보를 추출하는 방법을 배웠습니다. 그러나 이것은 포지션이 열려 있는 동안에만 작동합니다. 그리고 그것이 닫힌 후에는 처리가 더 이상 후행에 들어가지 않고 Ignore는 무시된 상태로 유지됩니다. 즉, 최종 터치가 남아 있습니다. 위치를 닫은 후 OnTick에서 이 순간을 결정하고 Ignore 값을 "0"으로 반환합니다. 하지만 OnTick에서 포지션(유/무)에 대한 정보를 효과적으로 얻는 방법을 이해하지 못합니다.
 
VHS :
예, Artyom, 대단히 감사합니다. 분명히 자동 고침 (또는 비뚤어진 손). 커스텀 클래스와 클로저는 트레이딩이 아니라 트레일링입니다.
CExpert 클래스 에서 Processing 메서드는 먼저 Direction으로 이동하여 신호 클래스의 신호를 확인합니다. 그런 다음 (SelectPosition 위치가 있는 경우에만) Trailing을 확인합니다. 결과적으로 열린 위치가 있으면 신호 클래스에서 신호를 수신하여 후행 클래스의 신호가 없을 때 닫히는 경우가 있습니다.
후행 클래스에서 열린 위치의 존재에 대한 정보를 가져와 OnTick을 통해 Ignore로 전달하는 이전 옵션이 작동하지 않았습니다. OnInit에서 후행 객체를 기억하고 OnTick에서 정보를 추출하는 방법을 배웠습니다. 그러나 이것은 포지션이 열려 있는 동안에만 작동합니다. 그리고 그것이 닫힌 후에는 처리가 더 이상 후행에 들어가지 않고 Ignore는 무시된 상태로 유지됩니다. 즉, 최종 터치가 남아 있습니다. 위치를 닫은 후 OnTick에서 이 순간을 결정하고 Ignore 값을 "0"으로 반환합니다. 하지만 OnTick에서 포지션(유/무)에 대한 정보를 효과적으로 얻는 방법을 이해하지 못합니다.

나는 당신이 모든 것을 훨씬 쉽게 할 수 있다고 생각합니다. 고문에서 CLOSE 임계값을 100으로 설정하고 신호의 가중치를 0.5로 지정하십시오. 따라서 가중치가 0.5인 신호는 임계값 100을 절대 초과하지 않습니다


사유: