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

 
ToLik_SRGV :

그리고 Odysseus, 이전 예에서 당신은 이것을 가지고 있었습니다:

그리고 이제 다음과 같이:

삭제한 것이 있습니까, 아니면 제 생각에 삭제되었습니까?
여기 원본 코드가 있습니다
 IndicatorBuffers( 7 );
   SetIndexBuffer ( 0 , MACDBuffer);
   SetIndexBuffer ( 1 , SignalBuffer);
   SetIndexBuffer ( 2 , FastEMABuffer);
   SetIndexBuffer ( 3 , SlowEMABuffer);
   SetIndexBuffer ( 4 , SignalEMABuffer);
   SetIndexBuffer ( 5 , Buffer1);
   SetIndexBuffer ( 6 , Buffer2);
   SetIndexStyle( 0 , DRAW_NONE );
   SetIndexStyle( 1 , DRAW_LINE ,EMPTY);
  SetIndexStyle( 2 , DRAW_LINE ,EMPTY, 2 );
   SetIndexStyle( 3 , DRAW_NONE ,EMPTY, 2 );
   SetIndexStyle( 4 , DRAW_NONE );
   SetIndexStyle( 5 , DRAW_HISTOGRAM ,EMPTY, 2 );
   SetIndexStyle( 6 , DRAW_HISTOGRAM ,EMPTY, 2 );
   SetIndexDrawBegin( 0 , SlowEMA);
   SetIndexDrawBegin( 1 , SlowEMA);
   IndicatorShortName( "ZeroLag MACD Colored(" + FastEMA + "," + SlowEMA + "," + SignalEMA + ")" );
   SetIndexLabel( 0 , "MACD" );
   SetIndexLabel( 1 , "Signal" );
   SetIndexLabel( 5 , "MACD" );
   SetIndexLabel( 6 , "MACD" );
 
odiseif :
여기 원본 코드가 있습니다
오타가 나와서 죄송합니다..... 원본입니다
 //+------------------------------------------------------------------+
//|                                                 ZeroLag MACD.mq4 |
//|                                                               RD |
//|                                                 marynarz15@wp.pl |
//| Colored by SVK © 2009.                                           |
//+------------------------------------------------------------------+
#property copyright "RD"
#property link       "marynarz15@wp.pl"
//----
#property indicator_separate_window
#property  indicator_buffers 7
#property indicator_color1 Black
#property indicator_color2 Blue
#property indicator_color3 Black
#property indicator_color4 Black
#property indicator_color5 Black
#property indicator_color6 Lime
#property indicator_color7 Red

//---- input parameters
extern int FastEMA = 12 ;
extern int SlowEMA = 26 ;
extern int SignalEMA = 9 ;

//---- buffers
double MACDBuffer[];
double SignalBuffer[];
double FastEMABuffer[];
double SlowEMABuffer[];
double SignalEMABuffer[];

double Buffer1[];
double Buffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers( 7 );
   SetIndexBuffer ( 0 , MACDBuffer);
   SetIndexBuffer ( 1 , SignalBuffer);
   SetIndexBuffer ( 2 , FastEMABuffer);
   SetIndexBuffer ( 3 , SlowEMABuffer);
   SetIndexBuffer ( 4 , SignalEMABuffer);
   SetIndexBuffer ( 5 , Buffer1);
   SetIndexBuffer ( 6 , Buffer2);
   SetIndexStyle( 0 , DRAW_NONE );
   SetIndexStyle( 1 , DRAW_LINE ,EMPTY);
   SetIndexStyle( 2 , DRAW_NONE );
   SetIndexStyle( 3 , DRAW_NONE );
   SetIndexStyle( 4 , DRAW_NONE );
   SetIndexStyle( 5 , DRAW_HISTOGRAM );
   SetIndexStyle( 6 , DRAW_HISTOGRAM );
   SetIndexDrawBegin( 0 , SlowEMA);
   SetIndexDrawBegin( 1 , SlowEMA);
   IndicatorShortName( "ZeroLag MACD Colored(" + FastEMA + "," + SlowEMA + "," + SignalEMA + ")" );
   SetIndexLabel( 0 , "MACD" );
   SetIndexLabel( 1 , "Signal" );
   SetIndexLabel( 5 , "MACD" );
   SetIndexLabel( 6 , "MACD" );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double prev,current;
   int counted_bars = IndicatorCounted();
   if (counted_bars < 0 ) 
       return (- 1 );
   if (counted_bars > 0 ) 
       counted_bars--;
   limit = Bars - counted_bars;
   double EMA, ZeroLagEMAp, ZeroLagEMAq;
   for ( int i = 0 ; i < limit; i++)
     {
       FastEMABuffer[i] = 100.0 * iMA ( NULL , 0 , FastEMA, 0 , MODE_EMA , PRICE_CLOSE , i);
       SlowEMABuffer[i] = 100.0 * iMA ( NULL , 0 , SlowEMA, 0 , MODE_EMA , PRICE_CLOSE , i);
     }
   for (i = 0 ; i < limit; i++)
     {
        EMA = iMAOnArray(FastEMABuffer, Bars , FastEMA, 0 , MODE_EMA , i);
        ZeroLagEMAp = FastEMABuffer[i] + FastEMABuffer[i] - EMA;
        EMA = iMAOnArray(SlowEMABuffer, Bars , SlowEMA, 0 , MODE_EMA , i);
        ZeroLagEMAq = SlowEMABuffer[i] + SlowEMABuffer[i] - EMA;
        MACDBuffer[i] = ZeroLagEMAp - ZeroLagEMAq;
        FastEMABuffer[i] = 0.0 ;
        SlowEMABuffer[i] = 0.0 ;
     }
   for (i = 0 ; i < limit; i++)
       SignalEMABuffer[i] = iMAOnArray(MACDBuffer, Bars , SignalEMA, 0 , MODE_EMA , i);
   for (i = 0 ; i < limit; i++)
     {
       EMA = iMAOnArray(SignalEMABuffer, Bars , SignalEMA, 0 , MODE_EMA , i);
       SignalBuffer[i] = SignalEMABuffer[i] + SignalEMABuffer[i] - EMA;
       SignalEMABuffer[i] = 0.0 ;
     }
//---- dispatch values between 2 buffers
   bool up=true;
   for (i=limit- 1 ; i>= 0 ; i--)
     {
      current=MACDBuffer[i];
      prev=MACDBuffer[i+ 1 ];
       if (current>prev) up=true;
       if (current<prev) up=false;
       if (!up)
        {
         Buffer2[i]=current;
         Buffer1[i]= 0.0 ;
        }
       else
        {
         Buffer1[i]=current;
         Buffer2[i]= 0.0 ;
        }
     }     
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
ToLik_SRGV :

Sergey, 정확히 무엇을 변경했는지 완전히 이해하지 못했습니다. CCI 소스 코드를 보려면 제공한 주소에 등록해야 하기 때문입니다. 필터 .
하나의 오류만 찾았습니다. iWPR 에는 apply_price 매개변수가 없으므로 다음과 같이 맞습니다.


모두 감사합니다. 이제 작동합니다!

 
ToLik_SRGV :

네, 원칙적으로는 차이가 없습니다.
내 기능을 사용해 보세요. 매우 간단합니다. 매개변수, 마법 및 원하는 트롤로 전달합니다.
각 틱에서 "통과"하는 한 시작 시 함수 호출을 던지십시오.

명령의 마법이 달라야 한다는 것은 분명합니다.

로저 :
나는 당신이 함수의 시작 부분에 변수 po를 정의하지만 아무데도 할당하지 않는다는 것을 이해합니다. 0과 같습니다.

ToLik_SRGV, 감사합니다. 여전히 작동하지 않습니다. 그래서 개는 거기에 묻히지 않습니다. 어쨌든 감사합니다. 더 살펴보겠습니다. 로저 ,
 

평소와 같이)) 친절한 사람들에게 평소와 같이))

무슨 말도 안되는 소리, 나는 이해할 수 없습니다. 전역 변수 문제. 표시기 코드에서 다음과 같이 작성합니다.

 string Global= "Global" ; //имя глобальной переменной
int param; // параметр глобальной переменной
int init()
  {
  GlobalVariablesDeleteAll ( NULL ); 
   return ( 0 );
  }
int deinit()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
int start()
  { //привожу простой пример
  double bar1= iMA ( Symbol (), PERIOD_M5 , 13 , 0 , MODE_SMMA , PRICE_TYPICAL , 0 );
  double bar2= iOpen( Symbol (), PERIOD_M5 , 0 );
   if (bar1>bar2){ param = 1 ; GlobalVariableSet (Global,param); }
   if (bar1<bar2){ param = 2 ; GlobalVariableSet (Global,param); } 

//----
   return ( 0 );
  }

다음으로 다음 코드를 사용하여 전문가로부터 전역 변수 값 을 얻으려고 합니다.

 string Global= "Global" ;  
int param;

int start()
  {
  int i= GlobalVariableSet (Global,param);
  Print (i);   // Здесь он мне и выводит всякую лабуду вида : 1279217736


   return ( 0 );
  }
질문은 내가 무엇을 잘못하고 있습니까? 매개변수 값을 1 또는 2로 가져와야 했지만.... 말도 안되는 소리를 듣게 되었습니다. 그리고 왜 다시 EA 코드의 시작 부분에 이름과 변수를 작성해야 합니까? 전역적으로 존재하는 것 같지만 없으면 컴파일이 실패합니다.
 

알려주세요, 동시에 2개의 BUY/SELL 포지션을 열 수 있나요???

나는 시도했다 - 실시간으로 EUR / USD에 연결된 하나의 BUY 및 SELL 포지션을 동시에 여는 간단한 코드를 작성했는데 열리는 것 같습니다.

그러나 그것은 데모 계정이자 전략 테스터 이지만 실제 생활에서 DC는 어떻게 반대할까요?

고맙습니다!

 
Infinity :...
전역 변수의 값 을 읽으려면 다른 함수가 필요합니다 :)))
 int i= GlobalVariableGet (Global);
 
Lim1 :

알려주세요, 동시에 2개의 BUY/SELL 포지션을 열 수 있나요???

나는 시도했다 - 실시간으로 EUR / USD에 연결된 하나의 BUY 및 SELL 포지션을 동시에 여는 간단한 코드를 작성했는데 열리는 것 같습니다.

그러나 그 데모 계정과 전략 테스터, 그러나 실제 생활에서는 어떻게 될 것입니까? DC가 반대할까요?

고맙습니다!

그들이 허용하는 동안 ... 열기 ... :)
일반적으로 - DC를 지원하기 위해 이 질문을 하십시오.
 
ToLik_SRGV :
전역 변수의 값을 읽으려면 다른 함수가 필요합니다 :)))

너무 명확합니다. 책을 보았지만 보이지 않습니다. 작동합니다. 감사합니다! 질문을 진행하겠습니다. 동일한 전역 변수에 관한 모든 것. 그래서 지표에 다음 조건을 추가했습니다.

 string EUR= "EURUSD" ; //имя глобальной переменной
string GBP= "GBPUSD" ; //имя глобальной переменной
string valuta= "" ;
int param; // параметр глобальной переменной
int init()
  {
  GlobalVariablesDeleteAll ( NULL ); 
   return ( 0 );
  }
int deinit()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
int start()
  { string symb = Symbol ();  //Здесь узнаю на какой валюте стоит индикатор
    
    if (symb==EUR) {valuta=EUR;}   // здесь сравнивая ,в переменную занощу имя глобальной переменной
    if (symb==GBP) {valuta=GBP;}   // которую следует использовать
  //привожу простой пример
  double bar1= iMA ( Symbol (), PERIOD_M5 , 13 , 0 , MODE_SMMA , PRICE_TYPICAL , 0 );
  double bar2= iOpen( Symbol (), PERIOD_M5 , 0 );
   if (bar1>bar2){ param = 1 ; GlobalVariableSet (valuta,param); }   // а здесь присваиваю параметр глобальной переменной
   if (bar1<bar2){ param = 2 ; GlobalVariableSet (valuta,param); } 
   return ( 0 );
  }

표시기가 켜져 있는 통화에 따라 값을 할당할 전역 변수를 결정하고 싶습니다.

내가 이해하는 것처럼 전역 변수 GlobalVariableSet (valuta, param)에서 이름(valuta)에는 위에서 할당된 값이 포함되어야 합니다.

EA 코드에서 전역 변수를 다시 호출합니다.

문자열발루타 = "발루타";

int i=GlobalVariableGet(값); // 하지만 값을 얻지 못합니다.... 즉, 0을 얻 습니다. 전역 변수 이름을 이런 식으로 변경하는 것은 불가능할까요?

그래서 나는 그것을 알아 냈습니다. ..이 이름으로 전역 변수를 호출하는 것은 불가능하지만 (hike) 문자열 이름을 쓰면 모든 것이 작동하기 시작합니다))

 

도움말에서 시작하려면

이중 글로벌변수 가져오기 ( 문자열 이름)

기존 전역 변수의 값을 반환하거나 오류가 발생하면 0을 반환합니다. 오류에 대한 정보를 얻으려면 GetLastError() 함수를 호출해야 합니다.


GV 콘텐츠를 볼 수 있지만 얻을 수 없습니까?