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

 
законопослушный гражданин :

고맙습니다

하지만 이 함수에서: Double GetProfitFromStart()

노란색은 기능의 이름일 뿐입니다. 정확히 이해하고 있습니까?

그리고 원칙적으로 무엇이든 될 수 있습니까?

네, 명확하게 하기 위해 이름을 지었습니다. Get(get) Profit(이익) FromStart(처음부터)
 
MakarFX :
네, 명확하게 하기 위해 이름을 지었습니다. Get(get) Profit(이익) FromStart(처음부터)

감사하다.

전문가 틱 기능에서

void OnTick() - if(CountOrders()==0&& ObjectGetInteger (0,"lab_Button",OBJPROP_STATE)) 코드 라인은 어드바이저의 초기 시작 동안 첫 번째 주문의 시작일 뿐만 아니라 ,

또한 주문 후 각 실행은 조건에 따라 종료됩니다.

 if (GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*- 1 )
     {
       if (IsTesting())
        {
         CloseOrder(); ObjectSetInteger ( 0 , "lab_Button" , OBJPROP_STATE , false );
        }
       else
        {
         CloseOrder();
}
}

내가 올바르게 이해하고 있습니까?

 
MakarFX :

모든 무익한 주문에 대한 손실의 크기

제가 또 오해했나 봅니다.

또는 각 무익에 대한 손실 금액

또는 모든 손실 주문에 대한 총 손실...


한 번만 인쇄해야 하는 경우 스크립트 형식으로 하는 것이 좋습니다.

필요하지 않습니다, 당신은 할 수 있습니다

귀하의 코드가 도움이 되었습니다. 이제 동일한 메시지가 100번 발행되지 않고 4-10번만 발행됩니다. else 문을 추가해야 할 수도 있습니다.
 
Petronet :
귀하의 코드가 도움이 되었습니다. 이제 동일한 메시지가 100번 발행되지 않고 4-10번만 발행됩니다. else 문을 추가해야 할 수도 있습니다.
코드는 어떻게 그리고 어디에 작성됩니까?
 
законопослушный гражданин :

감사하다.

전문가 틱 기능에서

void OnTick() - if(CountOrders()==0&& ObjectGetInteger (0,"lab_Button",OBJPROP_STATE)) 코드 라인은 어드바이저의 초기 시작 동안 첫 번째 주문의 시작일 뿐만 아니라 ,

또한 주문 후 각 실행은 조건에 따라 종료됩니다.

내가 올바르게 이해하고 있습니까?

다음은 EA를 시작하기 위한 조건입니다. if( if ) (CountOrders()==0( 주문 없음 )&& ObjectGetInteger (0,"lab_Button",OBJPROP_STATE))( 그리고 버튼이 눌려진 경우 ), 거래할 수 있습니다

 
MakarFX :
코드는 어떻게 그리고 어디에 작성됩니까?
코드는 EA의 int start() 함수 본문에 삽입됩니다. 빈 변수를 감아올리는 else 문을 추가하면 데이터 중복이 멈췄지만 2개의 마이너스 이익이 연속으로 나오면 데이터 중복이 10회, 2~3회 발생한다. 동일한 정보를 100번 제공한 원래 루프를 주석 처리했습니다. 당신의 노동자.
 int start()
  {
  
   //for (int trade = OrdersHistoryTotal() - 1; trade >= 0; trade--) 
   //{
     //if ( OrderSelect(trade, SELECT_BY_POS,MODE_HISTORY)) 
     //{
         //old_order_type = OrderType();
         //if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         //{
                 //Print("Закрылись с минусом:", OrderProfit());
                 //break; //прекращаем поиск
         //}
         
     //}
     //break;
   //}
  
   for ( int pos= 0 ; pos<OrdersHistoryTotal(); pos++)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderCloseTime()>=TimeStart)
              {
               if (OrderProfit()< 0 ) {cnt=OrderProfit();
               Print ( "ордера с минусом" , cnt); TimeStart= TimeCurrent (); cnt= 0 ;}
               else gg=gg+ 1 ;
              }
           }
        }
     }
 
Petronet :
코드는 EA의 int start() 함수 본문에 삽입됩니다. 빈 변수를 감아올리는 else 문을 추가하면 데이터 중복이 멈췄지만 2개의 마이너스 이익이 연속으로 나오면 데이터 중복이 10회, 2~3회 발생한다. 동일한 정보를 100번 제공한 원래 루프를 주석 처리했습니다. 당신의 노동자.
 // это в глобальные переменные
datetime TimeStart; 

// это в init()

TimeStart=Time[ 0 ];

손실 거래가 발생하면 한 번 인쇄됩니다.

 
안녕하세요 여러분, 금요일 20:30에 포지션을 마감 하는 기능을 삽입했습니다.

그러나 고문은 그것이 금요일이라는 것을 알지 못하고 매일 포지션을 닫습니다.

이렇게 서있다

 input bool      UseTimeLimitClose           = true ;     // -- Funktion ein/ausschalten --
enum daysOfWeek 
   { 
     Monday = 1 , 
     Tuesday = 2 , 
     Wednesday = 3 , 
     Thursday = 4 , 
     Friday = 5
   };
input   daysOfWeek closday          =     5 ;             // -- Handel bis Tag --
input int     Close_Hour            =   20 ;             // -- Handel bis Uhrzeit Std.--
input int     Close_min             =   30 ;



void OnTick () 

 if (UseTimeLimitClose)
     {
       MqlDateTime TimeNow;
       TimeToStruct ( TimeCurrent (),TimeNow);
       if   ( TimeNow.day_of_week >= closday  && TimeNow.hour >= Close_Hour && TimeNow.min >= Close_min  ) 
       {
          CloseAllPositions();
       }     

 
Eugen8519 :
안녕하세요 여러분, 금요일 20:30에 포지션을 마감 하는 기능을 삽입했습니다.

그러나 고문은 그것이 금요일이라는 것을 알지 못하고 매일 포지션을 닫습니다.

이렇게 서있다

 void OnTick () 

 if (UseTimeLimitClose)
     {
      if   ( TimeDayOfWeek(TimeCurrent()) ==closday   && TimeHour(TimeCurrent()) >= Close_Hour && TimeMinute(TimeCurrent()) >= Close_min  ) 
       {
          CloseAllPositions();
       }     
 

이것을 외부 변수에 넣는 방법을 알려주실 수 있습니까?

 double levelss[ 7 ] = { 0 , 0.236 , 0.382 , 0.5 , 0.618 , 1 , 1.618 }; // Уровни Fibo