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

 

좋은 시간 입니다.

표준 라이브러리 에서 " .search() "가 작동하는 방식에 대한 오해에 봉착했습니다.

나는 표준 클래스를 사용합니다 -   CiTime() - 클래스는 일련의 바 영업 시간에 액세스하기 위한 클래스입니다.

 int OnInit ()
  {
//..
 TimeFrac= new CiTime();
   if ( CheckPointer (TimeFrac)== POINTER_INVALID || !TimeFrac.Create(symbol_Name,TimeFr_Frac_D1))
       return INIT_FAILED ;
   TimeFrac.Refresh();  
   TimeFrac.Sort();
//..

필요한 날짜를 찾으려고 할 때 (클래스는 같지만 기간이 다름)

 int k = TimeFrac.Search(  Time.GetData(i)    );

오류 메시지를 표시합니다.

'GetData' - 매개변수 변환이 허용되지 않습니다.

교체를 시도했습니다

Time.GetData(i)

 datetime Time_GetData  =  Time.GetData(i);

도움이되지 않습니다 ...

도움말로 전환했습니다. 거기에 말한다

 int   Search( 
   CObject*  element       // образец 
   ) const

및 야생 적용 예.

같은 클래스의 알려진 "Date"로 표준 클래스의 "Date"를 검색하는 것은 불가능하다는 것이 밝혀졌습니다!?!?

클래스 요소만

CObject

이 클래스에서 날짜를 검색하는 작업 예제를 찾지 못했습니다.

누구에게 도움을 요청해야 할까요???

고맙습니다.

 
안녕하세요 여러분, 어떤 이유에서 작동하지 않는지 알려주세요.
 double Minus_profit(){
time= TimeCurrent ();
 for ( int i= 0 ; i<OrdersHistoryTotal(); i++){
       if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)){
       if (OrderSymbol() == Symbol () && OrderMagicNumber()==Magic){
         if (OrderType() == OP_BUY || OrderType() ==OP_SELL){
         if (OrderCloseTime()>=time){
           if (OrderProfit()+OrderSwap()+OrderCommission()<= 0 ){
              time=OrderCloseTime();
              profit+=OrderProfit();swap+=OrderSwap(); ;comis+=OrderCommission();
              result=profit+swap+comis;   
   }}}}}} return (result);
}
 
Alexander Avksentyev # :
안녕하세요 여러분, 어떤 이유에서 작동하지 않는지 알려주세요.
 double Minus_profit(){
time= TimeCurrent ();   // это текущее время
 for ( int i= 0 ; i<OrdersHistoryTotal(); i++){
       if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)){
       if (OrderSymbol() == Symbol () && OrderMagicNumber()==Magic){
         if (OrderType() == OP_BUY || OrderType() ==OP_SELL){
         if (OrderCloseTime()>=time) {                  // условие не выполнимо, что бы время закрытия ордера в истории
           if (OrderProfit()+OrderSwap()+OrderCommission()<= 0 ){     // было больше/позже чем текущее
              time=OrderCloseTime();
              profit+=OrderProfit();swap+=OrderSwap(); ;comis+=OrderCommission();
              result=profit+swap+comis;   
   }}}}}} return (result);
}
 

문제. 4ki용

이중 MarketInfo (

)

MODE_LOTSIZE

열 다섯

상품 기준 통화의 계약 규모

이것이 1(일) 로트의 비용이라는 것을 올바르게 이해하고 있습니까? 상품의 첫 번째 통화의 레버리지를 고려하여 로트 비용인 레버리지로 나눕니다.

MODE_MARGIN필수

32

구매를 위해 1랏을 여는 데 필요한 무료 자금의 양

5k에 후자의 아날로그가 있습니까? 있다면 찾지 못했습니다.

의무가 없는 MarginFree 자금은 이해할 수 있습니다. 한 로트의 비용으로 나누면 레버리지 없이 열 수 있는 랏 수를 구하고 레버리지에 곱하면 레버리지가 있습니다. 맞나요 안 맞나요?

위협. 5ki에 대해 올바르게 생각합니까?

 double    Free   = AccountInfoDouble ( ACCOUNT_MARGIN_FREE );                 // Свободн средства
double    One_Lot= SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_CONTRACT_SIZE ); // Стоимость 1 лота без плеча
double    Step   = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP );       // Шаг изменен размера
long      Laverage= AccountInfoInteger ( ACCOUNT_LEVERAGE ); // Плечо
double    One_Lot_Lav=ND((One_Lot/Laverage)*Ask);       // Стоимость лота с плечом для бай
Lts=MathFloor(Free*Prots/One_Lot_Lav/Step)*Step;// Для открытия
사유: