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

 
Николай Никитюк :
안녕하세요! 2020.11.15_05:51 GMT+3. MT4의 전략 테스터 에게 뭔가 너무 느립니다. 예전에는 GBPUSD 시간당 차트에서 3개월간의 이력을 짧은 시간 동안 확인하는 것이 정상인 것 같았습니다. 어드바이저가 확인했습니다. 그리고 최근에 나는 한 달의 역사 동안 GOLD, M15에 대한 고문을 확인했습니다. 나는 1 시간 47 분 동안 확인했습니다. 테스터에서 하루 반이 지났습니다. 전략 테스터가 빠르게 작동하도록 하려면 무엇을 할 수 있습니까? ServiceDesk에 쓸 수 있습니까? 어떻게 해야할지 누가 압니까? 답변을 기다리겠습니다. 06:04 GMT+3. 네. MT4 테스터의 로그를 붙일 수 있습니다.

어떤 표시기가 설정되었는지에 따라 다릅니다. 테스터가 느려질뿐만 아니라 전체 컴퓨터가 멈추는 표시기가 있습니다.

 
SanAlex :

어떤 표시기가 설정되었는지에 따라 다릅니다. 테스터가 느려질뿐만 아니라 전체 컴퓨터가 멈추는 표시기가 있습니다.

그는 더 이상 대답을 기다리지 않습니다 . 시간 이 다 되었습니다!

작성된 게시물: 2020.11.15_05:51 GMT+3

15일에도 " 답변을 기다리겠습니다. 06:04 GMT+3"에 대한 답변도 예상했습니다.

전략 테스터 에게 뭔가 너무 느립니다. 예전에는 GBPUSD 시간당 차트에서 3개월간의 이력을 짧은 시간 동안 확인하는 것이 정상인 것 같았습니다. 어드바이저가 확인했습니다. 그리고 최근에 나는 한 달의 역사 동안 GOLD, M15에 대한 고문을 확인했습니다. 나는 1 시간 47 분 동안 확인했습니다. 테스터에서 하루 반이 지났습니다. 전략 테스터가 빠르게 작동하도록 하려면 무엇을 할 수 있습니까? ServiceDesk에 쓸 수 있습니까? 어떻게 해야할지 누가 압니까? 답변을 기다리겠습니다. 06:04 GMT+3 . 네. MT4 테스터의 로그를 붙일 수 있습니다.


따라서 도움을 주고 싶다면 신속하고 정시에 응답하십시오!

추신 나 자신은 대답 할 시간이 없었습니다. 늦잠을 잤습니다.

 
Vitaly Muzichenko :

그는 더 이상 대답을 기다리지 않습니다 . 시간 이 다 되었습니다!

작성된 게시물: 2020.11.15_05:51 GMT+3

답은 15일에도 예상됐다. " 답변을 기다리겠습니다. 06:04 GMT+3"


따라서 도움을 주고 싶다면 신속하고 정시에 응답하십시오!

추신 나 자신은 대답 할 시간이 없었습니다. 늦잠을 잤습니다.

한 사람이 묻고 다른 사람이 답을 찾는 일이 발생합니다.

 
Gudgeon :
큐브 루트를 계산하는 방법을 알려주시겠습니까? 식 MathPow(x,1/3)=1

1/3=0 따라서 값 중 하나를 이중 유형 (예: 1/3.0 또는 1.0/3 또는 1.0/3.0)에 넣어야 합니다.

 
Alexey Viktorov :

1/3=0 따라서 값 중 하나를 이중 유형 (예: 1/3.0 또는 1.0/3 또는 1.0/3.0)에 넣어야 합니다.

고맙습니다!

 

안녕하세요.

저는 어드바이저로 시작하여 첫 번째로 리메이크하여 손익분기점에서 손절매를 하기로 결정했습니다.

모든 것이 올바른 것 같고 컴파일되지만 번역하고 싶지 않습니다. 도와주세요.

 //+------------------------------------------------------------------+
//|                                               Moving Average.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright    "2005-2014, MetaQuotes Software Corp."
#property link          "http://www.mql4.com"
#property description "Moving Average sample expert advisor"
#property strict
//#define MAGICMA  20131111
//--- Inputs
input double Lots          = 0.1 ;
input double MaximumRisk   = 0.02 ;
input double DecreaseFactor= 3 ;
input int     SL            = 600 ;
input int     Slip          = 50 ;
input int     MovingPeriod  = 12 ;
input int     MovingShift   = 6 ;
//extern string Trailing_Funcion   = "Main_step_tral";
//extern bool   tral               =true;
extern int     TralStop       = 40 ; // Растояние в пунктах, откуда начнем тралить : если цена прошла в плюс 40 пунктов, то стоп передвинется на 5 пунктов в плюсовом поле
extern int     Tral           = 5 ; // Шаг трала
extern int     MAGICMA        = 12345 ;

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders( string symbol)
  {
   int buys,sells;
   buys= 0 ;
   sells= 0 ;
//---
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
       if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA)
        {
         if (OrderType()==OP_BUY)  buys++;
         if (OrderType()==OP_SELL) sells++;
        }
     }
//--- return orders volume
   if (buys> 0 ) return (buys);
   else        return (-sells);
  }

//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int     orders=HistoryTotal();     // history orders total
   int     losses= 0 ;                   // number of losses orders without a break
//--- select lot size
   lot= NormalizeDouble (AccountFreeMargin()*MaximumRisk/ 1000.0 , 1 );
//--- calcuulate number of losses orders without a break
   if (DecreaseFactor> 0 )
     {
       for ( int i=orders- 1 ;i>= 0 ;i--)
        {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== false )
           {
             Print ( "Error in history!" );
             break ;
           }
         if (OrderSymbol()!= Symbol () || OrderType()>OP_SELL)
             continue ;
         //---
         if (OrderProfit()> 0 ) break ;
         if (OrderProfit()< 0 ) losses++;
        }
       if (losses> 1 )
         lot= NormalizeDouble (lot-lot*losses/DecreaseFactor, 1 );
     }
//--- return lot size
   if (lot< 0.1 ) lot= 0.1 ;
   return (lot);
  }
//+------------------------------------------------------------------+
//| Функция выставления стоп лосс  в БУ                              |
//+------------------------------------------------------------------+
void T_SL()
{
int i= 0 ;
for (i= 0 ; i< OrdersTotal (); i++)
{
if (( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))) continue ;
if (OrderSymbol() != Symbol ()) continue ;
if (OrderMagicNumber()!=MAGICMA) continue ;
if (OrderType()==OP_BUY)
{
if ( NormalizeDouble (Bid-OrderOpenPrice(), Digits )> NormalizeDouble (TralStop* Point , Digits ))
//if(OrderOpenPrice()<=(Bid-TralStop))//&&OrderOpenPrice()>OrderStopLoss())
{      
OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble (Bid-Tral* Point , Digits ),OrderTakeProfit(), 0 ,Green);
}
}  
if (OrderType()==OP_SELL)
{
if ( NormalizeDouble (OrderOpenPrice()-Ask, Digits )> NormalizeDouble (TralStop* Point , Digits ))
//if(OrderOpenPrice()>=(Ask+TralStop))//&&OrderOpenPrice()<OrderStopLoss()) 
{
OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble (Ask+Tral* Point , Digits ),OrderTakeProfit(), 0 ,Red);
}
} 
}
}
//| Конец функции тралл стоп лосс |  
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int     res;
//--- go trading only for first tiks of new bar
   if (Volume[ 0 ]> 1 ) return ;
//--- get Moving Average 
   ma= iMA ( NULL , 0 ,MovingPeriod,MovingShift, MODE_SMA , PRICE_CLOSE , 0 );
//--- sell conditions
   if (Open[ 1 ]>ma && Close[ 1 ]<ma)
     {
      res= OrderSend ( Symbol (),OP_SELL,LotsOptimized(),Bid,Slip, NormalizeDouble (Bid+SL* Point , Digits ), 0 , "" ,MAGICMA, 0 , clrDarkRed );
       return ;
     }
//--- buy conditions
   if (Open[ 1 ]<ma && Close[ 1 ]>ma)
     {
      res= OrderSend ( Symbol (),OP_BUY,LotsOptimized(),Ask,Slip, NormalizeDouble (Ask-SL* Point , Digits ), 0 , "" ,MAGICMA, 0 , clrDarkGreen );
       return ;
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//--- go trading only for first tiks of new bar
   if (Volume[ 0 ]> 1 ) return ;
//--- get Moving Average 
   ma= iMA ( NULL , 0 ,MovingPeriod,MovingShift, MODE_SMA , PRICE_CLOSE , 0 );
//---
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
       if (OrderMagicNumber()!=MAGICMA || OrderSymbol()!= Symbol ()) continue ;
       //--- check order type 
       if (OrderType()==OP_BUY)
        {
         if (Open[ 1 ]>ma && Close[ 1 ]<ma)
           {
             if (!OrderClose(OrderTicket(),OrderLots(),Bid, 3 ,White))
               Print ( "OrderClose error " , GetLastError ());
           }
         break ;
        }
       if (OrderType()==OP_SELL)
        {
         if (Open[ 1 ]<ma && Close[ 1 ]>ma)
           {
             if (!OrderClose(OrderTicket(),OrderLots(),Ask, 3 ,White))
               Print ( "OrderClose error " , GetLastError ());
           }
         break ;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick ()
  {
//--- check for start trall
   if (TralStop!= 0 ) T_SL();
 //  if(tral){T_SL();}  // это строка запуска тралла
//--- check for history and trading
   if ( Bars < 100 || IsTradeAllowed()== false )
       return ;
//--- calculate open orders by current symbol
   if (CalculateCurrentOrders( Symbol ())== 0 ) CheckForOpen();
   else                                   CheckForClose();
//---
  }
//+------------------------------------------------------------------+
 



double    Fibo_Level= ObjectGetDouble (
                       0 ,           // идентификатор графика
                       n,               // имя объекта
                       OBJPROP_LEVELVALUE ,           // идентификатор свойства
                       4      // модификатор свойства
                    );

여기요!!! 레벨 의 가격을 얻는 방법을 알려주세요   61.8 피보?

Che는 설명과 함께 레벨 번호를 얻는 방법만 찾았습니다. 일반적인 함수의 경우 - 개체 피보나치의 수준에 대한 설명을 반환합니다??? 이 설명이 가격과 관련이 없다면 실용적인 관점에서 이 설명을 어떻게 사용할 수 있습니까? 그냥 흥미롭다)))


정말 가격은 앵커 포인트 사이의 거리로 계산해야합니까 ???

Документация по MQL5: Операции с графиками / ChartID
Документация по MQL5: Операции с графиками / ChartID
  • www.mql5.com
ChartID - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Kira27 :

여기요!!! 레벨 의 가격을 얻는 방법을 알려주세요   61.8 피보?

Che는 설명과 함께 레벨 번호를 얻는 방법만 찾았습니다. 일반적인 함수의 경우 - 개체 피보나치의 수준에 대한 설명을 반환합니다??? 이 설명이 가격과 관련이 없다면 실용적인 관점에서 이 설명을 어떻게 사용할 수 있습니까? 그냥 흥미롭다)))


정말 가격은 앵커 포인트 사이의 거리로 계산해야합니까 ???

개체 좌표의 가격 사이는 100%입니다. 레벨 61.8은 레벨 0의 가격에 61.8%를 더한 가격입니다. 이것은 그래프 작업이 아닙니다.

 
Alexey Viktorov :

개체 좌표의 가격 사이는 100%입니다. 레벨 61.8은 레벨 0의 가격에 61.8%를 더한 가격입니다. 이것은 그래프 작업이 아닙니다.

감사해요!!! 나는 그렇게 생각했다.

 

안녕하세요. mql4에서 MarketInfo() 함수는 현재 시장 정보를 얻는 데 사용됩니다. MODE_LOTSIZE, MODE_TICKVALUE 및 MODE_TICKSIZE를 현재 순간이 아니라 역사상 바의 종가 를 얻으려면 어떤 함수를 사용해야 합니까?