초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 323

 

저것들. 이 인쇄 후 데이터를 수신할 때 이해하고 ... 및 로그의 메시지

 Wait Data for GBPUSD 

작업 알고리즘에 따라 테스트가 진행됩니까?

 
R0MAN :

저것들. 이 인쇄 후 데이터를 수신할 때 이해하고 ... 및 로그의 메시지

작업 알고리즘에 따라 테스트가 진행됩니까?

그리고 어떤 기능의 비용이 드는 라인은 무엇입니까? OnInit()에 있는 경우 - 이 줄 이후에는 아래의 모든 항목이 더 이상 슬레이브가 아닙니다... OnCalculate() 가 작동하기 시작합니다. 테스트는 불완전하게 초기화된 GBPUSD 칠면조와 함께 제공됩니다.
 
안녕하세요 여러분, #property strict 지시문을 설정하면 즉시 4가지 오류가 표시됩니다. 해결 방법
2,3,5,8 라인의 오류

if (CloseFriday == TRUE && DayOfWeek() == 5 && TimeCurrent() >= StrToTime(CloseFridayHour + ":00")) return (0);
op = NormalizeDouble(입찰가, 자릿수);
tp = NormalizeDouble(Bid - (TakeProfit)*포인트, 자릿수);
if (TakeProfit==0) tp=0;
sl = NormalizeDouble(Bid + (StopLoss)*Point,Digits);
if (StopLoss==0) ​sl=0;
CalcLot();
티켓=주문이 존재함(OP_SELL);
if (티켓<MaxTrades && OrderSymbol()==Symbol())
if (티켓==-1)
 
MigVRN :
그리고 어떤 기능의 비용이 드는 라인은 무엇입니까? OnInit()에 있는 경우 - 이 줄 이후에는 아래의 모든 항목이 더 이상 슬레이브가 아닙니다... OnCalculate()가 작동하기 시작합니다. 테스트는 불완전하게 초기화된 GBPUSD 칠면조와 함께 제공됩니다.

이해했다. 덕분에. 전에는 없던데...

OnCalculate() 가 작동하기 시작합니다.

 //------------------------------------------------------------------    OnInit
int OnInit ()
{
         SetIndexBuffer ( 0 , Mediana, INDICATOR_DATA );
         ArraySetAsSeries (Mediana, true );
         // задали имена валют
      ...
//------------------------------------------------------------------    OnCalculate
int OnCalculate ( const int rates_total, const int prev_calculated,
                 const datetime & time[], const double & open[], const double & high[], const double & low[], const double & close[],
                 const long & tick_volume[], const long & volume[], const int & spread[])
{

         for ( int i= 0 ; i< 6 ; i++) if (Pair[i].CopyBuf(nBars)< 0 ) { Print ( "Wait Data for " +Pair[i].m_name); return ( 0 ); } // получили данные из МА в буфера // при ошибке выходим
        
         int limit=rates_total-prev_calculated; if (limit>=rates_total) limit=rates_total- 1 ; // ограничили на таймсерию
         if (limit>nBars) limit=nBars; // ограничили на число скопированных данных
        
         for ( int i= 0 ; i<limit; i++) // проходим по треубемому промежутку и расчитываем медиану
        {
 

좋은 하루, 친애하는 포럼 사용자.

주기가 반복되지 않는 이유를 알려주세요.

첫 시도 창작이니 엄하게 판단하지 마세요)

미리 감사드립니다.

 //+-------------------Переменные MACD--------------------------------+
extern int fast_ema_period= 12 ; // период быстрой средней
extern int slow_ema_period= 26 ; // период медленной средней
extern int signal_period= 9 ; // период усреднения разности
extern int shift_MACD= 0 ; // сдвиг индикатора MACD
//+-------------------Переменные DeM---------------------------------+
extern int DeM_period= 14 ; // период усреднения
extern double levelUP= 0.7 ; // верхний уровень
extern double levelDONE= 0.3 ; // нижний уровень
extern int shift_DeM= 0 ; // сдвиг индикатора DeM
//+-------------------Общие переменные-------------------------------+
extern int Magic= 7770000 ; // магический номер
extern double Lot= 0.01 ; // размер лота
extern int slippage= 4 ; // проскальзывание цены
extern int SL= 150 ; // СтопЛосс
extern int TP= 300 ; // ТейкПрофит
int kolpos= 0 ; // количество позиций советника
//+------------------------------------------------------------------+
//| Старт советника                                                  |
//+------------------------------------------------------------------+
int start()                                  
{
   double MAIN= iMACD ( Symbol (), 0 ,fast_ema_period,slow_ema_period,signal_period, PRICE_CLOSE ,MODE_MAIN,shift_MACD);
   double SIGNAL= iMACD ( Symbol (), 0 ,fast_ema_period,slow_ema_period,signal_period, PRICE_CLOSE ,MODE_SIGNAL,shift_MACD);
   double DeMval= iDeMarker ( Symbol (), 0 ,DeM_period,shift_DeM);
//---
   for ( int pos= 0 ; pos< OrdersTotal (); pos++)
      {
       OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
       if (OrderSymbol()== Symbol ()&&OrderMagicNumber()==Magic)
      kolpos++;
      }
   if (kolpos== 0 )
      {
       if (MAIN> 0 &&SIGNAL> 0 &&SIGNAL>MAIN&&DeMval>levelUP)
       OrderSend ( Symbol (),OP_SELL,Lot,Bid,slippage,Bid+SL* Point ,Bid-TP* Point , NULL ,Magic, 0 , clrBlue );
       if (MAIN< 0 &&SIGNAL< 0 &&SIGNAL<MAIN&&DeMval<levelDONE)
       OrderSend ( Symbol (),OP_BUY,Lot,Ask,slippage,Ask-SL* Point ,Ask+TP* Point , NULL ,Magic, 0 , clrRed );
      }
//---
   return ( 0 );
} 
 
N0mad :

좋은 하루, 친애하는 포럼 사용자.

주기가 반복되지 않는 이유를 알려주세요.

첫 시도 창작이니 엄하게 판단하지 마세요)

미리 감사드립니다.

좋은 저녁이에요. 변수 kolpos를 start()의 본문에 삽입하십시오.
 
Tapochun :
좋은 저녁이에요. 변수 kolpos를 start()의 본문에 삽입하십시오.
귀하의 신속한 응답에 감사드립니다. 많은 도움이 되었습니다.
 

모두에게 경례!

그런 상황.

전문가는 TF M15에서 작동합니다.

동시에 더 높은 기간의 가격 데이터를 복사합니다(예: CopyHigh(Symbol, PERIOD_D1 ,0,period,Hi_array) ).

1년 이상 실패합니다. 일반적으로 동기화 결과가 1년에 불과한 약 25,000 15M 막대를 보여주기 때문에 놀라운 일이 아닙니다.

더 오랜 기간 동안 데이터를 얻으려면 어떻게 해야 합니까? D1에 대해 동기화하거나 다르게 수행할 수 있습니까?

 
metatrader4 745build, 이전 버전에 대한 스크립트를 삽입하는 방법, 그렇지 않으면 스크립트가 작동하지 않습니다
 
valera5111 :
metatrader4 745build, 이전 버전에 대한 스크립트를 삽입하는 방법, 그렇지 않으면 스크립트가 작동하지 않습니다

정확히 무엇을 하고 싶은지 지정해 주세요.

어떤 오류가 발생하는지 설명하십시오(컴파일할 때 "오류" 탭 참조), 터미널에서 실행할 때 "전문가" 탭 참조).

사유: