[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 578

 

안녕하세요.

문제는 사용자 지정 지표 에서 표준 지표를 호출할 수 있지만 표준 지표가 가격을 기반으로 하지 않고 다른 사용자 지정 지표를 기반으로 계산되도록 할 수 있습니까?

고맙습니다.

 
표준 코드에 있는 내용은 이를 기반으로 계산됩니다. 저것들. 그것은 금지되어 있습니다.
 

표준 코드에 있는 내용은 이를 기반으로 계산됩니다. 저것들. 그것은 금지되어 있습니다.

물론 "OnArray"가 아니면
 
valenok2003 >> :
Что в коде стандартного заложено, на основе того он и будет расчитываться. Т.е. нельзя.
그러나 표준 지표와 동일한 알고리즘을 사용할 수 있습니다.
 
SergNF >> :

Если конечно не "OnArray"
코드에서 어떻게 보이나요?
 
trader_fx писал(а) >>
코드에서 어떻게 보이나요?


배열을 채우고 "표준 표시기"(RSIOnArray, CCIOnArray 등 - 약 7개)를 설정합니다.

포럼에서 극단적으로 언급 하지만 일반적으로 F1, 튜토리얼 등

 
Pyxlik2009 를 설명할 사람들이 썼습니다. >>

Все слава богу написал но вот сталкнулся с такой проблемой тестится тестится а потом тупо встанет и стоит в чем проблема?

어떻게 든 테스트 속도를 높일 수 있습니다. 그렇지 않으면 오랫동안 테스트하지 않는 고문이 두 명 이상 있습니다.)))


 
Pyxlik2009 >> :
парни кто обьяснит Pyxlik2009 писал(а) >>

하나님께 모든 것을 써주셔서 감사합니다. 하지만 그런 문제가 발생했습니다.

어떻게 든 테스트 속도를 높일 수 있습니다. 그렇지 않으면 오랫동안 테스트하지 않는 고문이 두 명 이상 있습니다.)))


모든 틱 방법을 사용하여 장기간에 걸쳐 H4 또는 D1과 같은 큰 기간에 최적화 하면 이런 일이 발생합니다. 코드를 최적화하고, 불필요한 사이클을 모두 제거하고, 버퍼, 어레이(필요하지 않은 경우)의 크기를 줄이는 것이 필요합니다. 시가 아래에 Expert Advisor를 작성하는 것이 더욱 좋습니다. 사용 가능한 메모리가 충분한지 확인하십시오. 과거에는 꽤 이상한 버그도 있었습니다. 예를 들어, [/* ... */]와 같은 주석을 많이 사용하면 테스트 속도가 크게 느려지고 제거한 후 실행되기 시작했습니다.

 

다음은 초보자를 위한 코드입니다.

 //+------------------------------------------------------------------+
//|                                          Arrows and Curves EA.mq4 |
//|           Простой эксперт использующий индикатор Стрелки и Линии |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006"
#property link       "kolas@list.ru"

// Параметры торговли для H4 EURUSD
extern double TrailingStop = 30 ;
extern double TakeProfit   = 30 ;
extern double StopLoss     = 80 ;

// Параметры  моего индикатора индикатора 
extern int MA_Period= 13 ;
extern int MA_Shift= 0 ;
extern int MA_Method= 0 ;
extern int SSP             = 6 ; 

// Параметры MM
extern double Slippage     = 3 ;
extern bool PropotinalLots = false; // Реинвестирование
extern double MinDepo      = 100 ;   // Минимальный депозит
extern double FixedLots    = 0.1 ;   // Фиксированный размер ордера
extern double PercentLots  = 10 ;     // Процент реинвестирования

// Идентификация эксперта
extern string NameEA       = "Arrows and Curves" ;
extern int MAGICNUM        = 123 ;

double Lots;
double Sloss, Tprof;
bool Buy = false, Sell = false;
static int PrevBar = 0 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init() 
  { return ( 0 );}
  
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit() 
  { return ( 0 );}
  
//+------------------------------------------------------------------+
//|  Получение сигналов на покупку и продажу                         |
//+------------------------------------------------------------------+
void Indicators() 
   {                  
      Buy = ( iCustom ( Symbol (), 0 , "BBANDS~1" , MA_Period, MA_Shift, MA_Method,   2 , 2 ) > 0 ) &&  (Time[ 0 ] != PrevBar);
      Sell = ( iCustom ( Symbol (), 0 , "BBANDS~1" , Length, Deviation, MoneyRisk, Signal, Line, Nbars, 3 , 3 ) > 0 ) && (Time[ 0 ] != PrevBar);
   }
   
//+------------------------------------------------------------------+
//|  Вывод предупреждения об отправке ордера                         |
//+------------------------------------------------------------------+
void prtAlert( string str = "" ) 
  {
       Print (str);
       Alert (str);
  }
  
//+------------------------------------------------------------------+
//|  Расчет размера ордера                                           |
//+------------------------------------------------------------------+
void LotsSize()
   {
      Lots = FixedLots;
       if (PropotinalLots) Lots = MathCeil (AccountFreeMargin() / 10000 * PercentLots) / 10 ;
       if (Lots > 10000 ) Lots = 10000 ;
   }  
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() 
  {
   // Проверка истории
   if ( Bars < SSP) 
     {
       Print ( "Not enough bars for this strategy - " , NameEA);
       return (- 1 );
     }
   // Расчет значений индикатора
   Indicators();
   
   // Расчет желаемого размера ордера
   LotsSize();   

   // Трейлинг и разворот
   int totalOrders = OrdersTotal ();
   int numPos = 0 ;

   for ( int i = 0 ; i < totalOrders; i++) 
     {
       OrderSelect (i, SELECT_BY_POS);    
       if (OrderSymbol() == Symbol () && OrderMagicNumber() == MAGICNUM) 
         {
           numPos++;
           // Проверяем покупку
           if (OrderType() == OP_BUY) 
             {
               // Закрываем при развороте
               if (Sell) 
               {
                  OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Blue ); 
                  numPos--;
               }
               else
               // Трейлинг стоп
               if (TrailingStop > 0 ) 
                 {
                   if (Bid - OrderOpenPrice() > TrailingStop* Point ) 
                     {
                       if (OrderStopLoss() < (Bid - TrailingStop* Point ))
                           OrderModify(OrderTicket(), OrderOpenPrice(), 
                                       Bid - TrailingStop* Point , OrderTakeProfit(), 0 , Blue );
                     }
                 }
               
             } 
           else 
             // Проверяем продажу
             {
               // Закрываем при развороте
               if (Buy) 
               {
                  OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Red );
                  numPos--;
               }
               else
               // Трейлинг стоп
               if (TrailingStop > 0 ) 
                 {
                   if (OrderOpenPrice() - Ask > TrailingStop* Point )
                     {
                       if (OrderStopLoss() == 0 || OrderStopLoss() > Ask + TrailingStop* Point )
                           OrderModify(OrderTicket(), OrderOpenPrice(), 
                                       Ask + TrailingStop* Point , OrderTakeProfit(), 0 , Red );
                     }           
                 }
             }
         }
     }
     
   // Открываем новые ордера
   if (numPos < 1 )
     {   
       // Если размер депозита устраивает
       if (AccountFreeMargin() < MinDepo)
         {
           Print ( "Not enough money to trade " , Lots, " lots. Strategy:" , NameEA);
           return ( 0 );
         }
       // Если есть сигнал на покупку
       if (Buy)
         {
           Sloss = Ask - StopLoss * Point ;
           Tprof = Bid + TakeProfit * Point ;
           PrevBar = Time[ 0 ];
             OrderSend ( Symbol (), OP_BUY, Lots, Ask, Slippage, Sloss, Tprof, NameEA + CurTime(), 
                     MAGICNUM, 0 , Green );
           prtAlert( "Buying" ); 
         }
       // Если есть сигнал на продажу
       if (Sell) 
         {
           Sloss = Bid + StopLoss * Point ;
           Tprof = Ask - TakeProfit * Point ;
           PrevBar = Time[ 0 ];
             OrderSend ( Symbol (), OP_SELL, Lots, Bid, Slippage, Sloss, Tprof, NameEA + CurTime(), 
                     MAGICNUM, 0 , Red );
           prtAlert( "Selling" ); 
         }
     } 

   return ( 0 );
  }
 
Pyxlik2009 >> :

다음은 초보자를 위한 코드입니다.

왜 그렇게 오래 걸렸는지 모두가 이미 이해했습니다. tetetsya))))