Nasıl kodlanır? - sayfa 50

 

Bir göstergeden bir veri türünü kurtarın

Merhaba

Bir EA'ya koymak için bir göstergeden (3 MA Çapraz w uyarısı) bir veri türünü kurtarmak mümkün müdür?

Yapmak istediğim şey bu:

Göstergeye (3 MA Çapraz w uyarısı) bir veri türü koydum:

double execute_trade = "ok_buy" veya execute_trade = "ok_sell" burada:

************Gösterge ************

if ((daha hızlıMAnow > daha yavaşMAnow &&

daha hızlıMAönceki <= daha yavaşMAönceki &&

daha hızlıMAafter > daha yavaşMAafter &&

ortaMAnow > daha yavaşMAnow )

||

(daha hızlıMANnow > daha yavaşMANnow &&

ortaMAnow > daha yavaşMANnow &&

ortaMAönceki <= daha yavaşMAönceki &&

ortaMAafter > daha yavaşMAafter ))

{

CrossUp = Düşük - Aralık*0.5;

string execute_trade = "ok_buy";

}

if ((daha hızlıMAnow < daha yavaşMAnow &&

daha hızlıMAönceki >= daha yavaşMAönceki &&

daha hızlıMAsonra < daha yavaşMAsonra &&

ortaMAnow < daha yavaşMAnow )

||

(daha hızlıMANnow < daha yavaşMANnow &&

ortaMAnow < daha yavaşMANnow &&

ortaMAönceki >= daha yavaşMAönceki &&

ortaMAsonra < daha yavaşMAsonra ))

{

CrossDown = Yüksek + Aralık*0.5;

execute_trade = "ok_sell";

}

**************************

ve EA'mda "excute_trade" i şu şekilde kurtarmak istiyorum:

***********E***************

if (excute_trade== "ok_buy")

Sipariş = SIGNAL_BUY;

if (excute_trade== "ok_sell")

Sipariş = SIGNAL_SELL;

******************************

Ama nasıl yapacağımı bilmiyorum

yardım lütfen

Saygılarımla

Dosyalar:
 
Julia:
Birisi çok kibar olabilir ve bana aşağıdaki kodu nasıl kodlayacağımı söyleyebilir mi?:

Ea'm M30 grafiğinde açıksa, kodun şunu söylemesini istiyorum:

if(M5 zaman diliminde bugünün kapanışı>dünün kapanışı)

{

.........

}

Bugünün kapanışı şu anki BID; dünün kapanışı zaman diliminden bağımsızdır, yani M30 veya M5 zaman dilimi farketmez.

if(Bid > iClose(NULL,PERIOD_D1,1))

{

...

}

 
natsirte:
Merhaba

Bir EA'ya koymak için bir göstergeden (3 MA Çapraz w uyarısı) bir veri türünü kurtarmak mümkün müdür?

Yapmak istediğim şey bu:

Göstergeye (3 MA Çapraz w uyarısı) bir veri türü koydum:

double execute_trade = "ok_buy" veya execute_trade = "ok_sell" burada:

************Gösterge ************

if ((daha hızlıMAnow > daha yavaşMAnow &&

daha hızlıMAönceki <= daha yavaşMAönceki &&

daha hızlıMAafter > daha yavaşMAafter &&

ortaMAnow > daha yavaşMAnow )

||

(daha hızlıMANnow > daha yavaşMANnow &&

ortaMAnow > daha yavaşMANnow &&

ortaMAönceki <= daha yavaşMAönceki &&

ortaMAafter > daha yavaşMAafter ))

{

CrossUp = Düşük - Aralık*0.5;

string execute_trade = "ok_buy";

}

if ((daha hızlıMAnow < daha yavaşMAnow &&

daha hızlıMAönceki >= daha yavaşMAönceki &&

daha hızlıMAsonra < daha yavaşMAsonra &&

ortaMAnow < daha yavaşMAnow )

||

(daha hızlıMANnow < daha yavaşMANnow &&

ortaMAnow < daha yavaşMANnow &&

ortaMAönceki >= daha yavaşMAönceki &&

ortaMAsonra < daha yavaşMAsonra ))

{

CrossDown = Yüksek + Aralık*0.5;

execute_trade = "ok_sell";

}

**************************

ve EA'mda "excute_trade" i şu şekilde kurtarmak istiyorum:

***********E***************

if (excute_trade== "ok_buy")

Sipariş = SIGNAL_BUY;

if (excute_trade== "ok_sell")

Sipariş = SIGNAL_SELL;

******************************

Ama nasıl yapacağımı bilmiyorum

yardım lütfen

Saygılarımla

Tamponların (yani okların) değerini almak için iCustom işlevini kullanmanız gerekir;

double iCustom(dize sembolü, int zaman çerçevesi, dize adı, ..., int modu, int shift)

Belirtilen özel göstergeyi hesaplar ve değerini döndürür. Özel gösterge derlenmiş (*.EX4 dosyası) ve terminal_directory\experts\indicators dizininde olmalıdır.

parametreler:

sembol - Göstergeyi hesaplamak için verilerinin kullanılması gereken sembol. NULL, geçerli sembol anlamına gelir.

zaman dilimi - Zaman dilimi. Zaman Çerçevesi numaralandırma değerlerinden herhangi biri olabilir. 0, mevcut grafik zaman çerçevesi anlamına gelir.

ad - Özel gösterge derlenmiş program adı.

... - Parametre seti (gerekirse). Geçirilen parametreler ve bunların sırası, özel göstergenin bildirim sırasına ve harici değişkenlerin türüne uygun olmalıdır.

modu - Satır dizini. 0 ile 7 arasında olabilir ve SetIndexBuffer işlevlerinden biri tarafından kullanılan dizine karşılık gelmelidir.

shift - Gösterge tamponundan alınan değerin indeksi (verilen periyotlar öncesindeki mevcut çubuğa göre kayma).

Örneklem:

double val=iCustom(NULL, 0, "SampleInd",13,1,0);

Ben sizin durumunuzda sözdizimi şöyle olmalıdır:

if(iCustom(NULL, 0, "3 MA Cross w_Alert v2", p1, , , , p10, 0, 0) > 0) // Buy

{

...

}

if(iCustom(NULL, 0, "3 MA Cross w_Alert v2", p1, , , , p10, 1, 0) > 0) // Sell

{

...

}

p1 ila p10 parametreleri, harici parametreler olarak göstergeye gönderilecek değerlerdir. Örneğin, p1, FasterMA'ya, p2'yi FasterShift'e vb. atanacak değer anlamına gelir ve son harici bildirime kadar p10 SoundAlert. Sırasını ve anlamını öğrenmek için göstergenin koduna bakın.

 

Teşekkürler Michel.

Ama ya kod bir gösterge kodundaysa?

Bu mu:

if(Close[pos]>iHigh(Symbol(),PERIOD_M5,[poz+1])??????

 
Beno:
Gidday Yavaş yavaş bazı hatalarımı düzeltiyorum (ve yolda çok şey öğreniyorum) ama bu ne anlama geliyor?

2007.10.24 21:22:24 1998.11.20 06:00 Abyss GBPJPY,Günlük: OrderSend işlevi için parametre 6 olarak geçersiz çift sayı

Bu hatayla ilgili hiçbir şey bulamıyorum, neye bakmam gerekiyor.

int OrderSend( dize sembolü, int cmd, çift hacim, çift fiyat, int kayma, çift stoploss, çift kâr alma, dize yorumu=NULL, int magic=0, datetime son kullanma=0, color arrow_color=CLR_NONE)

Gördüğünüz gibi, altıncı parametre stoploss'tur. Stoploss'unuzun int olarak tanımlandığından emin olun. Ardından, OrderSend() komutunuzda stoploss değerini nokta ile çarptığınızdan emin olun. Bu, işlem yaptığınız para birimi için doğru ikiye dönüşür.

Uzun için örnek:

bileta=OrderSend(Symbol(),OP_BUY,lotsize,Ask,slip,Ask-intStopLoss*Point,Ask+intTakeProfit*Point,"Yorum",magic,0,Green);

Kısaca örnek:

biletb=OrderSend(Symbol(),OP_SELL,lotsize,Bid,slip,Bid+intStopLoss*Point,Bid-intTakeProfit*Point,"Yorum",magic,0,Blue);

Bu yardımcı olur umarım.

 

teşekkürler Wolfe

Bu çok yardımcı oldu ama yeni bir sorun açtı lol şimdi alıyor ama satmıyor doğru yerde değil. Üç indi'nin de mavi olduğunu satın almaya ve hepsi kırmızı olduğunda satmaya çalışıyorum.

Sanırım her biri için doğru adı "The Abyss" seçtim. Oturup çıkış yolumu kodlamaya çalıştığım yer orası. ÇOK KOMİK

2007.11.24 10:14:44 2007.11.23 12:00 The Abyss EURUSD,H4: SATIŞ emrini açma hatası: 0

geçersiz CheckForSignals() {

double TML=iCustom(NULL,0,"TrendManager",TM_Period,TM_Shift,0,shift);

double TMS=iCustom(NULL,0,"TrendManager",TM_Period,TM_Shift,1,shift);

double hasOpenLong=iCustom(NULL,0,"Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,1,shift) ;

double hasCloseLong=iCustom(NULL,0,"Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,3,shift) ;

double hasOpenShort=iCustom(NULL,0,"Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,0,shift) ;

double hasCloseShort=iCustom(NULL,0,"Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,2,shift) ;

double SDLL=iCustom(NULL,0,"Eğim Yön Çizgisi",dönem,yöntem,fiyat,0,shift);

double SDLS=iCustom(NULL,0,"Eğim Yön Çizgisi",dönem,yöntem,fiyat,1,shift);

buysig=yanlış;

satış=yanlış;

yakın satın alma=yanlış;

satış=yanlış;

bool Uzun1 = TML;

bool Kısa1 = TMS;

bool Uzun2 = SDLL;

bool Short2 = SDLS;

bool Long3 = hasOpenLong > hasCloseLong;

bool Short3 = hasOpenShort < hasCloseShort;

buysig = Uzun1 && Uzun2 && Uzun3;

sellsig = Short1 && Short2 && Short3;

yakın satın alma=satış;

closesell=satın alma;

}

geçersiz CheckForOpen() {

if (last==Zaman[0]) dönüşü;

int res,ord;

çift giriş, dur;

ord=CurrentOrders();

if (ord!=0) CheckForClose();

//---- satın alma koşulları

if (satın alır< satın alır) {

res=OpenAtMarket(OP_SATIN AL,Çok Sayıda);

if (res<0) Print("SATIN AL emri açılırken hata oluştu : ",(GetLastError()));

başka son=Zaman[0];

}

//---- satış koşulları

if (satıyor< satıyor) {

res=OpenAtMarket(OP_SELL,Çok);

if (res<=0) Print("SATIŞ emrini açarken hata: ",(GetLastError()));

başka son=Zaman[0];

}

}

int OpenAtMarket(int modu, çift lot) {

int tr,sütun;

çift açık fiyat;

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Uyku(2000); }

Yenileme Oranları();

if (mod==OP_SEL) {

openprice=Teklif;

sütun=Kırmızı;

} başka {

//openprice=nd(Sor);

openprice=Sor;

sütun=Mavi;

}

OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+Magic,Magic,0,col);

}

dönüş;

//+------------------------------------------- -------------------+

//| Yakın sipariş koşullarını kontrol edin |

//+------------------------------------------- -------------------+

geçersiz CheckForClose() {

int toplam;

//----

toplam=SiparişToplam();

for(int i=toplam;i>=0;i--)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) devam et;

if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) devam ediyor;

//---- sipariş tipini kontrol et

if(OrderType()==OP_BUY && yakın satın alma) CloseAtMarket(OrderTicket(),OrderLots());

if(OrderType()==OP_SELL && kapanış) CloseAtMarket(OrderTicket(),OrderLots());

}

}

bool CloseAtMarket(int bilet, çift lot) {

bool bres=yanlış; int tr;

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Uyku(2000); }

Yenileme Oranları();

bres=OrderClose(bilet,lot,OrderClosePrice(),slippage,Beyaz);

if (!bres) Print("Sırayı kapatırken hata oluştu : ",(GetLastError()));

}

 
Julia:
Teşekkürler Michel.

Ama ya kod bir gösterge kodundaysa?

Bu mu:

if(Close[poz]>iHigh(Symbol(),PERIOD_M5,[poz+1])??????

Evet, bu olabilir; hepsi ne yapmak istediğine bağlı...

 

Help Plz - Bunları Mq4'e Dönüştür - Çok Teşekkürler

Sayın Baylar ve Bayanlar:

Çok iyi olduğunu düşündüğüm bir sistem kuruyorum, fikri daha önce 3 ay boyunca test ettim, Şimdi forumda en kısa zamanda olacak bir gösterge kodlamaya çalışıyorum ki test edebilelim ve gerçekten iyi olacak bence para:

Lütfen şimdilik bu satırları mql4 kodlamasına dönüştürmeme yardım edin:

1- Değişken X'im var, bunun bir değeri olacak ve şimdi onu hesaplıyorum

SO Bir Tamsayı olarak X'imiz var

2- gösterge mevcut GMT Saatini kontrol etmelidir, 6:00am GMT olmalıdır - Zaman Çerçevesi 1 H

-- GMT SAATİNİ kontrol edin 6:00am, bu mum kapandığında, bu mumun aşağıdaki Değişkenini hesaplamamız gerekir:

Yüksek - Düşük = A

A / 2 = B

B - Yüksek = C = SL

D = X * %30

Buy_Entry= D + C

Buy_Target= C + (X * %60)

Sell_Entry= C - D

Sat _Target= C - (X * %60)

Sonra:

Sonucu, Al ve Sat ve SL için Girişe Göre Alım için GreaN Alanı ve Kırmızı Kısa Alan ile grafikte çizgiler olarak çizmek istiyorum

bunlar GMT 6:00 mum biter bitmez otomatik olarak görünmelidir, Zaman Çerçevesi 1H, bu nedenle hesaplama 6:00 - 6:59am GMT Candle yüksek ve düşük'e göre yapılmalıdır

PLZ Bunu MQL4'e dönüştürün, böylece test edip sonucu yayınlamak için tekrar geri dönebilirim

ÇOK TEŞEKKÜRLER

 
Beno:
teşekkürler Wolfe

Bu çok yardımcı oldu ama yeni bir sorun açtı lol şimdi alıyor ama satmıyor doğru yerde değil. Üç indi'nin de mavi olduğunu satın almaya ve hepsi kırmızı olduğunda satmaya çalışıyorum.

Sanırım her biri için doğru adı "The Abyss" seçtim. Oturup çıkış yolumu kodlamaya çalıştığım yer orası. ÇOK KOMİK

Beno, bundan emin değilim. EA'larda renk değiştirme göstergelerini kullanma konusunda genellikle iyi bir deneyimim olmadı. Göstergelerinizin bağlı olduğu veri pencerenizi açın ve her bir renk için hangi sayısal değerin döndürüldüğünü öğrenin. Bu, kodlamanıza yardımcı olabilir, ayrıca doğru zamanda doğru gösterge arabelleğini aradığınızdan emin olun. (Eminim bunu zaten yapmışsınızdır) Gerçekten yardıma ihtiyacınız varsa, tüm EA'yı gönderirseniz, yardım konusunda daha fazla şansınız olabilir. Ayrıca, kişisel olarak, biri kısalara, diğeri uzunlara ayrılmış 2 ayrı Ordersend() işleviyle kodlardım . Bu sadece benim görüşüm, işleri takip etmeyi kolaylaştırıyor.

İyi şanslar, hepimizin kendi "The Abyss" versiyonları olmuştur!

 

şerefe wolfe

Ne olduğunu görmek için 2 Ordersend seçeneğini deneyeceğim. Bunu bir kez yaptıktan sonra yayınlayacağım.

Neden: