[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 317

 
enya :

.

에 삽입했습니다. 루프 문제 및 루프 종료 후 초기 값 복원

다음은 마지막 거래가 수익성이 있었는지 또는 수익성이 없었는지에 대한 답을 제공하는 함수입니다.

 double LastOrderProfit()
 {
   double Profit= 0 ;
   int ticket; 
   for ( int i= 0 ; i< OrdersHistoryTotal (); i++){
     if (! OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)) continue ;
       if ( OrderSymbol ()!= Symbol ()) continue ;
     if ( OrderMagicNumber ()!=Magic) continue ;
     if ( OrderType ()> 1 ) continue ;
     if (ticket< OrderTicket ()){
        ticket= OrderTicket ();
        Profit= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
     } 
   }     
 return (Profit);
 } 

그런 다음 그녀의 대답을 0과 비교하여 TP / SL을 그대로 두거나 변경하기로 결정합니다.

 if (LastOrderProfit()> 0 ) newTPSL= false ; else   newTPSL= true ;
if(newTPSL) OrderModify(.......newSL,newTP...);
 

안녕하세요. IN10TION NewsReader 지표에 관심이 있습니다. 상담원에게 첨부하고 싶습니다.

빨간선(Market.TdOpen)과 Market.Price.DOWN(빨간색)이 있으면 매도

빨간선(Market.TdOpen)과 Market.Price.UP(녹색)이 있으면 매수

어떤 조치를 취할 수 있습니까? 아이커스텀을 통해 방문한 내역은 나오지 않습니다!


 extern bool Market.TdOpen = TRUE;
extern color Market.TdOpen.Color = Red ;
extern bool Market.TdFibo = TRUE;
extern color Market.TdFibo.Color = C'0x00,0x32,0x00' ;
extern color Market.Price.UP = Lime ;
extern color Market.Price.DOWN = Red ;
extern bool Market.Price.Guide = TRUE;

첨부 파일:
_yIN10TIONfNewsReaderov09.99kblite.ex4 (115.59KB) 삭제

 

제 말을 되풀이해서 관리자에게 사과하지만 아직 아무도 저에게 답장을 보내주지 않았습니다. 아이디어는 로그에 저장된 주석에 메시지를 표시하는 것입니다. IsConnected() 함수로 올바르게 고칠 수 없는 것 - 연결 끊김, 요청. 그렇지 않으면 고문이 현재 아무 것도하지 않는 이유가 명확하지 않습니다.


아래에 로그 파일을 읽는 코드를 알려주세요. 날짜별 최신 로그 파일을 자동으로 읽고 인쇄합니다.

어디에:

 while (result> 0 ) {

파일은 부품에서 조립됩니다. 그러나 전체 파일이 필요하지 않으며 마지막 줄만 필요합니다. 수정하도록 도와주세요.

 void ReadWrite() {
   string tekTime=TimeStr1(CurTime(), 1 );
   string path= TerminalPath ()+ "\\logs\\" +tekTime+ ".log" ;
   string title= "Чтение из файла" ;
   string msg;
   int result;
   int handle=_lopen(path, 4 );
   if (handle< 0 ) {
      msg= "Ошибка открытия файла" ;
      Print (msg);
       return ;
   }
   result=_llseek (handle, 0 , 0 );
   string buffer= "" ;
   //string char="x                      ";
   string char = "x                                                                                                                                                                                                                                                         " ;
   int count= 0 ;
   result=_lread (handle, char , 250 );
   while (result> 0 ) {
      buffer=buffer+ char ;
       char = "x                                                                                                                                                                                                                                                         " ;
      count++;
      result=_lread (handle, char , 250 );
   }
   result=_lclose (handle);
   msg= StringTrimRight (buffer);
   Print (msg);
}

//------------------расчет времени----------------
string TimeStr1( int taim, int tip)
{
   string sTaim;
   string sTaim1,sTaim2,sTaim3;
   if (tip== 1 ) 
   {
       int GD= TimeYear (taim);                  
       int MN= TimeMonth (taim);                  
       int DD= TimeDay (taim);  
      
      sTaim1 = DoubleToStr (GD, 0 );
       if (MN< 10 ) sTaim2 = StringConcatenate (sTaim2, "0" + DoubleToStr (MN, 0 ));
       else sTaim2 = StringConcatenate (sTaim2, DoubleToStr (MN, 0 ));
       if (DD< 10 ) sTaim3 = StringConcatenate ( "0" , DoubleToStr (DD, 0 ));
       else sTaim3 = DoubleToStr (DD, 0 );
      sTaim=sTaim1+sTaim2+sTaim3;
   }
   return (sTaim);
}
 

조언을 변경하는 데 도움이 필요합니다

EA는 회전율로 거래해야 합니다.

매도 제한 매수 주문 대신

및 매수 매도 주문 한도

파일:
tke.mq4  18 kb
 
mersi :

다음은 마지막 거래가 수익성이 있었는지 또는 수익성이 없었는지에 대한 답을 제공하는 함수입니다.

그런 다음 그녀의 대답을 0과 비교하여 TP / SL을 그대로 두거나 변경하기로 결정합니다.

함수 가 마지막 주문을 정확히 반환합니까? 아니면 처음 마주치는 것이 수익성이 없습니까? 티켓 확인이 왜 있습니까?

나는 이것을 할 것입니다 :

 //+----------------------------------------------------------------------------+
double LastOrderProfit() {
   double Profit= 0 ;
   datetime t;
   int i, j;
   for (i= 0 ; i< OrdersHistoryTotal (); i++) {
       if (! OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)) continue ;
       if ( OrderMagicNumber ()!=Magic)                   continue ;
       if ( OrderSymbol ()!= Symbol ())                     continue ;
       if ( OrderType ()> 1 )                               continue ;
       if (t< OrderCloseTime ()) {
         t= OrderCloseTime ();
         j=i;
         }
      }
   if ( OrderSelect (j,SELECT_BY_POS,MODE_HISTORY)
      Profit= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
   return (Profit);
} 
//+----------------------------------------------------------------------------+

이것은 마지막으로 마감된 주문을 정확히 찾기 위해 재설계된 기능입니다.

여기에는 결점이 있습니다. 마감된 주문이 전혀 없으면 0을 반환합니다. 따라서 그것을 사용하여 기록에서 마감 된 주문의 유무를 정확하게 판별하는 것은 불가능합니다. 결국 반환된 0은 순서가 전혀 없다는 것을 의미하는 것이 아니라 0에 가깝게 닫혀 있다는 의미입니다.

 

알려주세요:

마지막(현재) 막대에 대해서만 표시기 값을 그리는 데 관심이 있습니다. 그런데 새 막대 가 열리면 차트에 기존 값이 남아 있습니다.... 이 쓰레기를 어떻게 강제로 제거 할 수 있습니까? 막대 [0]에 대해 표시기 값이 계산되어 표시되고 [1]에서 [Bar-1] 막대에 대해 이러한 값이 0으로 설정되는 조건을 어떻게든 설정할 수 있습니까?

 double Buffer [ 1 ];            

int init()
  {

   IndicatorBuffers ( 1 );
  
   SetIndexStyle ( 0 , DRAW_ARROW );
   .........
 
   return ( 0 );
  }

int deinit()
  {
   return ( 0 );
  }

int start()
  {
   int limit;
   int counted_bars= IndicatorCounted ();
   if (counted_bars< 0 ) counted_bars= 0 ;
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;
       for ( int i=limit;i>= 0 ;i--) 
     {
         Buffer [ 0 ] = ............;
     }
   return ( 0 );
  }        
 

artmedia70 :

여기에는 결점이 있습니다. 마감된 주문이 전혀 없으면 0을 반환합니다. 따라서 이를 사용하여 이력에서 마감된 주문의 유무를 정확하게 판별하는 것은 불가능합니다. 결국 반환된 0은 순서가 전혀 없다는 것을 의미하는 것이 아니라 0에 가깝게 닫혀 있다는 의미입니다.

고맙습니다! 당신은 나에게 대답하지 않았지만 올바른 이익 계산에 관한 나의 마지막 질문에 대답했습니다.

Profit= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
 
Azerus :

알려주세요:

마지막(현재) 막대에 대해서만 표시기 값을 그리는 데 관심이 있습니다. 그런데 새 막대를 열면 차트에 기존 값이 그대로 남아 있습니다.... 이 쓰레기를 어떻게 강제로 제거할 수 있습니까? 막대 [0]에 대해 표시기 값이 계산되어 표시되고 [1]에서 [Bar-1] 막대에 대해 이러한 값이 0으로 설정되는 조건을 어떻게든 설정할 수 있습니까?

Start() 시작 시 버퍼를 EMPTY_VALUE 로 초기화합니다. 즉, 새로운 바의 출현과 함께 하고, 제로 원의 오픈 시간을 확인하고, 쓰레기 정리 논리를 수행하십시오.

 
artmedia70 :

함수 가 마지막 주문을 정확히 반환합니까? 아니면 첫 만남 이 무익하지 않습니까? 티켓 확인이 왜 있습니까?

나는 이것을 할 것입니다 :

이것은 마지막으로 마감된 주문을 정확히 찾기 위해 재설계된 기능입니다.

여기에는 결점이 있습니다. 마감된 주문이 전혀 없으면 0을 반환합니다. 따라서 이를 사용하여 이력에서 마감된 주문의 유무를 정확하게 판별하는 것은 불가능합니다. 결국 반환된 0은 순서가 전혀 없다는 것을 의미하는 것이 아니라 0에 가깝게 닫혀 있다는 의미입니다.

1. 이 함수는 역사상 가장 큰 티켓이 있는 주문을 찾습니다. 이는 마지막으로 마감된 주문을 의미합니다(물론 최대 마감 시간이 있는 옵션이 선호되는 예외적인 경우는 제외).

2. 고객 의 조건에 따라 첫 번째 주문은 지정된 TP/SL로 열리고 두 번째 주문만 새 TP/SL로 열 수 있으며 첫 번째 트랜잭션이 다음과 같은 경우에만 함수가 0을 반환할 수 있습니다. 0이지만 기록에 마감된 주문이 없기 때문이 아닙니다.

그리고 마지막. 귀하의 버전에서 함수에서 j와 다른 SELECT를 사용하는 것은 과잉입니다.

충분한 :

 if (t< OrderCloseTime ()) {
         t= OrderCloseTime ();
      Profit= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
  }
   return (Profit);
 
snail09 :
Start() 시작 시 버퍼를 EMPTY_VALUE로 초기화합니다.


어떤가요? int init () 이후 의 표시줄 설정에 있습니다.

   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,165);                     
   SetIndexBuffer(0,Buffer);
   SetIndexEmptyValue(0,0.0);