Sormak! - sayfa 76

 

EA sorusu

Merhaba Codersguru,

Programlamayı öğrenmeye çalışıyorum ve materyalinizi kullanıyorum, mükemmel olduğunu söylememe izin verin! adım adım ve takip etmesi basit, bunun için teşekkürler.

Bir sorum var, EA için örnek olarak ema crossover kullandığınız için ema yerine stepMA_7.2 göstergesi kullanmayı düşünüyordum. stepMA_7.2'nin işe yarayacağını düşünüyor musunuz? veya kodun yeniden düzenlenmesi gerekecek mi yoksa daha fazla ek kod gerekebilir mi?

Koddaki sadece bir gösterge takasının ortaya çıkması gerektiğini düşünüyordum.

Şimdiden teşekkürler

Şerefe.

 
Michel:
Bu yanlış: önceki çubuklar pozitif sayılır
MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,-1);[/PHP] Use this instead:[PHP]MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,1);

Teşekkür ederim.

 
 

Hala bazı sorunlar yaşıyorum. Alış emirleri doğru bir şekilde açılır, ancak çıkış koşulları göz ardı edilerek tümü stoploss'ta kapatılır.

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

//| EA Stripped Down.mq4 |

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

#property copyright ""

#property link ""

extern double StopLoss =13.0;

extern double MA_Open =12.0;

extern double MA_Close =12.0;

extern double MA_Exit =6.0;

extern double Lots =50.0;

#define MAGICMA 20050610

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

int init()

{

return(0);

}

int deinit()

{

return(0);

}

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

int start()

{

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

double MA_CLOSE;

double MA_OPEN;

double MA_EXIT_0;

double MA_EXIT_1;

int res;

if(Volume[0]>1) return;

MA_CLOSE=iMA(NULL,0,MA_Close,1,MODE_SMA,PRICE_CLOSE,0);

MA_OPEN=iMA(NULL,0,MA_Open,1,MODE_SMA,PRICE_OPEN,0);

MA_EXIT_0=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if((MA_CLOSE-MA_OPEN>=1*Point) && MA_EXIT_0>MA_EXIT_1)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);

return;

}

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

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

if(Volume[0]>1) return;

MA_EXIT_0=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if(OrderType()==OP_BUY)

{

if(MA_EXIT_0<=MA_EXIT_1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

return;

}

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

}
 
 

Başka bir göstergenin hareketli ortalaması

Anladım.

 

bir aralıktaki açık pozisyonları kontrol etme

x pip içindeki açık pozisyonları kontrol etmeye çalışıyorum, eğer açık pozisyon yoksa bir tane açacak. Çalışmıyor ve sürekli pozisyon açıyor, yardımcı olabilecek var mı?

if(satın alma pozisyonu)

{

weBeBuying = doğru;

toplam siparişler = SiparişlerToplam();

for(i=0;i<toplam siparişler;i++)

{

OrderSelect(i,SELECT_BY_POS);

if((OrderSymbol()==Symbol()) && (OrderMagicNumber()==magicNumber))

{

type = OrderType();

if((tür == OP_BUY) || (tür == OP_BUYLIMIT))

{

if(((Teklif+spread) - OrderOpenPrice()) > -0.0013)

weBeBuying = yanlış;

}

}

}

}

if(weBeBuying==doğru)

OrderSend(Symbol(),OP_BUY,lot,Teklif+spread,slippage,0,0,NULL,magicNumber,0,Green);

 

iCustom göstergesinin MA

Bir iCustom göstergesinin Hareketli Ortalaması 7, Düzgün'e başvurmak için ifadeyi bir ea'da nasıl kodlayabilirim? Bu, ilk gösterge verilerini kullanarak Hareketli Ortalama kullanmaya eşittir. Bunu bir iCustom göstergesini görüntüleyerek ve göstergenin MA'sına sahip olarak yapabilirsiniz (İlk gösterge verilerini kullanarak), ancak bunu bir adette nasıl kodlarsınız???

Lütfen bu açıklamada bana yardım edin!

Yardımlarınız için şimdiden teşekkür ederim!

Dave

Bu konuda yardımcı olabilecek var mı???? Lütfen!!!!

Sanırım anladım!:

LR0=iCustom(NULL,0,"Laguerre RSI UZUN & KISA GİRİŞ",0,0); //ALT GAMA

Bu konuda hala yardıma ihtiyacım var - Bana yardım edebilir misin!

 

MQL4 ile ilgili sorularınızı yazabilirsiniz, cevaplamak için elimden geleni yapacağım.

hata kodu için.

Tüm uzmanlarımda, aşağıdaki Coders Guru gibi bir uzmanla bile "OrderModify error 1" hata koduna sahip olduğumu hesabıma geri verdim,

niye ya?

Teşekkürler !

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

//| PriceCross.mq4 |

//| Kodlayıcılar Guru |

//| https://www.mql5.com/en/forum |

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

#özellik telif hakkı "Coders Guru"

#özellik bağlantısı "https://www.forex-tsd.com"

//---- İçerir

#Dahil etmek

//---- İşlem limitleri

harici çift TakeProfit = 200;

harici çift TrailingStop = 50;

harici çift StopLoss = 50;

dış çift Lot = 0.1;

extern int Kayma = 5;

//--- Harici seçenekler

harici int CurrentBar = 1;

extern int HedgeLevel = 6;

extern double Expiration = 7200;

dış int Boyut = 4;

harici int Adım = 1;

extern bool UseClose = true;

//--- Gösterge ayarları

harici int MaMode = 3;

extern int MaPeriod = 24;

//--- Genel değişkenler

int SihirliSayı = 101090;

string ExpertComment = "PriceCross";

bool LimitPairs = doğru;

bool LimitFrame = doğru;

int Zaman Çerçevesi = 60;

string LP[] = {"EURUSD","USDCHF","GBPUSD","USDJPY"}; // sınırlamak istediğiniz paris'i ekleyin/kaldırın.

bool Optimize = doğru;

int SayıOfTries = 5;

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

int init()

{

dönüş(0);

}

int tanım()

{

dönüş(0);

}

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

bool isNewSymbol(string current_symbol)

{

// tüm açılan siparişler arasında dolaş ve sembolleri karşılaştır

int toplam = SiparişlerToplam();

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

string selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

dönüş (Yanlış);

}

dönüş (Doğru);

}

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

int başlangıç()

{

int cnt, bilet, toplam,n;

çift eğilim ;

if(Bars<100) {Print("100'den küçük barlar"); dönüş (0);}

if(LimitFrame)

{

if(Period()!=TimeFrame) {Print("Bu EA bu TimeFrame ile çalışmıyor!"); dönüş (0);}

}

if(SınırÇiftleri)

{

if(AllowedPair(Symbol()) == false) {Print("Bu EA bu Para Birimi ile çalışmıyor!"); dönüş (0);}

}

trend = iMA(NULL,0,MaPeriod,0,MaMode,PRICE_CLOSE,CurrentBar);

//--- Ticaret koşulları

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

if (Open[1]trend)

BuyCondition = doğru;

if (Open[1]>trend && Close[1]<trend)

SellCondition = doğru;

if (Open[1]>trend && Close[1]<trend)

CloseBuyCondition = doğru;

if (Open[1]trend)

CloseSellCondition = doğru;

toplam = SiparişlerToplam();

if(toplam < 1 || isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- SATIN AL koşulu

{

bilet = OpenOrder(OP_BUY); //<-- SATIN AL emrini aç

CheckError(bilet,"SATIN AL");

for(n=0 ; n< Boyut ; n++)

{

bilet = OpenPendingOrder(OP_BUYSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

dönüş(0);

}

if(SellCondition) //<-- SATIŞ koşulu

{

bilet = OpenOrder(OP_SELL); //<-- SATIŞ emrini aç

CheckError(bilet,"SAT");

for(n=0 ; n < Size ; n++)

{

bilet = OpenPendingOrder(OP_SELLSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

dönüş(0);

}

dönüş(0);

}

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

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

{

if(OrderType()==OP_BUY) //<-- Uzun pozisyon açıldı

{

if(Kullan Kapat)

{

if(CloseBuyCondition) //<-- Siparişi kapatın ve çıkın!

{

CloseOrder(OrderType()); dönüş(0);

}

}

TrailOrder(OrderType()); dönüş(0); //<-- Siparişi takip etme

}

if(OrderType()==OP_SELL) //<-- Kısa pozisyona git

{

if(Kullan Kapat)

{

if(CloseSellCondition) //<-- Siparişi kapatın ve çıkın!

{

CloseOrder(OP_SELL); dönüş(0);

}

}

TrailOrder(OrderType()); dönüş(0); //<-- Siparişi takip etme

}

}

}

dönüş(0);

}

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

....

 

Merhaba,

Bir siparişin zaten kapalı olduğunu bilebileceğimiz bir şey var mı?

İllüstrasyon şöyle:

2 bekleyen emir açıyorum.

açık #182 satın alma limiti 0.17 EURUSD 1.3005 sl'de: 1.2970 tp: 1.3013

açık #183 satın alma limiti 0.17 EURUSD 1.3000 sl'de: 1.2968 tp: 1.3011

o zamanlar

#182 siparişi, 0.17 EURUSD satın al 1.3005'te açıldı

1.3013'te #182 (1.3013 / 1.3015) kar al

#182 numaralı sipariş kapandıktan sonra 183 numaralı siparişi silmek istiyorum. Tetikleyici, eğer #182 numaralı sipariş kapatılırsa, o zaman 183 numaralı sipariş silinecektir.

Şerefe