Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 488
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Ind_1 ve Ind_GV'nin ayar parametresi aynı olduğunda, Ind_GV'nin sonuç değeri, Ind_1'in sonuç değerinden biraz farklıdır.
Ind_1 ve Ind_GV ayarlarının eşleştiği süre boyunca, test cihazında duraklar ve Ind_GV derlerseniz, her iki göstergenin sonuç değeri tamamen çakışır.
Bunun nasıl açıklanabileceğini kim bilebilir?
Söyleyin bana, strateji test cihazında EA optimizasyon modunu çalıştırmak için EA'nın kendisinde herhangi bir koda ihtiyacınız var mı?
Optimize etmeye çalışan bir danışman yazdım, ancak bana şöyle görünüyor:
2014.02.18 21:54:30.386 Test eden: "C:\...\tester\caches\test.NZDUSD5.0" önbellek dosyası bulundu ve daha fazla optimizasyon için kullanılabilir
Tarih var. Bu dosya NZDUSD5_0.fxt zaten +150 metre ağırlığında..
Test kullanıcısı günlüklerinde de olur
2014.02.18 22:50:21.251 TestGenerator: eşleşmeyen veri hatası (2014.02.12 13:35'te 305 ses sınırı aşıldı)
Bu ne için?
Bana yardım et lütfen!
Değişkenlerin her biri 1'den 5'e kadar bir değer alabilir... Söylesene 3125 seçenek nasıl yazılmaz)))
Bana yardım et lütfen!
Değişkenlerin her biri 1'den 5'e kadar bir değer alabilir... Söylesene 3125 seçenek nasıl yazılmaz)))
25 seçenek çizin ve sonra kimin kime daha çok sahip olduğuyla ilgilenin.
Teşekkür ederim .. şimdi tam olarak bunu yapıyorum ... Dizilerle karıştırmak istedim ama yeterli tyama yok ...)))
Lütfen ".mqh" ekleri ile göstergeye yardım edin.
Gösterge arabellekleri ExtBuffer1[], ExtBuffer2[] ve Buffer_M[] 0 boyutuna sahipken, ExtBuffer0[] arabelleği düzgün çalışıyor ve boyutu olması gerektiği gibi Çubuklara eşit. En ilginç olanı, MT4'ün eski sürümünde, yenisine güncellenene kadar her şey düzgün çalıştı. Ve ilerisi. Eklerin tüm içeriği göstergenin bir ana mq4 dosyasına aktarılırsa, her şey tekrar düzgün çalışır.
Soru: Eklerdeki gösterge arabellekleri için dizilerin boyutları neden 0'a sıfırlanıyor?
İşte gösterge kaynak kodu.
//+------------------------------------------------------------------+
//| AO_EMA_(with_includes).mq4 |
//+------------------------------------------------------------------+
#include <AO_EMA_(with_includes)_GLOB.mqh>
//--------------------------------------------
int init()
{
#include <AO_EMA_(with_includes)_INIT.mqh>
return(0);
}
//--------------------------------------------
int start()
{
#include <AO_EMA_(with_includes)_START.mqh>
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| AO_EMA_(with_includes)_GLOB.mq4 |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Black
#property indicator_color2 Green
#property indicator_color3 Red
//---- Input Data
extern int Slow = 100;
extern double Slow_Fast = 4.318;
extern int Average = 25; // Усреднение АО
extern bool Show_AO_G = true,
Show_AO_R = true;
//---- Глобальные переменные
int Fast;
bool Alert_done = false; // Флаг говорит о том, что Alert уже был раз сгенерирован.
//---- indicator buffers
double ExtBuffer0[];
double ExtBuffer1[];
double ExtBuffer2[];
//---- Буфера индикатора, для промежуточных расчетов
double Buffer_M[];
//+------------------------------------------------------------------+
//| AO_EMA_(with_includes)_INIT.mq4 |
//+------------------------------------------------------------------+
//---- Установка значение для переменной "Fast"
Fast = NormalizeDouble(Slow / Slow_Fast, 0);
//---- indicator buffers mapping
SetIndexBuffer(0, ExtBuffer0);
SetIndexBuffer(1, ExtBuffer1);
SetIndexBuffer(2, ExtBuffer2);
SetIndexBuffer(3, Buffer_M);
//---- drawing settings
SetIndexStyle(0, DRAW_NONE); // Линия не рисуется
SetIndexStyle(1, DRAW_HISTOGRAM); // Гистограмма
SetIndexStyle(2, DRAW_HISTOGRAM); // Гистограмма
SetIndexStyle(3, DRAW_NONE); // Линия не рисуется
//---- drawing begin settings
SetIndexDrawBegin(0, Fast); // Индикатор начинает рисоваться с этого бара, от начала графика слева.
SetIndexDrawBegin(1, Fast);
SetIndexDrawBegin(2, Slow);
SetIndexDrawBegin(3, Slow);
IndicatorDigits(Digits+1);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("AO_EMA ("+Fast+"-"+Slow+")");
SetIndexLabel(1,"Green");
SetIndexLabel(2,"Red");
//---- Обнуляем буфер индикатора
SetIndexEmptyValue(0, 0.0); SetIndexEmptyValue(1, 0.0);
SetIndexEmptyValue(2, 0.0); SetIndexEmptyValue(3, 0.0);
//---- initialization done
//+------------------------------------------------------------------+
//| AO_EMA_(with_includes)_START.mq4 |
//+------------------------------------------------------------------+
int limit, pos;
int counted_bars=IndicatorCounted();
double prev,current, pr;
bool up;
//---- Последний посчитанный бар будет пересчитан
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
Print("counted_bars=",counted_bars," Bars=",Bars," limit=",limit);
Print("0=",ArraySize(ExtBuffer0)," 1=",ArraySize(ExtBuffer1)," 2=",ArraySize(ExtBuffer2)," M=",ArraySize(Buffer_M));
//---- Расчет MACD для Гистограммы "= EMA(fast) - EMA(slow)"
if(Show_AO_G == true || Show_AO_R == true)
{ for(int i=0; i<limit; i++)
Buffer_M[i]=iMA(NULL,0,Fast,0,MODE_EMA,PRICE_MEDIAN,i)-iMA(NULL,0,Slow,0,MODE_EMA,PRICE_MEDIAN,i);
//---- Усредняем MACD по "Average".Это и будет рисоваться на графике..
//---- ... можно заменить на " EMA(Fast)".
pr=2.0/(Average+1);
pos=Bars-2;
if(counted_bars>2) pos=Bars-counted_bars-1;
//---- Основной расчет
while(pos>=0)
{ if(pos==Bars-2) ExtBuffer0[pos+1]=Buffer_M[pos+1];
ExtBuffer0[pos]=Buffer_M[pos]*pr+ExtBuffer0[pos+1]*(1-pr);
pos--; }
//---- Расперделение данных между 2-я буферами, для разделения по цветам
for(i=limit-1; i>=0; i--)
{ // При перерасчете самого левого бара, порядковый номер в массиве [i+1] выходит за пределы размера массива, поэтому расчет первого цикла прорускаем.
if(i == Bars-1) continue;
//------------------------------------
current = ExtBuffer0[i];
prev = ExtBuffer0[i+1];
if(current == prev) continue;
else
{ if(current>prev) up=true;
if(current<prev) up=false;
if(!up)
{ ExtBuffer2[i]=current;
ExtBuffer1[i]=0.0; }
else
{ ExtBuffer1[i]=current;
ExtBuffer2[i]=0.0; }
}}}
//--- Устанавливаем видимость индикаторов
if(Show_AO_G == false) SetIndexStyle(1, DRAW_NONE);
if(Show_AO_R == false) SetIndexStyle(2, DRAW_NONE);
Lütfen ".mqh" ekleri ile göstergeye yardım edin.
Gösterge arabellekleri ExtBuffer1[], ExtBuffer2[] ve Buffer_M[] 0 boyutuna sahipken, ExtBuffer0[] arabelleği düzgün çalışıyor ve boyutu olması gerektiği gibi Çubuklara eşit. En ilginç olanı, MT4'ün eski sürümünde, yenisine güncellenene kadar her şey düzgün çalıştı. Ve ilerisi. Eklerin tüm içeriği göstergenin bir ana mq4 dosyasına aktarılırsa, her şey tekrar düzgün çalışır.
Soru: Eklerdeki gösterge arabellekleri için dizilerin boyutları neden 0'a sıfırlanıyor?
İşte gösterge kaynak kodu.
Her şeyi kıçından yapmayı sever misin?