Nasıl kodlanır? - sayfa 58

 

Düzelttiğimi sanıyordum ama hayır.

Yapmaya çalıştığım şey, mevcut pozisyonu açmak için hangi giriş koşulunun kullanıldığını belirten grafikte ve dergide bir yorum yapmak.

Bu daha önce yapıldı mı ve nasıl yapıyorsunuz çünkü bir süredir deniyorum ama şans yok ve düşündüğüm kadar kolay değil.

Son denemem aşağıda.

herhangi bir yardım harika olurdu

buysig = Uzun || Uzun2 || Uzun3 || Uzun4;

sellsig = Kısa || Kısa2 || Kısa3 || Kısa4;

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

closesell=satın alma;

if (curprof>=AccountEquity()*ProfitExit/100.0) {

çıkış=doğru;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

yeniden düzen=doğru;

}

}

geçersiz CheckForOpen() {

int res,tr;

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

co=CalculateCurrentOrders(Symbol());

if(sellsig && lastsig!=-1) {

if ( Kısa == true)Print(" Kısa sinyal alındı ");

if ( Short2 == true)Print(" Short2 sinyali alındı ");

if ( Short3 == true)Print(" Short3 sinyali alındı ");

if ( Short4 == true)Print(" Short4 sinyali alındı ");

co=CalculateCurrentOrders(Symbol());

if (co==0) {

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

sonsig=-1;

son=Zaman[0];

dönüş;

}

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

co=CalculateCurrentOrders(Symbol());

if(buysig && lastsig!=1) {

if ( Uzun == true) Print(" Uzun sinyal alındı ");

if ( Long2 == true)Print(" Long2 sinyali alındı ");

if ( Long3 == true) Print(" Long3 sinyali alındı ");

if ( Long4 == true)Print(" Long4 sinyali alındı ");

co=CalculateCurrentOrders(Symbol());

if (co==0) {

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

son=Zaman[0];

sonsig=1;

dönüş;

}

}

bool CloseAtMarket(int bilet, çift lot) {

//hata toleranslı piyasa emri kapanışı

bool bres=yanlış; int tr;

dener=0;

while (!bres && try<SiparişNumarası) {

Yenileme Oranları();

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

çalışır++;

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

}

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

}

int OpenStop(int modu, çift lot, çift prc, int SL, int TP) {

int res,tr,col;

dize postası;

çift açık fiyat,sl,tp,stlev;

dener=0;

stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*Nokta;

while (res<=0 && try<SiparişNumarası) {

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

Yenileme Oranları();

if (mod==OP_SELLSTOP) {

if (prc<=Teklif-stlev) openprice=prc;

başka openprice=Teklif-stlev;

if (SL>0) sl=açık fiyat+SL*Puan;

if (TP>0) tp=açık fiyat-TP*Puan;

sütun=Kırmızı;

} başka

if (mod==OP_BUYSTOP) {

if (prc>=Ask+stlev) openprice=prc;

başka openprice=Sor+stlev;

if (SL>0) sl=openprice-SL*Puan;

if (TP>0) tp=açık fiyat+TP*Puan;

sütun=Mavi;

} başka bir dönüş;

Print(Ask," ",Teklif," ",Symbol()," ",mode," ",lot," ",openprice," ",sl," ",tp," ");

res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+"_"+ MagicNumber, MagicNumber,0,col);

çalışır++;

}

if (res<=0) Print(" Bekleyen sipariş açılırken hata oluştu : ",ErrorDescription(GetLastError()));

dönüş(ler);

 

Bu EA derlenmeyecek bile, stoploss endişelerinizden en azı olmalıdır. İçinde rastgele boşluklar olan veya ilk harfi büyük olmayan 5 Değişken var!

 
jturns23:
Bu EA derlenmeyecek bile, stoploss endişelerinizden en azı olmalıdır. İçinde rastgele boşluklar olan veya ilk harfi büyük olmayan 5 Değişken var!

İşte düzeltme sürümü.

Ama bu hala herhangi bir pozisyon açamıyor çünkü kodda uzun / kısa pozisyonların nasıl açılacağına karar verme mantığı yok.

 
 

Bu EA ile ilgili yardım

Michel:
Kim bu CHingsMARoonCLK?

Hatırladığım kadarıyla, bu EA elCactus'tan 10p3'ten başka bir şey değil, ama belki yanılıyorum...

Konusunu kontrol edin, muhtemelen aradığınızı bulacaksınız: https://www.mql5.com/en/forum/174975

Tamam.. şimdi mesele şu ki bu EA için bir stoploss koyabiliyorum.. kod nedir? yardım edebilir misin? teşekkürler

 

ticaret bölgesi yok - kod yardımı

Herkese merhaba,

Bir kod üzerinde ince ayar yapmaya çalışıyorum ama çok uğraştıktan sonra hala düzeltemedim...

Buradaki fikir, fiyat aralığı önceki ticaretle aynı bölgedeyse bir sonraki ticareti durdurmaktır. Uzun ticaret, son AÇIK KONUM uzun ticareti için bölgeyi kontrol edecek ve kısa ticaret, son AÇIK KONUM kısa ticareti için bölgeyi kontrol edecektir.

yani. ilk UZUN 1.4000'de ise, ikinci UZUN yalnızca fiyat bölgenin (20 pip bölgesi) dışına çıkması durumunda 1.3990'dan az ve&& 1.4010'dan fazlaysa tetiklenir

Herkese teşekkürler..

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

//| Yan pazar için filtre - benzer fiyat aralığında çoklu ticareti önler ve ticarete kapalı bölge yaratır |

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

harici int Bölge1 = -10; // (alt bölge)

harici int Bölge2 = 10; // (üst bölge)

// önceki ticaretten -10 ile +10 arasında ticaret bölgesi yok

bool CheckZone(int tipi)

{

int cnt = SiparişlerToplam();

için (int i=0; i < cnt; i++)

{

(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) devam ederse;

(OrderSymbol() != Symbol()) devam ederse;

(OrderMagicNumber() != Magic) devam ederse;

(OrderType() != type) devam ederse;

if (tür == OP_BUY)

{

if( (Bid - OrderOpenPrice()) > Zone1*Point && (Bid - OrderOpenPrice()) < Zone2*Point ) return(false);

}

if (tür == OP_SELL)

{

if( (OrderOpenPrice()-Ask) > Zone1*Point && (OrderOpenPrice()-Ask) < Zone2*Point ) return(false);

}

}

dönüş (doğru);

}

 

EA Sorununu Çözün

Merhaba tüm MQL Programcıları,

Lütfen aşağıdaki kodu kontrol edin ve bunun neden takasları demo hesabıma yerleştirmediğini söyleyin. GJ 1m'de iyi EA ama ne yazık ki çalışmıyor. Herhangi biri düzeltebilir ve hatasız bir EA olarak kullanılabilir hale getirebilir mi?

Ben şimdiden çok şükür!

Saygılarımla.

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

dış int Uzunluk1 = 3;

dış int Uzunluk2 = 10;

dış int Uzunluk3 = 16;

çift Histo[];

çift MaHisto[];

ikiye katlamak[];

çift dn[];

çift upMode[];

çift dnMode[];

int alarmBar;

int init()

{

dönüş(0);

}

int tanım()

{

dönüş(0);

}

int başlangıç()

{

int limiti;

int counted_bars=IndicatorCounted();

if(counted_bars<0) counted_bars=0;

if(counted_bars>0) counted_bars--;

limit=Barlar-sayılan_barlar;

for(int i = 0 ;i <= limit ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE ,ben);

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);

for(int m = 0 ;m <= limit ;m++)

{

if(MaHisto[m+1] 0)

{

yukarı[m] = Aç[m]-(5*Nokta);

if(Barlar > alertBar && m == 0)

{

//Alert(Symbol()+" "+Period()+" KI LONG ",Sor);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,Kırmızı);

alertBar = Çubuklar;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Aç[m]+(5*Nokta);

if(Barlar > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Kırmızı);

alertBar = Çubuklar;

}

}

başka

{

yukarı[m] = BOŞ_DEĞER;

dn[m] = BOŞ_DEĞER;

}

if( MaHisto[m] > 0 )

{

upMode[m] = Yüksek[m];

dnMode[m] = Düşük[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = Yüksek[m];

upMode[m] = Düşük[m];

}

}

dönüş(0);

}

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

 
arsenic786:
Merhaba tüm MQL Programcıları,

Lütfen aşağıdaki kodu kontrol edin ve bunun neden takasları demo hesabıma yerleştirmediğini söyleyin. GJ 1m'de iyi EA ama ne yazık ki çalışmıyor. Herhangi biri düzeltebilir ve hatasız bir EA olarak kullanılabilir hale getirebilir mi?

Ben şimdiden çok şükür!

Saygılarımla.

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

dış int Uzunluk1 = 3;

dış int Uzunluk2 = 10;

dış int Uzunluk3 = 16;

çift Histo[];

çift MaHisto[];

ikiye katlamak[];

çift dn[];

çift upMode[];

çift dnMode[];

int alarmBar;

int init()

{

dönüş(0);

}

int tanım()

{

dönüş(0);

}

int başlangıç()

{

int limiti;

int counted_bars=IndicatorCounted();

if(counted_bars<0) counted_bars=0;

if(counted_bars>0) counted_bars--;

limit=Barlar-sayılan_barlar;

for(int i = 0 ;i <= limit ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE ,ben);

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);

for(int m = 0 ;m <= limit ;m++)

{

if(MaHisto[m+1] 0)

{

yukarı[m] = Aç[m]-(5*Nokta);

if(Barlar > alertBar && m == 0)

{

//Alert(Symbol()+" "+Period()+" KI LONG ",Sor);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,Kırmızı);

alertBar = Çubuklar;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Aç[m]+(5*Nokta);

if(Barlar > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Kırmızı);

alertBar = Çubuklar;

}

}

başka

{

yukarı[m] = BOŞ_DEĞER;

dn[m] = BOŞ_DEĞER;

}

if( MaHisto[m] > 0 )

{

upMode[m] = Yüksek[m];

dnMode[m] = Düşük[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = Yüksek[m];

upMode[m] = Düşük[m];

}

}

dönüş(0);

}

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

"OrderSend(Symbol(),OP_SELL,0.1,Sor,3,25,15,0,0,0,R ed); "

Alış fiyatından satıyorsunuz, Bid olmalıdır.

Yorum alanı 0 değil "" olmalıdır.

SL olarak 25, Teklif+25*Puan olmalıdır.

15 TP olarak Bid-15*Puan olmalıdır.

"Kırmızı" bir renk değildir.

 
Michel:
"OrderSend(Symbol(),OP_SELL,0.1,Sor,3,25,15,0,0,0,R ed); "

Alış fiyatından satıyorsunuz, Bid olmalıdır.

Yorum alanı 0 değil "" olmalıdır.

SL olarak 25, Teklif+25*Puan olmalıdır.

15 TP olarak Bid-15*Puan olmalıdır.

"Kırmızı" bir renk değildir.

Desteğiniz için çok teşekkür ederiz!

Ama hala sorunlarla karşılaşıyorum sıfır MQL bilgisi. Lütfen kodu kopyalayıp mq4 dosyasına yapıştırıp demoda test edip düzgün çalışıp çalışmadığını söyler misiniz? Desteğiniz Kindest Help Michel olarak sayılacaktır.

Saygılarımla,

Kaşif.

 

Hayır, üzgünüm, şimdilik yeterli zamanım yok.

Birkaç saat içinde Noel için aileme geri dönmek için bir tekneye biniyorum ... ve artık bilgisayar yok ...