[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 704

 
ToLik_SRGV :

Ve Odysseus, önceki örnekte şuna sahiptiniz:

Ve şimdi şöyle:

Bir şey sildin mi yoksa bana öyle mi geldi?
işte orijinal kod
 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 :
işte orijinal kod
kusura bakmayın hata çıktı ..... işte orjinali
 //+------------------------------------------------------------------+
//|                                                 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, tam olarak neyi değiştirdiğini anlayamadım çünkü CCİ kaynak kodunu görebilmek için verdiğin adrese kayıt olman gerekiyor. Filtre .
Yalnızca bir hata buldum, iWPR application_price parametresine sahip değil, bu yüzden şu şekilde doğru:


Hepinize teşekkürler, şimdi çalışıyor!

 
ToLik_SRGV :

Evet, prensipte hiçbir fark yoktur.
Fonksiyonumu dene, oldukça basit, parametre olarak geç, büyü ve istenen trol.
İşlev çağrısını, her tikte oradan "geçtiği" sürece, herhangi bir yerde başlangıçta atın.

Emirlerin sihirlerinin farklı olması gerektiği açıktır.

Anlaşıldı :
Po değişkenini işlevin başında tanımladığınızı anlıyorum, ancak onu herhangi bir yere atamamışsınız, yani. 0'a eşittir.

ToLik_SRGV, Teşekkürler, hala çalışmıyor. Yani köpek orada gömülü değil. Yine de teşekkürler, daha fazla inceleyeceğim. anlaşıldı
 

Burada her zamanki gibi)) İnsanlara karşı her zamanki gibi))

Ne saçmalık, anlayamıyorum. Genel değişkenlerle ilgili sorunlar. Gösterge kodunda şunu yazıyorum:

 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 );
  }

Ardından, aşağıdaki kodla uzmandan global değişkenin değerini almaya çalışıyorum

 string Global= "Global" ;  
int param;

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


   return ( 0 );
  }
Soru şu ki, neyi yanlış yapıyorum? Parametre değerlerini 1 veya 2 olarak almam gerekiyordu, ama anladım.... saçmalık Ve neden yine EA kodunun başında adı ve değişkeni yazmanız gerekiyor? Küresel olanlar gibi görünüyorlar, ancak derleme onlarsız başarısız oluyor.
 

Lütfen söyleyin, aynı anda iki AL/SAT pozisyonu açmak mümkün mü???

Denedim - Gerçek zamanlı olarak EUR / USD'ye bağlı bir AL ve SATIŞ pozisyonunu aynı anda açan basit bir kod yazdım, açılıyor gibi görünüyor.

Ama bu bir demo hesabı ve bir strateji test cihazı , ama gerçek hayatta nasıl olacak, DC itiraz edecek mi?

Teşekkür ederim!

 
Infinity :...
Global değişkenlerin değerini okumak için başka bir fonksiyona ihtiyaç vardır :)))
 int i= GlobalVariableGet (Global);
 
Lim1 :

Lütfen söyleyin, aynı anda iki AL/SAT pozisyonu açmak mümkün mü???

Denedim - Gerçek zamanlı olarak EUR / USD'ye bağlı bir AL ve SATIŞ pozisyonunu aynı anda açan basit bir kod yazdım, açılıyor gibi görünüyor.

Ancak bu demo hesap ve strateji test cihazı, ancak gerçek hayatta nasıl olacak, DC itiraz edecek mi?

Teşekkür ederim!

Aç ... onlar izin verirken ... :)
Genel olarak - bu soruyu DC'nizi desteklemek için sorun
 
ToLik_SRGV :
Global değişkenlerin değerini okumak için başka bir fonksiyona ihtiyaç vardır :)))

Çok açık, kitaba bakıyorum ve göremiyorum, işe yarıyor, teşekkürler! Sorulara devam ediyorum. Hepsi aynı global değişkenler hakkında. Bu yüzden göstergeye aşağıdaki koşulu ekledim:

 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 );
  }

Göstergenin hangi para biriminde olduğuna bağlı olarak, hangi global değişkene değer atanacağını belirlemek istiyorum.

Anladığım kadarıyla GlobalVariableSet (valuta, param) global değişkeninde (valuta) adı kendisine yukarıda atanan değeri içermelidir

EA kodunda global değişkeni tekrar çağırırım

stringvaluta="değer";

int i=GlobalVariableGet(valuta); // ama değeri alamadım,.... yani 0 alıyorum. Belki global değişkenin adını bu şekilde değiştirmek mümkün değildir?

Bu isimle global bir değişken çağırmanın imkansız olduğu ortaya çıktı (hike), ancak GlobalVariableGet("EURUSD") dize adını yazarsanız, her şey çalışmaya başlar))

 

Yardımdan başlamak için

doubleGlobalVariableGet ( dize adı)

Varolan bir global değişkenin değerini veya hata durumunda 0 değerini döndürür. Bir hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir.


GV içeriğini görüyor ancak alamıyor musunuz?