KimIV의 유용한 기능 - 페이지 113

 
togomsk :


여기요!

어떤 이유로 라이브러리가 연결되면 extern 연산자가 작동을 멈춥니다. 즉, 변수가 정의되고 모든 것이 정상적으로 컴파일되며 원칙적으로 어드바이저가 작동하지만 동시에 어드바이저에는 단일 매개변수가 없습니다. 상당히 많은 매개변수가 있음에도 불구하고 유형을 시작합니다. 이유는 무엇입니까?


코드에서 찾기

 #property library

그리고 삭제합니다.

 

두 번째 거래를 위해 이 함수에 변수 j를 추가했습니다. 감염되어야 작동하지 않습니다. 무슨 일이야.

이중 GetProfitLastClosePos(문자열 sy="", int op=-1, int mn=-1, int j=0 ) {
날짜 시간 o;
이중 p=-1;
정수 i, k=OrdersHistoryTotal();

if (sy=="0") sy=Symbol();
(i=0; i<k; i++) {
if ( 주문선택 (i -j , SELECT_BY_POS, MODE_HISTORY )) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (o<OrderCloseTime()) {
o=주문 닫기 시간();
p=주문이익();
}
}
}
}
}
}
}
리턴(p);
}
 
abdul1 :

두 번째 거래를 위해 이 함수에 변수 j를 추가했습니다. 감염되어야 작동하지 않습니다. 무슨 일이야.

오른쪽 -> 왼쪽(오른쪽의 마지막 주문)에서 마감 시간까지 OrdersHistoryTotal()에서 마감된 주문이 고려된다는 점을 고려하면:

 double GetProfitLastClosePos ( string sy= "" , int op=- 1 , int mn=- 1 ,
                               int j= 0 )           // Искомый (по номеру) ордер от последнего закрытого 
{
     int k = OrdersHistoryTotal (), li_cnt = 0 ;
//----
     if (sy == "0" || sy == "" ) sy = Symbol ();
     for ( int i = k - 1 ; i >= 0 ; i--)
    {
         if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue ;
         if ( OrderSymbol () != sy) continue ;
         if ( OrderType () > 1 ) continue ;
         if (op >= 0 ) if ( OrderType () != op) continue ;
         if (mn >= 0 ) if ( OrderMagicNumber () != mn) continue ;
         if (j == li_cnt) return ( OrderProfit ());
        li_cnt++;
    }
//----
     return (- 1.0 );
}

이 함수는 마지막으로 마감된 주문에서 j번째 주문의 이익을 기기, Magic, 유형별로 "필터링"하여 반환합니다. 그리고 숫자는 0부터 셉니다.

 
TarasBY :

오른쪽 -> 왼쪽(오른쪽의 마지막 주문)에서 마감 시간까지 OrdersHistoryTotal()에서 마감된 주문이 고려된다는 점을 고려하면:

이 함수는 마지막으로 마감된 주문에서 j번째 주문의 이익을 기기, Magic, 유형별로 "필터링"하여 반환합니다. 그리고 숫자는 0부터 셉니다.

필요한 것!! 감사합니다.
 

안녕하세요.

이익이 +가 될 때 반대 주문으로 같은 로트의 매수 및 매도 주문을 마감하는 기능이 필요했습니다. 함수를 만들려고 했지만 오류 4108이 발생합니다(올바른 티켓이 아님)

여기서 문제가 무엇인지 말해 줄 수 있습니까?

 //+------------------------------------------------------------------+
int fCloseBu(){
         // Закрываем встречные
   double LotB,LotS,PrB= 0 ,PrS= 0 ;
   int TicketB,TicketS,i, k= OrdersTotal ();

   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()== Symbol () || Symbol ()== "" )) {
         if (Magic_N< 0 || OrderMagicNumber ()==Magic_N) {
         //----------
         if ( OrderType ()==OP_BUY){
           if (PrB< OrderProfit ()+ OrderSwap ()+ OrderCommission ()) {
            PrB= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
            LotB= OrderLots ();
            TicketB= OrderTicket ();
          }
        }
         if ( OrderType ()==OP_SELL){
           if (PrS< OrderProfit ()+ OrderSwap ()+ OrderCommission ()) {
            PrS= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
            LotS= OrderLots ();
            TicketS= OrderTicket ();
          }
        }
       if (PrB> 0 && PrS> 0 && LotB==LotS) {
           OrderCloseBy (TicketB,TicketS, CLR_NONE );
           Print ( "Закрываем пару встречных ордеров c одинаковыми лотами в плюсе" );
          }  
        }
      }
    }
  }
//-------------
   return ( 0 );
}
//+------------------------------------------------------------------+
 
전체 점검 주기가 완료되면 주문을 마감해야 합니다. for 문 뒤에, 내부가 아닙니다.
 
설정에서 이동 평균을 이동하는 기능이 있는 이동 평균 의 교차점에서 작동하는 고문을 어디에서 찾을 수 있는지 알려주세요 ???
 
Roger :
전체 점검 주기가 완료되면 주문을 마감해야 합니다. 내부가 아니라 for 문 뒤에 있습니다.


고맙습니다! 다른 사람이 그러한 기능을 필요로 한다면 다음과 같을 것입니다.

 //+------------------------------------------------------------------+
//|    Закрываем встречные                                           |
//+------------------------------------------------------------------+
int fCloseBu(){
   double LotB,LotS,PrB= 0 ,PrS= 0 ;
   int TicketB,TicketS,i, k= OrdersTotal ();

   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()== Symbol () || Symbol ()== "" )) {
         if (Magic_N< 0 || OrderMagicNumber ()==Magic_N) {
         //----------
         if ( OrderType ()==OP_BUY){
           if (PrB< OrderProfit ()+ OrderSwap ()+ OrderCommission ()) {
            PrB= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
            LotB= OrderLots ();
            TicketB= OrderTicket ();
          }
        }
         if ( OrderType ()==OP_SELL){
           if (PrS< OrderProfit ()+ OrderSwap ()+ OrderCommission ()) {
            PrS= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
            LotS= OrderLots ();
            TicketS= OrderTicket ();
             }
           }
         }
       }
     }
   } //for
   if (PrB> 0 && PrS> 0 && LotB==LotS) {
     OrderCloseBy (TicketB,TicketS, CLR_NONE );
     Print ( "Закрываем пару встречных ордеров c одинаковыми лотами в плюсе" );
  }
//-------------
   return ( 0 );
}
//+------------------------------------------------------------------+
 
이 언어에 대한 비디오 자습서가 있습니까?
 
Andrei5 :
이 언어에 대한 비디오 자습서가 있습니까?
책이 있습니다. 온라인에서 읽거나 컴퓨터에 다운로드할 수 있습니다. 위에서 검색 -> "자습서".