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

 
lottamer :

효과가 있었다! 솔직히 말해서, AND 대신 OR을 대체하는 아이디어가 있었습니다. 하지만 ... :))))))))))))))))))))))))

감사하다! 이제 논리가 명확해졌습니다. 닫힌 15개를 세려면 코드를 풍선 크기로 부풀려야 합니다!

이 모든 것을 하나의 사이클에 압축할 수 있습니까? 필요한 트랜잭션 수 N의 매개변수만 대체하십시오.

다음은 N개의 마지막 마감 주문 티켓을 검색할 때 가능한 옵션 중 하나이며 필요한 주문은 유형(구매, 판매) 및 수익성(비수익, 수익성)별로 필터링할 수 있습니다.

 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Функция получает Ticket следующего перед fdt_Time закрытого ордера         |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int fGet_TicketLastClosePos ( int fi_Type = - 2 ,           // OrderType()
                             int fi_TypeProfit = 0 ,     // флаг профитности ордеров: 0 - все, -1 - убыточные, 1 - прибыльные
                             datetime fdt_Time = 0 )     // Точка отсчёта времени
{
     datetime ldt_CloseTime = 0 , ldt_LastTime = 0 ;
     double    ld_Profit = 0 .;
     int       li_Ticket = 0 , li_Total = OrdersHistoryTotal();
//----
     for ( int li_ORD = li_Total - 1 ; li_ORD >= 0 ; li_ORD--)
    {
        // if (!fCheck_MyOrders (li_ORD, fi_Type, MODE_HISTORY)) continue ;
        // Здесь прописываете свою фильтрацию ордеров
        ldt_CloseTime = OrderCloseTime();
         //---- Пропускаем ордера, закрытые после указанной даты
         if (fdt_Time != 0 ) if (fdt_Time <= ldt_CloseTime) continue ;
         if (ldt_LastTime >= ldt_CloseTime) continue ;
        ld_Profit = OrderProfit();
         //---- Фильтруем ордера по профитности
         if (fi_TypeProfit > 0 ) if (ld_Profit < 0 .) continue ;
         if (fi_TypeProfit < 0 ) if (ld_Profit > 0 .) continue ;
        ldt_LastTime = ldt_CloseTime;
        li_Ticket = OrderTicket();
    }
//----
     return (li_Ticket);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Функция получает Tickets N закрытых ордеров                                |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int fGet_TicketsLastCloseOrd ( int fi_NUM,                 // Количество искомых тикетов
                               int & ar_Tickets[],         // возвращаемый массив с тикетами
                               int fi_Type = - 2 ,           // OrderType()
                               int fi_TypeProfit = 0 )     // флаг профитности ордеров: 0 - все, -1 - убыточные, 1 - прибыльные
{
     int       li_cnt = 0 , li_Ticket;
     datetime ldt_Time = 0 ;
//----
     for ( int li_IND = 0 ; li_IND < fi_NUM; li_IND++)
    {
        li_Ticket = fGet_TicketLastClosePos (fi_Type, fi_TypeProfit, ldt_Time);
         if (li_Ticket > 0 )
        {
            li_cnt++;
             ArrayResize (ar_Tickets, li_cnt);
            ar_Tickets[li_cnt-1] = li_Ticket;
             OrderSelect (li_Ticket, SELECT_BY_TICKET);
            ldt_Time = OrderCloseTime();
        }
         else break ;
    }
//----
     return (li_cnt);
}

fGet_TicketsLastCloseOrd() 함수를 호출 한 후 주어진 매개변수로 찾은 티켓 수를 반환하면 주어진 티켓 수(fi_NUM)와 함수에서 반환한 값으로 확인할 수 있습니다. 수집된 모든 티켓은 참조로 함수에 전달된 배열에 있습니다.

그리고 이 옵션에서는 이 마지막 티켓을 얼마나 많이 찾는지는 중요하지 않습니다. :)

마지막으로 마감된 주문에 대한 수익이 필요한 경우 훨씬 더 쉽습니다.

 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Функция получает Profit N последних закрытых ордеров                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
double fGet_ProfitLastCloseOrd ( int fi_NUM,          // Количество просчитываемых ордеров
                                int fi_Type = - 2 )    // OrderType()
{
     int       li_Ticket;
     double    ld_Profit = 0 .;
     datetime ldt_Time = 0 ;
//----
     for ( int li_IND = 0 ; li_IND < fi_NUM; li_IND++)
    {
        li_Ticket = fGet_TicketLastClosePos (fi_Type, 0 , ldt_Time);
         if (li_Ticket > 0 )
        {
             OrderSelect (li_Ticket, SELECT_BY_TICKET);
            ldt_Time = OrderCloseTime();
            ld_Profit += (OrderProfit() + OrderSwap() + OrderCommission());
        }
         else break ;
    }
//----
     return (ld_Profit);
}
 
TarasBY :

다음은 N개의 마지막 마감 주문 티켓을 검색할 때 가능한 옵션 중 하나이며 필요한 주문은 유형(구매, 판매) 및 수익성(비수익, 수익성)별로 필터링할 수 있습니다.

fGet_TicketsLastCloseOrd() 함수를 호출한 후 주어진 매개변수로 찾은 티켓 수를 반환하면 주어진 티켓 수(fi_NUM)와 함수에서 반환한 값으로 확인할 수 있습니다. 수집된 모든 티켓은 참조로 함수에 전달된 배열에 있습니다.

그리고 이 옵션에서는 이 마지막 티켓을 얼마나 많이 찾는지는 중요하지 않습니다. :)

마지막으로 마감된 주문에 대한 수익이 필요한 경우 훨씬 더 쉽습니다.



정말 감사합니다. 나는 휴식을 취할 것입니다, 나는 무엇인지 알아 내야합니다 ...
 
안녕하세요, 이 문제를 해결하는 데 도움을 주세요. Eurobucks, 달러 인덱스 및 유로 인덱스를 하나의 지표에 표시하고 싶습니다. 현재 값은 몇 배나 다릅니다. 동일한 순서로 값을 가져 오는 방법은 무엇입니까? 승수를 추가하십시오 - 어떻게 든 Feng Shui에 따르면 아닌 것 같습니다 ...
 
tommy27 :
안녕하세요, 이 문제를 해결하는 데 도움을 주세요. Eurobucks, 달러 인덱스 및 유로 인덱스를 하나의 지표에 표시하고 싶습니다. 현재 값은 몇 배나 다릅니다. 동일한 순서로 값을 가져 오는 방법은 무엇입니까? 승수를 추가하십시오 - 어떻게 든 Feng Shui에 따르면 아닌 것 같습니다 ...

분 모든 지표의 최대값을 동일하게 설정합니다.
 

안녕하세요! 전문가 조언: 어드바이저에서 사용하려는 신호 의 지표를 작성했습니다 . 표시기 기능 또는 이식된 표시기 중 어느 것이 더 빨리 작동합니까?

감사합니다

 
pako :

분 모든 지표의 최대값을 동일하게 설정합니다.

which all ... 3개의 droline 버퍼에 대한 하나의 표시기로 모든 것을 표시하고 싶습니다.
 

tommy27 :

동일한 순서로 값을 가져 오는 방법은 무엇입니까?

규모가 같아야 합니다.
 
pako :
규모가 같아야 합니다.

예, 그리고 이를 위해서는 다음과 같이 표시하기 전에 세 버퍼의 모든 값을 변환하는 것이 좋습니다.

Xn=(X-Xmin)/(Xmax-Xmin)

어리석게 하면 수평선 처럼 보이는 것을 얻습니다.

음, MQ에서 스케일링을 사용하면 모든 것이 최상위 유형이 됩니다.

 
감사합니다.
 
Zhunko :
이런 일이 발생하면 곧은 아니지만 아마도 결코 없을 것입니다.

답변 해주셔서 감사합니다.

그러나 나는 오랫동안 다른 코드에서 동일한 의심스러운 비교를 사용해 왔습니다.

그리고 성공적으로 작동합니다.

 int start()                                                                                                                     
{                                                                                                                       
                                                                                                                        
 double Price=iOpen ( Symbol (), 0 , 0 );                                                                                                                             
 int last_order_bar = 0 ;                                                                                                                        
 int ot = OrdersTotal ();                                                                                                                        
                                                                                                                        
 if (ot> 0 ) //если есть ордера в рынке                                                                                                                   
 {                                                                                                                      
   if ( OrderSelect (ot- 1 ,SELECT_BY_POS))                                                                                                                        
       if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )                                                                                                                       
         last_order_bar = iBarShift ( Symbol (), 0 ,OrderOpenTime ());                                                                                                             
 }                                                                                                                      
                                                                                                                        
 int last_hist_order_bar = 0 ;                                                                                                                   
 int oht = OrdersHistoryTotal();                                                                                                                        
                                                                                                                        
 if (oht> 0 )                                                                                                                     
 {                                                                                                                      
   if ( OrderSelect (oht- 1 ,SELECT_BY_POS, MODE_HISTORY))                                                                                                                         
       if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)                                                                                                                        
         last_hist_order_bar = iBarShift ( Symbol (), 0 ,OrderOpenTime ());                                                                                                        
 }                                                                                                                      
                                                                                                                        
 if (ot== 0 || last_order_bar> 0 )                                                                                                                      
     if (oht== 0 || last_hist_order_bar> 0 ) 
//===============================================================
if (Bid==Price)
if ((Minute( ) == 45 )&&(Minute( ) < 50 ))
int Ticket= OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 1 ,Bid- 1500 * Point ,Bid+ 150 * Point , "jfh" , 123 );        
                                                                                        
}                                                                                                                       
return ;
이 조건이 마지막 경우에 작동하지 않는 이유를 이해할 수 없습니다. 이 코드들 사이에 근본적인 차이점은 보이지 않습니다.