Merhaba
Şimdi bu sorunu çözdüm. EA'yı derleyebilir ve geriye dönük test etmeye çalıştım. Ama ne yazık ki hiçbir şey alıp satmıyor!
Bunun dışında işe yarıyor gibi görünüyor, bu dergi:
14:16:18 EL1 girişleri: Lot=0,1; Zaman dilimi=240;
14:16:18 ELine GBPUSD,H4: kaldırıldı
14:16:18 2005.11.14 00:00 ELine GBPUSD,H4: başarıyla yüklendi
Ve bu EA Kodudur:
//+------------------------------------------- -------------------+
//| T1.mq4
//|
//|
//+------------------------------------------- -------------------+
harici çift Lot = 0.1;
harici int Zaman Çerçevesi = 240;
string strDirCurrent="yok";
string strDirPrevious="yok";
//+------------------------------------------- -------------------+
//| |
//+------------------------------------------- -------------------+
int başlangıç()
{
// mevcut yönü kontrol et
if(iCustom(NULL,Timeframe,"ELine",0,0)>iCustom(NULL,Timeframe,"ELine",1,0))
strDirCurrent="uzun";
if(iCustom(NULL,Timeframe,"ELine",0,0)<iCustom(NULL,Timeframe,"ELine",1,0))
strDirCurrent="kısa";
// önceki yönle karşılaştır ve bir değişiklik varsa bir pozisyon aç
if(strDirCurrent=="uzun" && strDirPrevious=="kısa")
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,50,200,"EABuyOrder",16384,0,Yeşil);
if(strDirCurrent=="kısa" && strDirPrevious=="uzun")
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,50,200,"EASellOrder",16384,0,Kırmızı);
strDirPrevious=strDirCurrent;
}
// son.
Herhangi bir yardım çok açığız !!
teşekkürler
Eric
Bu panodaki geliştirme kursuna bakarsanız, MA'ları çaprazlayan bir kod olan "My_First_EA"yı bulacaksınız.
EA'nızı test ederken herhangi bir sonuç alamadım ve EA-Proramming'de de çok yeniyim. Afedersiniz
teşekkürler balo. NULL'daki boşluk sadece kopyala ve yapıştırdan ist, kodumda doğru yazılmış. Ve derler (ikinci versiyon).
MQL kursunu biliyorum (henüz hepsini bitirmemiş olmama rağmen).
ADX'in test etmesi için benzer bir EA yazdım ve orada çalışıyor. Sadece özel göstergemi kullanmaya çalıştığımda işlem yapmıyor ..
Lütfen göstergenizi ekleyin - böylece geriye dönük test yapabiliriz
Merhaba
Harika kod - Geri test etmeyi çok isterim - lütfen bize özel Eline'ınızı verin.
Kodunuzu kapsamlı bir şekilde değiştirdim.
/*
* Created by SharpDevelop.
* User: CARDIO
* Date: 1/17/2006
* Time: 4:55 AM
*
*Todo: if there is an ope position - close it- then open in opposite direction.
*
*/
//+------------------------------------------------------------------+
//| T1.mq4
//|
//|
//+------------------------------------------------------------------+
#include
extern double Lots = 0.1;
extern int Timeframe = 240;
string strDirCurrent="none";
string strDirPrevious="none";
int cnt, magicEA;
bool isclosing = false;
double slippage = 3;
int init() {
return(0);
}
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
magicEA = 16384;
// check for current direction
if(iCustom(NULL,Timeframe,"ELine",0,0)>iCustom(NULL,Timeframe,"ELine",1,0))
{
strDirCurrent="long";
}
if(iCustom(NULL,Timeframe,"ELine",0,0)<iCustom(NULL,Timeframe,"ELine",1,0))
{strDirCurrent="short";
}
// compare to previous direction and open a position if there was a change
if(strDirCurrent=="long" && strDirPrevious=="short")
{
//firs close open positions
isclosing = true;
isclosing1();
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,"T1_EA_Buy_Order",16384,0,Green);
return(0);
}
if(strDirCurrent=="short" && strDirPrevious=="long")
{
isclosing = true;
isclosing1();
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,"T1_EA_Sell_Order",16384,0,Red);
return(0);
}
strDirPrevious=strDirCurrent;
return(0);
}
// the end.
void isclosing1(){
//Close all open orders
//todo: get a requote on the prices if error 138 occurs, use refreshrates
//todo: check if the last 3 closes where losers - if so stop the ea
int totalOrders = OrdersTotal();
int numPos = 0;
for(cnt=0; cnt<totalOrders; cnt++) { // scan all orders and positions...
OrderSelect(cnt, SELECT_BY_POS); // the next line will check for ONLY market trades, not entry orders
if(OrderSymbol() == Symbol() && OrderType() <= OP_SELL && OrderMagicNumber() == magicEA) { // only look for this symbol, and only orders from this EA
numPos++;
if(OrderType() == OP_BUY) { // Check for close signal for bought trade
if(isclosing) {
if (OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Violet)) { // Close bought trade
//writetofile("10","Closed buy", OrderTicket());
//prtAlert("Day Trading: Closing BUY order");
} else {
// writetofile("10b","Closed buy fail", ErrorDescription(GetLastError()));
}
}
} else { // Check sold trade for close signal
if(isclosing) {
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Violet);
//writetofile("10","Closed buy", OrderTicket());
// prtAlert("Day Trading: Closing SELL order");
}else {
//writetofile("10c","Closed sell fail", ErrorDescription(GetLastError()));
}
}
}
}
}
Teşekkürler, şimdi şunu anladım:
2006.01.17 18:59:10 2006.01.12 08:20 EL1: OrderSend işlevi için parametre 7 olarak geçersiz çift sayı
2006.01.17 18:59:10 2006.01.12 08:10 EL1: OrderSend işlevi için yorum bir dize olmalıdır
2006.01.17 18:59:09 EL1: başarıyla yüklendi
ve hata yaklaşık bir milyon kez tekrarlanır ;-)
ama bunu düzeltmenin kolay olduğunu düşünüyorum.
hala düzeltmeye çalışıyorum - bekle şimdi göndereceğim
Hala sabitleniyor

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Merhaba
çok basit bir EA kodlamaya çalışıyorum ama bir programcı değilim ve daha önce hiç EA yapmadım.
MACD Örneği'ni MT4'ten aldım ve bazı bölümleri düzenledim ve ihtiyacım olmadığını düşündüğüm geri kalan her şeyi sildim.
Kodumun gerçekten korkunç olduğundan eminim
EA'nın şu şekilde çalışmasını istiyorum:
Özel göstergem ELine, adım adım hareket eden iki satıra sahiptir. Bazen biri diğerinden daha yüksek, bazen de aynı.
Bir çizgi diğerini geçtiğinde, hangi çizginin kesiştiğine bağlı olarak EA'nın bir uzun pozisyon veya kısa bir pozisyon girmesini istiyorum.
EA'nın başlangıcı dışında her zaman açık bir pozisyon vardır.
Derlemeye çalıştığımda "eğer" yazıyor - noktalı virgül bekleniyor (20,7)
Sonra bir sonraki adımda, yeni bir tane açtığında zaten var olan bir pozisyonu her zaman kapatmalı ama bunu şu ana kadar kodlayamadım.
Birisi lütfen kodumdaki hataları düzeltebilir ve belki de EA yeni bir pozisyona girdiğinde pozisyonları nasıl kapatabileceğimi söyleyebilir mi?
Çok teşekkürler!