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

 

친구 동지들! ROC AUDUSD, GBPUSD의 정보를 읽어 GBPAUD로 거래하는 기적의 유도를 만들어보기 위한 저의 시도 2번입니다!! :)) 펜 테스트 - 원시적이지만 정말 해보고 싶었습니다!!! 최적화 없이 테스터에서 실행하면 IT HANGS VERY WELL!이 계속 성공적으로 로드되었습니다... 결과적으로 단일 거래 작업 이 아닙니다. 글쎄, 내가 망친 것이 분명하지만, 지식이 풍부한 사람들이 어디인지 말해보십시오. !!! :)) 이것은 소위 코드입니다. Expert Advisor 일반 사용자 지정 ROC에서 데이터 가져오기

 //+------------------------------------------------------------------+
//|                                                    Robot_Rocky_Rich |
//|                                                          JonsonAlla |
//|                                                    deep_ampik@bk.ru |
//+------------------------------------------------------------------+

extern double TakeProfit = 700 ;
extern double Sl = 200 ;
extern double Lots = 0.01 ;
             
//+------------------------------------------------------------------+
int start()
 {
   int cnt, ticket;
   double x1= iCustom ( "AUDUSD" , PERIOD_H1 , "ROC" , 12 , 1 , 0 );
   double x2= iCustom ( "GBPUSD" , PERIOD_H1 , "ROC" , 12 , 1 , 0 ); 
  
  
     
   /**total=OrdersTotal();
  if(total<1)//проверка количества ордеров 
   {
   if(AccountFreeMargin()<(1000*Lots))
    {
     Print("Недостаточно средств = ", AccountFreeMargin());
     return(0);  
    }**/
   if (x1<x2)
   {
    ticket= OrderSend ( "GBPAUD" ,OP_BUY,Lots,Ask, 30 ,Bid-Sl* Point ,Ask+TakeProfit* Point , "-" , 0 , 0 , Green );
     if (ticket> 0 )
     {
       if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "открыта позиция BUY : " ,OrderOpenPrice());
     }
     else Print ( "Ошибка при открытии BUY позиции : " , GetLastError ());          
     return ( 0 );
   }
   if (x1>x2) 
   {
    ticket= OrderSend ( "GBPAUD" ,OP_SELL,Lots,Bid, 30 ,Ask+Sl* Point ,Bid-TakeProfit* Point , "-" , 0 , 0 , Red );
     if (ticket> 0 )
     {
       if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "открыта позиция SELL : " ,OrderOpenPrice());
     }
     else Print ( "Ошибка при открытии SELL позиции : " , GetLastError ());
     return ( 0 ); 
   }
   return ( 0 );
  }
  
 
Vinin :

IndicatorCounted()는 Expert Advisors에서 작동하지 않습니다. 지표 전용입니다. 문제를 약간 확장할 가치가 있습니다. 다양한 솔루션이 있습니다. 가장 간단한 것은 지표 최적화입니다.(항상 가능한 것은 아닙니다.) Expert Advisor로 계산을 전송하는 것이 가능하지만 항상 가능한 것은 아닙니다. 사실, 당신은 지표를 볼 필요가

음, 계산 코드를 고문에게 전송하고 싶습니다. 칠면조에서는 계산 코드가 주기로 시작합니다. .더 정확한 것으로 교체하는 방법7

 int CountedBars=IndicatorCounted();
if (CountedBars< 0 ) CountedBars= 0 ;
if (CountedBars> 0 ) CountedBars--;
cnt = Bars - CountedBars;

for ( int i = 0 ; i < cnt ;i++)
 
obla4ko :

친구 동지들! ROC AUDUSD, GBPUSD의 정보를 읽어 GBPAUD로 거래하는 기적의 유도를 만들어보기 위한 저의 시도 2번입니다!! :)) 펜 테스트 - 원시적이지만 정말 해보고 싶었습니다!!! 최적화 없이 테스터에서 실행하면 IT HANGS VERY WELL!하지만 계속해서 성공적으로 로드되고... 결과적으로 단일 거래 작업이 아닙니다. 글쎄, 내가 망친 것이 분명하지만, 지식이 풍부한 사람들이 어디인지 말해보십시오. !!! :)) 이것은 소위 코드입니다. Expert Advisor 일반 사용자 지정 ROC에서 데이터 가져오기


원시 히스토리 로딩 제어로 시도

파일:
 
Vinin :


원시 히스토리 로딩 제어로 시도

나는 그것을 시도했다 - 같은 것 ..:(( 단순히 x1과 x2를 비교하는 것이 정확하지 않을 수 있지만 마지막 막대에 무언가를 첨부해야합니까? 표시기의 논리에 따르면 고문 프로그램에서 청산이 제공되지 않으므로 적어도 하나의 포지션을 개설하고 청산해서는 안 됩니다. :)) 한 통화의 ROC는 항상 다른 통화의 ROC보다 큽니다...

 

표시기의 호출이 정확하지 않을 수 있습니다. 이제 제가 직접 찾아보겠습니다. 버퍼가 첫 번째가 아니라 null이어야 하는 것 같습니다.

 

그런 지표가 없어요.

 
TG :

음, 계산 코드를 Expert Advisor로 전송하고 싶습니다. 터키에서는 계산 코드가 주기로 시작합니다. .보다 정확한 것으로 교체하는 방법7

1. 왜????????????????????????????

하지만 정말 필요한 경우라면

2. 나, 뭐, 공허한 대답에?? 그는 말했다 - 기사(여기, 위의 링크)에 이 문제에 대한 Kositsyn의 기사가 있습니다. 이것을 몇 번이나 반복해야 합니까? 다른 할 일이 있으신가요?

 
Vinin :

그런 지표가 없어요.

다음은 ROC 표시기 코드입니다.

 //+------------------------------------------------------------------+
//|                                                          ROC.mq4 |
//|                                    Copyright © 2006, Robert Hill |
//+------------------------------------------------------------------+

#property  copyright "Copyright © 2006, Robert Hill"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 1
#property  indicator_color1  Red
//---- indicator parameters
extern int RPeriod = 12 ;
extern bool UsePercent = true;
//---- indicator buffers
double RateOfChange[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle( 0 , DRAW_LINE );
   SetIndexDrawBegin( 0 , RPeriod);
   IndicatorDigits( Digits + 1 );
//---- indicator buffers mapping
   if (! SetIndexBuffer ( 0 , RateOfChange))
       Print ( "cannot set indicator buffers!" );
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName( "ROC(" + RPeriod + ")" );
//---- initialization done
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double ROC, CurrentClose, PrevClose;
   int counted_bars = IndicatorCounted();
//---- check for possible errors
   if (counted_bars < 0 ) 
       return (- 1 );
//---- last counted bar will be recounted
   if (counted_bars > 0 ) 
       counted_bars--;
   limit = Bars - counted_bars - RPeriod;
//---- ROC calculation
   for ( int i = 0 ; i < limit; i++)
     {
       CurrentClose = iClose( NULL , 0 , i);
       PrevClose = iClose( NULL , 0 , i + RPeriod);
       ROC = CurrentClose - PrevClose;
       //----
       if (UsePercent)
         {
           if (PrevClose != 0 )
               RateOfChange[i] = 100 * ROC / PrevClose;
         }
       else
           RateOfChange[i] = ROC;
     }   
//---- done
   return ( 0 );
  }
//+------------------------------------------------------------------+
 

"하지만 아무도 바닥을 씻을 필요가 없습니까? 그렇지 않으면 내가 와서 씻을 것입니다!"(c)

다음 은 지표 코드를 전문가 코드로 전송하는 것입니다.

 
obla4ko :

다음은 ROC 표시기 코드입니다.


표시기 코드에 오류가 있습니다.