Nasıl kodlanır? - sayfa 276

 

Tünaydın.

Kod yazmaya ve anlamaya başlıyorum. Şimdiye kadar bunaldım.

MACD histogramını kullanarak ve tetik çizgisi histogramın üstünde ve altında kesiştiğinde bir adet yazmaya başlamak istiyorum.

Kodu anlamaya başlamak ve nasıl işlem gördüğünü görmek için çalışmasına izin vermek için basit bir program önerisi olan var mı?

Teşekkürler

Daniel

 

Trend Çizgisi-Excel/CSV'den İçe Aktarma=?

Merhaba, son günlerde bazı basit betikler yazdım, özellikle ObjectCreate (Ray=1 ile OBJ_TREND) bunun nasıl çalıştığı gerçekten güzel ama benim için biraz yakın veriye sahip olduğum hazır bir csv Dosyasından Nesneleri nasıl çizebilirim Yakın Hatlar, çünkü Şablonumu silip verileri bir komut dosyasıyla her ihtiyacım olduğunda içe aktarabilmek istiyorum,

bunun nasıl işe yarayacağına dair bir fikri olan var mı?

CSV'nin bir tarihi (zamansız) ve Yakın Değeri var (Satırlar için daha fazla veriye ihtiyacım olmazdı)

ve Komut Dosyası bu tarihten Ray = 1 ile bir Çizgi çizmeli ve rengi özelleştirmeli

belki komut dosyası açık grafiği (sembol) kontrol edebilir ve birden fazla ;-) varsa doğru csv dosyasını alabilir.

Lütfen birisi bana yardım edebilir mi

 

OrderDelete(OrderTicket()) için Hata

Herkese selam!

MQL4 programlamasında yeniyim ama diğer tarafta C++ biliyorum.

Ama ticaret işlevleriyle ilgili bazı sorunlarım var.

Bu benim sorunum :

Şununla bekleyen bir sipariş oluşturuyorum:

bilet = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slippage,0,0,"",0,0,Yeşil);

ve programın başka bir noktasında onu silmek istiyorum:

if (OrderSelect(ticket,SELECT_BY_TICKET)) OrderDelete(OrderTicket());

HATA 4108! Niye ya ? Bilet numarası doğru, yazdırıyorum.

Ama kullanırsam:

if (OrderSelect(pozisyon, SELECT_BY_POS))OrderDelete(OrderTicket());

tamam!

Niye ya ?

Desteğiniz ve forum için teşekkürler.

 

EA'yı Sonlandırmak İçin Kod ???

Herkese selam,

Bir EA'yı sonlandıracak kod arıyorum. Yazdığım küçük bir martingale gönderdim. Hesap Düşüşü Yüzdesine ulaştığında tüm Bekleyen ve Açık Emirleri Kapatacağı yere sahibim. Ayrıca, Günlük Kâr Hedefine ulaşıldığında ticareti durdurmayı da başardım. Ertesi gün tekrar ticarete başlar. (Kodlarını kullandığımdan beri SWB Grid yazan kişiye teşekkürler.)

Ancak, belirli bir koşula ulaştığında EA'nın sonlandırılmasını istiyorum. Diyelim ki, Max Percentage Drawdown'a ulaştı ve bekleyen tüm emirleri ve açık pozisyonları kapattı. Bu noktada, EA'nın kendisini sonlandırmasını istiyorum, böylece EA'yı grafikten çıkarana ve tekrar yerine koyana kadar tekrar ticarete başlamaz.

İşte EA. Herhangi bir öneri veya yardım büyük beğeni topluyor!

Teşekkürler,

Joe

 

"'\end_of_program' - dengesiz sol parantez" konusunda Yardıma ihtiyacınız var

Merhaba, bir EA üzerinde çalışıyorum ve derlerken sürekli bir hata mesajı alıyorum: "'\end_of_program' - dengesiz sol parantez." Genellikle bu hata mesajı, tek sayıda sol ve sağ parantez ile ilgilidir. Ancak, kodlarımı yüksek ve düşük kontrol ettim ve eşit sayıda sol ve sağ parantezim olduğunu gördüm. Bu yüzden, nerede yanlış gittiğini bulamamak beni gerçekten deli ediyor. Biri kodlarımı kontrol edip nasıl düzelteceğimi söyleyebilir mi? Milyonlarca kez teşekkürler. Kodlarım aşağıda yayınlanmıştır:

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

//| Breakout.mq4 |

//| pooh |

//| |

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

#özellik telif hakkı "Pooh"

#özellik bağlantısı ""

//--- giriş parametreleri

extern int UzunlukI=23;//pazara girmek için

extern int UzunlukO=7;//çıkış için

dış çift Lot = 0.1; //sipariş boyutu için

harici int N1=14; // ATR için dönem

harici int NLots=1; //artırılmış sipariş lotu sayısı

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

//| uzman başlatma işlevi |

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

int init()

{

//----

//----

dönüş(0);

}

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

//| uzman sıfırlama işlevi |

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

int tanım()

{

//----

//----

dönüş(0);

}

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

//| uzman başlatma işlevi |

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

int başlangıç()

{

//----

çift HLUzun, LL Uzun, HSkısa, LSkısa;

HLong=iYüksek(NULL,0,iEn Yüksek(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLow(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLow(NULL,0,1,LengthI,2));

HShort=iYüksek(NULL,0,iYüksek(NULL,0,2,LengthO,2));

int cnt, karyola,bilet, toplam;

toplam=SiparişToplam();

eğer (toplam<1)

{

if (iClose(NULL,0,1)>Hlong)

{

bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000,"EA Uzun",123,0,Yeşil);

eğer (bilet>0)

{

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

Print("Uzun sipariş açıldı : ",OrderOpenPrice());

}

başka

Print("Uzun sipariş açma hatası: ",GetLastError());

dönüş(0);

}

if (iClose(NULL,0,1)<LShort)

{

bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0,0001,"EA Short",123,0,Kırmızı);

eğer (bilet>0)

{

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

Print("Kısa sipariş açıldı:",OrderOpenPrice());

}

else Print("KISA sipariş açılırken hata oluştu:",GetLastError());

dönüş(0);

}

dönüş(0);

}

for(cnt=0;cnt<toplam;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // uzun pozisyon açıldı

{

// kapatılmalı mı?

if(Teklif<=Uzun)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//pozisyonu kapat

dönüş(0);

}

//sondaki durağı değiştir

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Yeşil);

dönüş(0);

}

başka

{

if(Sor>=HSkısa)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//pozisyonu kapat

dönüş(0);

}

//sondaki durağı değiştir

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);

dönüş(0);

}

}

}

// toplam uzun ve kısa sipariş lotlarını al

double LOOrderLots=0;

double SOrderLots=0;

for(cnt=0,cnt<=toplam,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots();

}

// açık siparişi artır

for(karyola=0,karyola<=toplam,karyola++)

{ //1

// uzun sipariş için pozisyon ekle

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //açık emir varsa

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) // EA tarafından açık emir açıldıysa pooh abd tipi Uzun

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0) ))&&LOSiparişLots<Çok*(i+1)) //4

{ bilet=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000,"EA Long",123,0,Yeşil); ///5

eğer (bilet>0)

{ //6

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

Print("Uzun sipariş açıldı : ",OrderOpenPrice());

} //6

başka

Print("Uzun sipariş açma hatası: ",GetLastError());

kırmak;

} //5

} ///4

dönüş(0);

//kısa sipariş için pozisyon ekle

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SEL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ bilet=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0,0001,"EA Short",123,0,Kırmızı); //9

eğer (bilet>0)

{ // 10

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

Print("Kısa sipariş açıldı : ",OrderOpenPrice());

} // 10

başka

Print("Kısa sipariş açma hatası: ",GetLastError());

kırmak;

} //9

} //8

dönüş(0);

} //7

} //3

} ///2

} //1

dönüş(0)

}

 

Basit bir göstergeyi kodlamak için bir kodlayıcıya İHTİYACINIZ

Bunu yapan bir göstergeyi kodlayacak birine ihtiyacım var:

Sadece 0,50,100 satır kullanarak basit bir Fibonacci üzerinde. Bir çubuk %50'nin üzerinde veya %50'nin altında kapandığında, ancak her ikisini birden değil de yukarıda mı yoksa altında mı kapatacağımı seçme seçeneğine sahip olduğumda. Bu yüzden, %50'nin altında bir kapanış arıyorsam, 50'nin üzerine her kapandığında uyarının çalmasını istemiyorum. Beni bir sesle uyarmasını ve bana bir e-posta ve/veya metin göndermesini istiyorum. Mümkün mü? Teşekkür ederim!!

RESİM: http://tinypic.com/r/dhbu6v/5

 

Basit mantığı kodlamaya çalışıyorum, yapamıyorum!

Merhaba Forum,

MQL4'te yeterince iyi olan sizler için bunun kodlaması çok basit bir şey olduğuna inanıyorum ama acemiyim ve sorunlarım var, buradaki tüm dersleri okudum ama yine de çözemedim.

bu yüzden otomatik ticaret yapmak istiyorum

parti büyüklüğü 0.1

stoploss = 30 pip

kar hedefi 50 pip

AUDUSD çifti

02:00 GMT ile 10:00 GMT arasında (yüksek fiyat - düşük fiyat) < 60 pip ise , o zaman AUDUSD'yi düşük fiyattan - 5 pipten sat veya AUDUSD'yi yüksek fiyat + 5 pip'ten satın al, aksi halde ticaret yok

 
Avasys:
Merhaba Forum,

MQL4'te yeterince iyi olan sizler için bunun kodlaması çok basit bir şey olduğuna inanıyorum ama acemiyim ve sorunlarım var, buradaki tüm dersleri okudum ama yine de çözemedim.

bu yüzden otomatik ticaret yapmak istiyorum

parti büyüklüğü 0.1

stoploss = 30 pip

kar hedefi 50 pip

AUDUSD çifti

02:00 GMT ile 10:00 GMT arasında (yüksek fiyat - düşük fiyat) < 60 pip ise , o zaman AUDUSD'yi düşük fiyattan - 5 pipten sat veya AUDUSD'yi yüksek fiyat + 5 pip'ten satın al, aksi halde ticaret yok

[lang=pl]Merhaba, bu EA'yı kodlamanın sorun olmadığını düşünüyorum ama bir sorum var.

Ne zaman almak/satmak istiyorsunuz? Düşük-5 yüksek+5 seviyelerinde bekleyen siparişlere mi ihtiyacınız var?

Saygılarımızla,

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]Merhaba, bu EA'yı kodlamanın sorun olmadığını düşünüyorum ama bir sorum var.

Ne zaman almak/satmak istiyorsunuz? Düşük-5 yüksek+5 seviyelerinde bekleyen siparişlere mi ihtiyacınız var?

Saygılarımızla,

Grzesiek[/lang]

Merhaba,

yardım için teşekkürler

Evet, daha doğrusu 02:00 GMT ile 10:00 GMT saatleri arasındaki (kodda bu çok önemlidir) AUDUSD ticaret aralığı (yüksek fiyat ve düşük fiyat arasındaki fark) 60 pip'ten azdır, yani bu işlem yapılabilir bir sinyaldir. Yani fiyatlar düşük fiyata (02:00 ile 10:00 arası) - 5 pip ulaşırsa satarsınız ve fiyatlar yüksek + 5 pip'e ulaşırsa satın alırsınız.

misal

02:00 ile 10:00 arasında GBPUSD düşük fiyat 1.6000, yüksek 1.6050 idi, yani fiyatlar 1.5995'e ulaşırsa otomatik sat ve fiyat 1.6055'e ulaşırsa otomatik satın al 30 pip zarar durdur emrini otomatik olarak yerleştir ve 50 pip kar al .

vaktin yoksa nasıl başlayacağımı söyle, dersi okuyorum ama işi yapmak için pratiğim yok

Teşekkürler

 
pooh123:
Merhaba, bir EA üzerinde çalışıyorum ve derlerken sürekli bir hata mesajı alıyorum: "'\end_of_program' - dengesiz sol parantez." Genellikle bu hata mesajı, tek sayıda sol ve sağ parantez ile ilgilidir. Ancak, kodlarımı yüksek ve düşük kontrol ettim ve eşit sayıda sol ve sağ parantezim olduğunu gördüm. Bu yüzden, nerede yanlış gittiğini bulamamak beni gerçekten deli ediyor. Biri kodlarımı kontrol edip nasıl düzelteceğimi söyleyebilir mi? Milyonlarca kez teşekkürler. Kodlarım aşağıda yayınlanmıştır:

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

//| Breakout.mq4 |

//| pooh |

//| |

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

#özellik telif hakkı "Pooh"

#özellik bağlantısı ""

//--- giriş parametreleri

extern int UzunlukI=23;//pazara girmek için

extern int UzunlukO=7;//çıkış için

dış çift Lot = 0.1; //sipariş boyutu için

harici int N1=14; // ATR için dönem

harici int NLots=1; //artırılmış sipariş lotu sayısı

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

//| uzman başlatma işlevi |

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

int init()

{

//----

//----

dönüş(0);

}

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

//| uzman sıfırlama işlevi |

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

int tanım()

{

//----

//----

dönüş(0);

}

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

//| uzman başlatma işlevi |

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

int başlangıç()

{

//----

çift HLUzun, LL Uzun, HSkısa, LSkısa;

HLong=iYüksek(NULL,0,iEn Yüksek(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLow(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLow(NULL,0,1,LengthI,2));

HShort=iYüksek(NULL,0,iYüksek(NULL,0,2,LengthO,2));

int cnt, karyola,bilet, toplam;

toplam=SiparişToplam();

eğer (toplam<1)

{

if (iClose(NULL,0,1)>Hlong)

{

bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000,"EA Uzun",123,0,Yeşil);

eğer (bilet>0)

{

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

Print("Uzun sipariş açıldı : ",OrderOpenPrice());

}

başka

Print("Uzun sipariş açma hatası: ",GetLastError());

dönüş(0);

}

if (iClose(NULL,0,1)<LShort)

{

bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0,0001,"EA Short",123,0,Kırmızı);

eğer (bilet>0)

{

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

Print("Kısa sipariş açıldı:",OrderOpenPrice());

}

else Print("KISA sipariş açılırken hata oluştu:",GetLastError());

dönüş(0);

}

dönüş(0);

}

for(cnt=0;cnt<toplam;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // uzun pozisyon açıldı

{

// kapatılmalı mı?

if(Teklif<=Uzun)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//pozisyonu kapat

dönüş(0);

}

//sondaki durağı değiştir

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Yeşil);

dönüş(0);

}

başka

{

if(Sor>=HSkısa)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//pozisyonu kapat

dönüş(0);

}

//sondaki durağı değiştir

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);

dönüş(0);

}

}

}

// toplam uzun ve kısa sipariş lotlarını al

double LOOrderLots=0;

double SOrderLots=0;

for(cnt=0,cnt<=toplam,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots();

}

// açık siparişi artır

for(karyola=0,karyola<=toplam,karyola++)

{ //1

// uzun sipariş için pozisyon ekle

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //açık emir varsa

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- EA tarafından açık emir açıldıysa pooh abd tipi Uzun

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0) ))&&LOSiparişLots<Çok*(i+1)) //4

{ bilet=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000,"EA Long",123,0,Yeşil); ///5

eğer (bilet>0)

{ //6

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

Print("Uzun sipariş açıldı : ",OrderOpenPrice());

} //6

başka

Print("Uzun sipariş açma hatası: ",GetLastError());

kırmak;

} //5

} ///4

dönüş(0);

//kısa sipariş için pozisyon ekle

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SEL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ bilet=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0,0001,"EA Short",123,0,Kırmızı); //9

eğer (bilet>0)

{ // 10

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

Print("Kısa sipariş açıldı : ",OrderOpenPrice());

} // 10

başka

Print("Kısa sipariş açma hatası: ",GetLastError());

kırmak;

} //9

} //8

dönüş(0);

} //7

} //3

} ///2

} //1

dönüş(0)

}

[lang=pl]Merhaba, OrderMagicNumer işlevinde çok az hata oldu, iki dengesiz ")" sonunda () kullanmalısınız. For döngüsünde ";" kullanmalısınız. yerine ",".

Dengesiz parantez bulmanız gerekiyorsa size Notepad ++ öneririm [/lang]

Dosyalar:
eamod.mq4  5 kb
Neden: