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

 

10년 동안 거래 계정의 이익이 500%(조건부 수치)였다면 -
받은 모든 이익이 재투자되었음을 고려하여 평균 연간 이익을 계산하는 방법은 무엇입니까?
고맙습니다!

 
frixer :
안녕하세요 여러분 새해 복 많이 받으세요. 얘들아 도와줘 한 번만 주문하려면 어쩔 수 없어 그 이후에 조건이 충족되면 나중에 이미 주문이 있으면 나중에 주문이 들어오지 않도록 해야 한다 두 번째 시간. 가능하다면 예시.

교과서 의 예가 귀하의 경우입니다.
 
atztek :

10년 동안 거래 계정의 이익이 500%(조건부 수치)였다면 -
받은 모든 이익이 재투자되었음을 고려하여 평균 연간 이익을 계산하는 방법은 무엇입니까?
고맙습니다!

6의 10번째 루트에서 1을 빼고 100을 곱합니다. 우리는 연간 19.62%를 얻습니다.
 
아래로 이동
 
Roman. :

교과서 의 예가 귀하의 경우입니다.

예, 읽었지만 어쨌든 내 알고리즘에는 작동하지 않습니다. 각 틱마다 주문을 밀어 넣습니다. 여기에 코드가 있습니다.

 //+------------------------------------------------------------------+
//|                                                     trade v1.mq4 |
//|                                           |
//|                                                 frixer@yandex.ru |
//+------------------------------------------------------------------+

//--- input parameters
//extern int       Время;
//extern int       Input;
//extern int       SL;
//extern int       TP;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   int bars = 9 ; // количество баров
   int gmt = 16 ; // время входа
   double input = 0.0010 ; // вход на рынок
   double sl = 100 ; // уровень SL от высоты коробки в %
   double tp = 100 ;
   int lot= 1 ;
   int topOrder,bottomOrder;
   if ( Hour ()==gmt) // проверяем свечу
      {
         double Shift_high = iHighest ( NULL , PERIOD_H1 ,MODE_HIGH,bars, 0 ); //поиск бара с максимальной ценой из bars начиная с 0-го бара
         double Shift_low  = iLowest ( NULL , PERIOD_H1 ,MODE_LOW ,bars, 0 ); //поиск бара с минимальной  ценой из bars начиная с 0-го бара
         double Price_high = iHigh    ( NULL , PERIOD_H1 ,Shift_high); // присвоение переменной максимального значение цены
         double Price_low  = iLow     ( NULL , PERIOD_H1 ,Shift_low);   // присвоение переменной минимального значение цены
         double Hinput = Price_high + input ; // вверхняя граница входа
         double Linput = Price_low - input ;   // нижняя граница входа
         double height_box = Price_high - Price_low; // высота коробки bars
         double volumeSL = height_box / 100 * sl; // уровень SL зависит от %
        
         
               topOrder= OrderSend ( Symbol (),OP_BUYSTOP,lot,Hinput, 3 ,Price_high-(height_box/ 100 *sl),Price_high+(height_box/ 100 *tp), "BUY" , 16384 , 0 , Green );
                     if (topOrder< 0 )
                        {
                           Print ( "Верхний ордер ошибка #" , GetLastError ());
                           return ( 0 );
                        }
      }
//----
   return ( 0 );  
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+

예를 스케치할 수 있습니다. 매우 감사할 것입니다. 이 방법으로 시도했습니다(친구 조언). 작동하지 않습니다.

         int Orerov= 0 ;
         int Orderov_all = OrdersTotal ();                                               // всего ордеров в терминале
             for ( int n = 0 ;n<Orderov_all;n++)                                             // начало цикла перебора ордеров
            {
             if ( OrderSelect (n,SELECT_BY_POS)==TRUE)                                   // выбран первый в списке ордер
             if (Comm == OrderComment ())                                                 // условие совпадения комментария
               {
                Tip= OrderType ();                                                     // тип      
                Cena= NormalizeDouble ( OrderOpenPrice (), 4 );                           // цена      
                Ticket= OrderTicket ();                                               // тикет     
                Stop= NormalizeDouble ( OrderStopLoss (), 4 );                             // стоп-лосс
                LOT= NormalizeDouble ( OrderLots (), 1 );                                 // размер лота
                Orderov= 1 ;                                                           //
               }
             }
 
frixer :
안녕하세요 여러분 새해 복 많이 받으세요. 얘들아 도와줘 한 번만 주문하는 건 어쩔 수 없어 조건만 맞으면 주문하고 이미 주문이 있으면 두 번 하면 안 돼. 가능하다면 예시.

 if ( OrdersTotal () > 0 ) {
   return ( 0 );
}
// Если установлен хоть один ордер, то никакой код после этого комментария уже не выполнится
 
Reshetov :
6의 10번째 루트에서 1을 빼고 100을 곱합니다. 우리는 연간 19.62%를 얻습니다.

고맙습니다!

 
Reshetov :

감사해요...
 

일반적으로 질문은

다중 기간 지표가 있습니다.

계산을 최적화하기 위해 다음 루프를 사용합니다.



// TimeFrames[i] массив с периодами

for (i=0; i<NumTimeFrames; i++)

{
if (total_bars[i] != iBars(instrument, TimeFrames[i]) )
{

// тут вычисления индиктора

total_bars[i] = iBars(instrument, TimeFrames[i]);
}

}



주요 문제는 iBars 가 현재 기간이 아닌 기간 동안 가격을 로드하지 않는다는 것입니다...

IndicatorCounted 및 RefreshRates와 같은 모든 MQL 트릭

현재 기간 동안만 유효합니다. iBar는 히스토리에서 가져오고 히스토리는 차트의 마침표를 변경해야만 로드됩니다. 무엇을 할까요? 백그라운드에서 다른 기간(현재 기간 제외)의 막대를 로드하기 위한 MQL의 도구가 있습니까?


추신 내가 너무 많이 설명하지 않았기를 바랍니다 :(
 
palladin :

주요 문제는 iBars가 현재 기간이 아닌 기간 동안 가격을 로드하지 않는다는 것입니다...

주요 문제는 iBars 가 가격을 로드하지 않고 주어진 기간 동안 알려진 바의 수를 로드한다는 것입니다. 게다가 방금 확인한 것처럼 테스터와 차트 모두에서 매우 정확하게 수행합니다.