Nasıl kodlanır? - sayfa 179

 
Roger09:
Alpari hesabında birkaç kez denedim, hata yok. Sadece bir kez, betiği uzmanlar dizinine koyduğumda ve EA olarak başlattığımda.

Çünkü sana dizinleri sordum.

Afedersiniz.

Sanırım sorunu anladım. Pencere manzarasındayım ve genellikle "yönetici olarak çalıştır" yapıyorum. bunu yapmadan denedim ve şimdi iyi çalışıyor gibi görünüyordu

 

Bir Diziyi MT4 .mq4'ten C++ DLL'sine geçirme

Herhangi bir Yardım Lütfen.

8 gösterge değeri içeren tek bir Diziyi bir C++ DLL'sine geçirmede sorun yaşıyorum. Çok basit ama aradığımda -1 alıyorum gibi görünüyor.

DLL'den içe aktarılan gepModel ( d [] ) işlevini gerçekten çağıran Forexindex() işlevi. ForexIndex İşlevi DLL'den 0 veya 1 döndürmelidir

Forexindex() içindeki .mq4 dosyasında yanlış bir şey yaptığımdan şüpheleniyorum. Herhangi bir yardım çok takdir edilecektir. Aşağıda basit kod var. C++ DLL dosyası gayet iyi, hatasız bir şekilde derleniyor, bu yüzden sorun mq4 dosyasında.

================================MQ4 dosyası=============== ====

#import "JadeClass.dll"

int gepModel( double& d[] );

#içe aktarmak

int başlangıç()

{

........

........

........

ForexIndex();

......

......

......

.....

}

int ForexIndex()

{

int myindex;

double ind[] , MA_Close, MA_High, MA_Low, MA_Open, Macd, Rsi, Stoch, Vol;

int counted_bars=IndicatorCounted();

if (counted_bars<0) return(-1);

if (counted_bars>0) counted_bars--;

int pos=Barlar-sayılan_barlar;

MA_Close = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;

MA_Yüksek = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;

MA_Low = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;

MA_Open = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;

Macd = iMACD(BOŞ,PERIOD_M5,12,26,9,0,0,0);

Rsi = iRSI(NULL,PERIOD_M5,10,0,0);

Stok = iStochastic(NULL,PERIOD_M5,14,3,3,0,0,0,0);

Hacim = iVolume(NULL,PERIOD_M5,0);

süre(konum>=0)

{

ind[0] = MA_Close;

ind[1] = MA_Yüksek;

ind[2] = MA_Düşük;

ind[3] = MA_Open;

ind[4] = Macd;

ind[5] = Rsi;

ind[6] = Stok;

ind[7] = Hacim;

myindex = gepModel(ind);

konum--;

}

Print(" Myindex = " , myindex);

dönüş (myindex);

}

=========================DLL Kaynak kodu ====================== =====

#include "stdafx.h"

#include "JadeClass.h"

#Dahil etmek

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

#define MT4_EXPFUNC __declspec(dllexport)

// Tek ve tek CJadeClassApp nesnesi

CJadeClassApp theApp;

MT4_EXPFUNC int __stdcall gepModel(çift d[]);

MT4_EXPFUNC int __stdcall gepModel(çift d[])

{

.....

.....

.....

.....

}

=========================== DLL için Def dosyası Kaynak kodu =============== ====

; JadeClass.def : DLL için modül parametrelerini bildirir.

KÜTÜPHANE "YeşimSınıfı"

İHRACAT

; Açık ihracat buraya gidebilir

gepModeli

========================================

 

Sinyal başına yalnızca bir işlem için kod ekleme konusunda yardıma ihtiyacınız var

Sadece mq4 kodunu öğreniyorum ve sinyal başına yalnızca bir işlemin nasıl kodlanacağını bulmak için saatler harcadım. Birkaç yol denedim ama sadece bir ticaret yapmasını sağlayamıyorum. Örnek olarak, TP vurulursa, sinyal hala iyi olduğu için aynı yan ticarete devam eder. Ters sinyale kadar beklemesini ve ardından bu ticareti yapmasını istiyorum. EA'yı herhangi bir değişiklik yapmadan buraya ekledim. Yardım için şimdiden teşekkürler. Marty

Dosyalar:
 
martypatty:
Sadece mq4 kodunu öğreniyorum ve sinyal başına yalnızca bir işlemin nasıl kodlanacağını bulmak için saatler harcadım. Birkaç yol denedim ama sadece bir ticaret yapmasını sağlayamıyorum. Örnek olarak, TP vurulursa, sinyal hala iyi olduğu için aynı yan ticarete devam eder. Ters sinyale kadar beklemesini ve ardından bu ticareti yapmasını istiyorum. EA'yı herhangi bir değişiklik yapmadan buraya ekledim. Yardım için şimdiden teşekkürler. Marty

Bir çubukta çok fazla açık işlemle ilgili sorun yaşadıktan sonra bunu nasıl yapacağımı mql4.com'da öğrendim. mql4'teki makaleler başlangıçta bana oldukça yardımcı oldu, ayrıca size çalışmanız için iyi örnekler veren bir kod veritabanına sahipler. Yine de bu web sitesi mükemmel bir gönderi geçmişine ve bazı gerçekten iyi kodlayıcılara sahip, sadece arama özelliğini kullanın ve gönderi olarak görüntülenen düğmeyi tıklayın, yalnızca ihtiyacınız olan bir yanıt için bir konunun sayfalarına ve sayfalarına bakmanızı sağlar. Sorununuza gelince, sadece bu kodu kullanın:

int BarsCount=0;

if(Bars<BarsCount)

{

//Code to do once goes here

BarsCount=Bars;

}

[/CODE]

Personally I'm having problems with an array. I cant for the life of me figure out why the following code returns 0 all the time... Any help would be much appreciated. I'm trying to create an array of length STD_MA_Period+1 to later use with iMAOnArray but it doesnt work so its back to the drawing board I guess.

[CODE]for(i=0;i<=STD_MA_Period+1;i++)

{

STD_MA_Buffer=iStdDev(Symbol(),Period(),STD_Period,0,MODE_SMA,PRICE_CLOSE,i);

}

Print(STD_MA_Buffer[1]);

PS çift STD_MA_Buffer[]; global değişkenler bölümünde tanımlanır.

 

EA'mı düzelt, lütfen

bir fikrim var ama mql4 koduna yazabilirim yardımcı olur musunuz???

bu benim sorunum

bu benim sistem tanımım:

A. siparişler=0 >> OP al && OP sat

B. ızgarayı + veya - koşuluyla yapın

eski. OPbuy + ızgara = OPbuy ise

OPbuy - ızgara = OPsell ise

OPsell için aynı

C. eğer kar > 0 && kar > minimum kar ise (kar kilitleme)

herhangi bir siparişi durdurun (OP satın al || OP sat) ve takip eden öz sermaye veya kâr noktasını hareket ettirin

D. özsermaye veya puana göre kârla kapatabilir

E. .mq4 formatı çünkü benim hatam nerede bilmek istiyorum

B noktasında bir sorunum var. lütfen bana yardım edin

 
mazgen:
bir fikrim var ama mql4 koduna yazabilirim, yardımcı olur musunuz???

bu benim sorunum

bu benim sistem tanımım:

A. siparişler=0 >> OP al && OP sat

B. ızgarayı + veya - koşuluyla yapın

eski. OPbuy + ızgara = OPbuy ise

OPbuy - ızgara = OPsell ise

OPsell için aynı

C. eğer kar > 0 && kar > minimum kar ise (kar kilitleme)

herhangi bir siparişi durdurun (OP satın al || OP sat) ve takip eden öz sermaye veya kâr noktasını hareket ettirin

D. özsermaye veya puana göre kârla kapatabilir

E. .mq4 formatı çünkü benim hatam nerede bilmek istiyorum

B noktasında bir sorunum var. lütfen bana yardım edin

Ex4'ün yerine kaynak kodunu göndermeye ne dersiniz?

 
figurelli:
Ex4'ün yerine kaynak kodunu göndermeye ne dersiniz?

sadece bana nasıl kodlanacağını göster,

bu benim son detayım

bunu düzelt.rar

umarım EA'mı anlayabilir, OP'deki döngü sorununu neden satar ???

 

trend çizgisi sorusu

Kodlamada yeni ve sadece pratik yapmak için bir şeyler yapıyorum, mevcut çubukta bir trend çizgisini durdurmak istedim. Bulduğum şey, mevcut çubuktaki rengini arka plan rengine değiştirmekti. Özünde, çubuğu geçen çizgiyi arka plana karıştırmak ve o noktada kaybolmasını sağlamak.

Şimdi uzmanlara bunu yapmanın doğru yolunun ne olduğunu soruyorum. Aynı şeyi başarmanın birçok yolu olduğunu biliyorum, bu yüzden daha fazlasını öğrenmek için neler yapabileceğime dair başka fikirler bulmaya çalışıyorum.

teşekkürler

 

Çok Garip MQL Kodu Davranışı

Hepinize merhaba,

Metatrader Sürümü: 4.00 Yapı 224 (15 Mayıs 2009)

Meta Düzenleyici Sürümü: 4.00 Yapı 224 (14 Mayıs 2009)

MQL'de beni tamamen şaşırtan çok garip bir hatayla karşılaştım, o kadar ki, bu sorundan kaçınmak için yazıldığından emin olmak için TÜM eski koduma bakıyorum.

Umarım birileri burada tam olarak neler olup bittiğine biraz ışık tutabilir.

İşte kod, aslında hiçbir şey yapmayan basit bir gösterge. Ancak init() bölümünde, grafik periyodu H1 olduğunda 2 fonksiyona çağrı yaptım.

Bu iki işlev, biri dışında tamamıyla aynıdır. Birinde tanımlanmış statik bir int dizisi, diğerinde tanımlanmış statik olmayan bir int dizisi vardır. Tüm işlevlerin yaptığı, yerel olarak tanımlanmış dizisinin boyutunu yazdırmak, dizi öğelerine bazı değerler atamak ve sonra bunları yazdırmaktır.

#property indicator_chart_window

void afunc() {

int i;

int array[4];

array[0] = 100;

array[1] = 101;

array[2] = 102;

array[3] = 103;

Print("afunc array[4] size="+ArraySize(array));

for (i = 0; i < 4; i++) {

Print("afunc array["+i+"]="+array);

}

}

void afunc_static() {

int i;

static int array[4];

array[0] = 100;

array[1] = 101;

array[2] = 102;

array[3] = 103;

Print("afunc_static array[4] size="+ArraySize(array));

for (i = 0; i < 4; i++) {

Print("afunc_static array["+i+"]="+array);

}

}

int init() {

if (Period() == PERIOD_H1) {

afunc();

afunc_static();

}

return(0);

}

int deinit() {

return(0);

}

int start() {

return(0);

}

Koda bakarsanız, iki işlevin birbirinden farklı davrandığı hiçbir durum olmamalıdır.

Ancak, göstergeyi bir M5 grafiğine ekler ve ardından H1 zaman çerçevesine geçersem aşağıdaki çıktıyı alıyorum.

2009.05.23 18:12:47 afunc EURUSD,H1: initialized

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static dizisi[3]=103

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static dizisi[2]=102

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static dizisi[1]=101

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static dizisi[0]=100

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static dizisi[4] boyut=4

2009.05.23 18:12:47 uygun EURUSD,H1: uygun dizi[3]=0

2009.05.23 18:12:47 uygun EURUSD,H1: uygun dizi[2]=0

2009.05.23 18:12:47 uygun EURUSD,H1: uygun dizi[1]=0

2009.05.23 18:12:47 uygun EURUSD,H1: uygun dizi[0]=0

2009.05.23 18:12:47 uygun EURUSD,H1: uygun dizi[4] boyut=0

2009.05.23 18:12:47 EURUSD için geçerli,M5: uninit neden 3

2009.05.23 18:12:47 EURUSD için geçerli,M5: başlatılmamış

2009.05.23 18:12:45 EURUSD'de,M5: başlatıldı

2009.05.23 18:12:43 EURUSD,M5 için: başarıyla yüklendi

afunc() içinde 'int dizisi[4]' tanımlamış olmama rağmen, o dizinin boyutunun aslında SIFIR olduğuna ve dizinin öğelerine değer atayamayacağıma dikkat edin. Bu işlev açıkça beklendiği gibi çalışmıyor.

afunc_static() içinde 'static int array[4]' tanımladığıma ve dizinin öğelerine atadığım değerler gibi boyutun 4 olarak doğru bir şekilde gösterildiğine dikkat edin. Bu işlev iyi çalışıyor.

Sonuç olarak. Bir fonksiyonda statik olmayan bir dizi tanımlarsanız ve bu fonksiyon göstergeniz tarafından çağrılmazsa, bir probleminiz olabilir.

Daha sonra grafik zaman çerçevesini değiştirir ve ardından işlevi çağırırsanız, işlevdeki yerel olarak tanımlanmış dizilerin boyutu, dizilerin boyutunu tanımladığınızdan bağımsız olarak sıfır olacaktır.

Görebildiğim kadarıyla bu sorunu aşmanın tek yolu, işlevlerinizdeki yerel olarak tanımlanmış dizilerin statik diziler olarak tanımlandığından emin olmaktır. Kuruyemişleri biliyorum ama bu sorunu önlemenin başka bir yolunu göremiyorum.

Bu konuyla ilgili herhangi bir geri bildirimi gerçekten takdir ediyorum.

Saygılarımızla,

Laurence.

Dosyalar:
afunc.mq4  1 kb
 
Neden: