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

 
Artyom Trishkin :

주문 티켓 을 읽을 수 있습니다.

비슷한 기능이 있나요

 OrderGetTicket ();

mql4용?

 
Seric29 :

비슷한 기능이 있나요

mql4용?

있긴 하지만 꼭 그렇지만은 않습니다. 주문을 선택한 후 다른 기능을 사용하여 주문 및 티켓 유형 을 결정해야 합니다.

OrderSelect - Торговые функции - Справочник MQL4
OrderSelect - Торговые функции - Справочник MQL4
  • docs.mql4.com
Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 0, то ордер является открытым или отложенным и взят из списка открытых ордеров терминала. Отличить открытый ордер от отложенного ордера можно по типу ордера. Если время закрытия ордера не равно 0, то ордер является...
 

안녕하세요.

i만큼 로트가 증가함에 따라 예금 그리드를 여는 기능이 있습니다.

martin에 따라 그리드(로트)를 구축해야 합니다. 로트1=0.01, 로트2=0.02, 로트3=로트2+로트1. ,

fLots() 함수에서 그것을 설명하는 방법?

extern int Count       = 4 ;       //Количество устанавливаемых ордеров
\\


for (i= 1 ;i<=Count;i++)
    {
     {         
      res= OrderSend ( Symbol (),OP_BUYLIMIT,fLots()*i,fND(Ask-(Distance* Point +i*Step* Point )), 3 ,fND(BuyPrice-StopLoss* Point ), fND(Ask-(Distance* Point +i*Step* Point ))+TakeProfit* Point , "" ,MAGIC,expiration,Blue);    
  
       Sleep ( 3000 );
       if (res< 0 ) 
         {
             Print ( "ОШИБКА: " , GetLastError ()); 
         } else {
            RefreshRates();
         }    
     }
    }
 

onInit 에 공석 이 있는지 확인하고 싶지만 어떤 이유로 선택할 수 없습니다.


   for ( int i= PositionsTotal (); i> 0 ; i--)
      {
      smbol = PositionSelect ( PositionGetSymbol (i));
      tickett = PositionGetTicket (i);
      
       Print ( "ticket(" ,i, ") = " , tickett);
       Print (smbol);

      }
   Print ( "Position Total = " , PositionsTotal ());

나는 얻다:


2019.05.01 00:11:32.177 손익분기점(GBPUSD,H1) 티켓(1) = 0

2019.05.01 00:11:32.177 손익분기점(GBPUSD,H1) 거짓

2019.05.01 00:11:32.177 손익분기점(GBPUSD,H1) 총 포지션 = 1



 
psyman :

onInit 에 공석 이 있는지 확인하고 싶지만 어떤 이유로 선택할 수 없습니다.


나는 얻다:


2019.05.01 00:11:32.177 손익분기점(GBPUSD,H1) 티켓(1) = 0

2019.05.01 00:11:32.177 손익분기점(GBPUSD,H1) 거짓

2019.05.01 00:11:32.177 손익분기점(GBPUSD,H1) 총 포지션 = 1



즉시 내 눈을 사로잡은 것:

 for ( int i= PositionsTotal (); i> 0 ; i--)

역 주기에서 다음과 같아야 하기 때문에 더 이상 살펴보지 않았습니다.

 for ( int i= PositionsTotal ()-1; i>= 0 ; i--)
 
Artyom Trishkin :

즉시 내 눈을 사로잡은 것:

역 주기에서 다음과 같아야 하기 때문에 더 이상 살펴보지 않았습니다.

그리고 나는 이 글이 더 좋다.

 for ( int i = PositionsTotal (); i-- > 0 ;)
 
Alexey Viktorov :

그리고 나는 이 글이 더 좋다.

음.. 초보자용으로 보여드렸어요 ;)

 

//+----------------------------------------------------------------------------+ //|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   | //+----------------------------------------------------------------------------+ //|  Версия   : 19.02.2008                                                     | //|  Описание : Возвращает суммарный профит в валюте депозита                  | //|             закрытых с определённой даты позиций                           | //+----------------------------------------------------------------------------+ //|  Параметры:                                                                | //|    sy - наименование инструмента             (""   - любой символ,         | //|                                               NULL - текущий символ)       | //|    op - операция                             (-1   - любая позиция)        | //|    mn - MagicNumber                          (-1   - любой магик)          | //|    dt - Дата и время в секундах с 1970 года  ( 0   - с начала истории)     | //+----------------------------------------------------------------------------+ double GetProfitFromDateInCurrency( string sy= "" , int op=- 1 , int mn=- 1 , datetime dt= 0 ) {    double p= 0 ;    int     i, k=OrdersHistoryTotal();    if (sy== "0" ) sy= Symbol ();    for (i= 0 ; i<k; i++) {      if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {        if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {          if (OrderType()==OP_BUY || OrderType()==OP_SELL) {            if (mn< 0 || OrderMagicNumber()==mn) {              if (dt<OrderCloseTime()) {               p+=OrderProfit()+OrderCommission()+OrderSwap();             }           }         }       }     }   }    return (p); } // код Кима изменил на это и теперь от считает профит за сегодня и обнуляется в полночь double GetProfitFromDateInCurrency1( string sy= "0" , int op=- 1 , int mn=- 1 ) {    double p= 0 ;    int     i, k=OrdersHistoryTotal();    datetime dt=StrToTime(TimeToStr( TimeCurrent (), TIME_DATE ));    if (sy== "0" ) sy= Symbol ();    for (i= 0 ; i<k; i++) {      if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {        if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {          if (OrderType()==OP_BUY || OrderType()==OP_SELL) {            if (mn< 0 || OrderMagicNumber()==mn) {              if (dt<OrderCloseTime()) {               p+=OrderProfit()+OrderCommission()+OrderSwap();             }           }         }       }     }   }    return (p); }

안녕하세요. 어제 마감된 거래의 이익을 계산하는 기능을 도와주세요. 오늘의 수익을 내고 싶습니다. 어제의 이익, 어제의 이익

오늘의 이익을 계산하기 위해 코드를 복사했습니다 /

또는 오늘의 이익의 가치가 어제의 이익으로 낮게 이전되고 어제의 이익으로 이전되도록 만드는 방법
파일:
 
Lomonosov1991 :

안녕하세요. 어제 마감된 거래의 이익을 계산하는 기능을 도와주세요. 오늘의 수익을 내고 싶습니다. 어제의 이익, 어제의 이익

오늘의 이익을 계산하기 위해 코드를 복사했습니다 /

또는 오늘의 이익의 가치가 어제의 이익으로 낮게 이전되고 어제의 이익으로 이전되도록 만드는 방법

함수 설명에 매개변수를 하나 더 추가하고 확인 조건을 변경합니다.

 double GetProfitFromDateInCurrency( string sy= "" , int op=- 1 , int mn=- 1 , datetime dtstart, datetime dtstop)
....
if (OrderCloseTime()>=dtstart &&  dtstop<=OrderCloseTime()) {
 
이고르 마칸 덕분입니다. 나는 어제 그 기능을 했다
 double GetProfitFromDateInCurrency2( string sy= "0" , int op=- 1 , int mn=- 1 )
{
   double p= 0 ;
   int     i, k=OrdersHistoryTotal();
   datetime dt=StrToTime(TimeToStr( TimeCurrent (), TIME_DATE ))- 24 * 60 * 60 ;
   datetime dtstart=StrToTime(TimeToStr( TimeCurrent (), TIME_DATE ));

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) {
               if (dt<OrderCloseTime() && OrderCloseTime()<=dtstart) {              
                  p+=OrderProfit()+OrderCommission()+OrderSwap();
                 
            }
          }
        }
      }
    }
  }
   return (p);
}
그리고 그 전날 함수는 이것을 수행했습니다.
 double GetProfitFromDateInCurrency3( string sy= "0" , int op=- 1 , int mn=- 1 )
{
   double p= 0 ;
   int     i, k=OrdersHistoryTotal();
   datetime dt=StrToTime(TimeToStr( TimeCurrent (), TIME_DATE ))- 24 * 60 * 60 * 2 ;
   datetime dtstart=StrToTime(TimeToStr( TimeCurrent (), TIME_DATE ))- 24 * 60 * 60 ;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) {
               if (dt<OrderCloseTime() && OrderCloseTime()<=dtstart) {              
                  p+=OrderProfit()+OrderCommission()+OrderSwap();
                 
            }
          }
        }
      }
    }
  }
   return (p);
}
주말에 초기화 되지 않게 할 수 있나요? 음, 즉, 어제 월요일은 그에게 금요일이었습니다. 그럼 주말을 어떻게 보내야 할까요?
파일:
Screenshot_2.png  844 kb