Kodlama yardımı - sayfa 19

 

EA'mı tekrar Help ThanX ile tamamladım

Merhaba mladen,

büyük yardımın için tekrar ThanX

EA'mı tekrar Help ThanX ile tamamladım

daha fazlaXXXXXXXXX

 

Yeniden Boyama Göstergeleri

Bu soruyu birkaç hafta önce 'Kodlama Yardımı' konusuna gönderdim, ancak yanıt alamadım.

Çoğu MTF göstergesi yeniden boyanır, bazıları diğerlerinden daha fazla. Biraz yeniden boyayan, ancak çok iyi olan ve bir yönteme dahil edilebilecek bir faktörü olan bir tane var. Sorun şu ki, mantıklı olması için sürekli olarak manuel olarak güncelleme/yenileme yapmam gerekiyor. Her tikte veya her 'x' saniyede/tikte bir otomatik yenilemeyi kodlamanın bir yolu var mı?

Şu anda, yenilemek için, ya çizelge zamanlarını değiştirip geri dönüyorum ya da Grafikler/Yenile sekmesine gidiyorum ya da grafiğe başka bir gösterge ekleyip bir öncekini siliyorum.......tekrar tekrar! Çok zaman alıcı!

Bu otomatik yenilemeyi yapmanın bir yolu varsa, bulduklarımı paylaşacağım......

Teşekkür,

el arısı

 

...

el arısı

Metatrader, yeni bir onay işareti geldiğinde penceredeki her göstergeye bir otomatik yenileme sinyali gönderiyor, bu nedenle yenileme sorunu değil. Genellikle bu tür bir sorun, bir gösterge değiştirilen çubukların sayısını (genellikle göstergelerde "limit" olarak adlandırılır) doğru bulmazsa olur ... bu nedenle göstergede bir sorundur. Zaman dilimlerini değiştirdiğinizde tüm çubukları yeniden hesaplar ve bu nedenle bu durumda doğru şekilde gösterir ve sadece 1 çubuk değeri değiştiğinde düzgün yapmaz.

Sonuç olarak: göstergenin kodunu kontrol edin - içinde bir hata var

el bee:
Bu soruyu birkaç hafta önce 'Kodlama Yardımı' konusuna gönderdim, ancak yanıt alamadım.

Çoğu MTF göstergesi yeniden boyanır, bazıları diğerlerinden daha fazla. Biraz yeniden boyayan, ancak çok iyi olan ve bir yönteme dahil edilebilecek bir faktörü olan bir tane var. Sorun şu ki, mantıklı olması için sürekli olarak manuel olarak güncelleme/yenileme yapmam gerekiyor. Her tikte veya her 'x' saniyede/tikte bir otomatik yenilemeyi kodlamanın bir yolu var mı?

Şu anda, yenilemek için, ya çizelge zamanlarını değiştirip geri dönüyorum ya da Grafikler/Yenile sekmesine gidiyorum ya da grafiğe başka bir gösterge ekleyip bir öncekini siliyorum.......tekrar tekrar! Çok zaman alıcı!

Bu otomatik yenilemeyi yapmanın bir yolu varsa, bulduklarımı paylaşacağım......

Teşekkür,

el arısı
 

gösterge yardımı

En son mumun üzerine dikey bir çizgi koyan, ayarlanabilen bir gösterge kullanabilirim, eğer biri varsa ve paylaşabilirse veya bir tane yapılabilirse, çok makbule geçer.

 

Yanlış kod var mı?

Çubuğun açılıp kapanmasına dayanan bir EA yazmaya çalışıyorum

ancak bir ticaret açma koşuluyla ilgili bir sorunum var.

benim yöntemim şöyle bir şey:

+ Mevcut çubuğun açıklığı önceki çubuğun kapanışından daha yüksek olduğunda SAT. TP, önceki çubuğun yakınında

+ Mevcut çubuğun açıklığı Önceki çubuğun açıklığından daha düşük olduğunda SATIN AL. TP önceki çubuğun açık

+ Geçerli çubuk kapandığında KAPATIN.

ve işte kod (hala mql4 öğrenmeye çalışıyorum, bu yüzden bunun en iyi kod olmadığını biliyorum)

#property link "sando"

#define MAGICMA 20050610

//===================parametre====================//

dış çift solantang =3;

dış çift solangiam =3;

harici çift LotSize =1;

//============================================//

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

//| açık ticaret için kontrol |

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

int CalculateCurrentOrders(dize sembolü)

{

int satın alır = 0, satar = 0;

//----

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) ara;

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

{

if(OrderType()==OP_BUY) satın alır++;

if(OrderType()==OP_SEL) satıyor++;

}

}

//---- iade sipariş hacmi

if(satın alır>0) iade(satın alır);

başka iade(-satış);

}

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

//| Para Yönetimi (Tip 3) |

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

çifte para yönetimi3()

{

çift LotSize = 0.1;

if(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);

if(SiparişKar() > 0)

{

if(OrderLots() > LotsSize)

{

LotsSize = OrderLots()/solangiam;

}

başka

{

LotSize = LotSize;

}

}

başka

{

LotsSize = OrderLots() * solantang;

}

}

dönüş (NormalizeDouble(LotsSize,2));

}

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

//| DURUM bir ticaret açmak için |

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

geçersiz açık ticaret()

{

int res;

if(Kapat[0]<Aç[1])

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,Close[0],Close[1],"",MAGICMA,0,Red);

dönüş;

}

if(Open[0]>Aç[1])

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,Aç[0],Kapat[1],"",MAGICMA,0,Mavi);

dönüş;

}

}

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

//| uzman başlatma işlevi |

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

geçersiz başlangıç()

{

//---- geçmişi ve ticareti kontrol et

if(Bars<100 || IsTradeAllowed()==yanlış) dönüş;

//---- açık siparişleri mevcut sembole göre hesapla

if(CalculateCurrentOrders(Symbol())==0) opentrade();

// başka donggiaodich();

//----

}

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

ve lütfen ekteki resmi kontrol edin

Sanırım kodda bir yanlışlık var

Bazen EA, T_T koşulunu karşılarken ticareti yapmaz Nedenini bilmiyorum

ve bazen EA, koşulu karşılamadığında ticareti yapar!

Lütfen koddaki yanlışı düzeltmeme yardım edin.

Dosyalar:
1_2.gif  12 kb
new_edge.mq4  4 kb
 
7thman:
Çubuğun açılıp kapanmasına dayanan bir EA yazmaya çalışıyorum

ancak bir ticaret açma koşuluyla ilgili bir sorunum var.

benim yöntemim şöyle bir şey:

+ Mevcut çubuğun açıklığı bir önceki çubuğun kapanışından daha yüksek olduğunda SAT. TP, önceki çubuğun yakınında

+ Mevcut çubuğun açıklığı Önceki çubuğun açıklığından daha düşük olduğunda SATIN AL. TP önceki çubuğun açık

+ Geçerli çubuk kapandığında KAPATIN.

ve işte kod (hala mql4 öğrenmeye çalışıyorum, bu yüzden bunun en iyi kod olmadığını biliyorum)

ve lütfen ekteki resmi kontrol edin

Sanırım kodda bir yanlışlık var

Bazen EA, T_T koşulunu karşılarken ticareti yapmaz Nedenini bilmiyorum

ve bazen EA, koşulu karşılamadığında ticareti yapar!

Lütfen koddaki yanlışı düzeltmeme yardım edin.

[lang=pl]+ Mevcut çubuğun açıklığı önceki çubuğun kapanışından daha yüksek olduğunda SAT. TP, önceki çubuğun yakınında

+ Mevcut çubuğun açıklığı Önceki çubuğun açıklığından daha düşük olduğunda SATIN AL. TP önceki çubuğun açık

İşte ilk hata:

if(Kapat[0]Kapat[1])

if(Open[0]>Open[1]) (Open[0]<Open[1] olmalıdır)

İkincisi StopLoss. Kodunuzda StopLose'u ayarladınız, ancak yukarıdaki açıklamada

Yeni bir bar ortaya çıkarsa işlemleri kapatmak istediğinizi söylediniz.

İşte bir sorun daha. Aç[0]<Aç[1] olduğunu varsayalım. Fark çok küçük olabilir

emriniz gerçekleştiğinde fiyat Open[1] üzerinde olacak ve TP

sipariş açılış fiyatından daha az. Aşağıda bu davayı yakalamaya izin veren koşulu ekliyorum.

Tüm siparişleri kapatmak istediğinizi iyi anlarsam, çubuğun sonundaki kod burada.

#özellik bağlantısı "sando"

#define MAGICMA 20050610

//===================parametre====================//

dış çift solantang =3;

dış çift solangiam =3;

harici çift LotSize =1;

//============================================//

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

//| açık ticaret için kontrol |

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

int CalculateCurrentOrders(dize sembolü)

{

int satın alır = 0, satar = 0;

//----

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış ) ara;

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

{

if(OrderType()==OP_BUY) satın alır++;

if(OrderType()==OP_SEL) satıyor++;

}

}

//---- iade sipariş hacmi

if(satın alır>0) iade(satın alır);

başka iade(-satış);

}

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

//| Para Yönetimi (Tip 3) |

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

çifte para yönetimi3()

{

çift LotSize = 0.1;

if(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);

if(SiparişKar() > 0)

{

if(OrderLots() > LotsSize)

{

LotsSize = OrderLots()/solangiam;

}

başka

{

LotSize = LotSize;

}

}

başka

{

LotsSize = OrderLots() * solantang;

}

}

dönüş (NormalizeDouble(LotsSize,2));

}

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

//| DURUM bir ticaret açmak için |

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

geçersiz açık ticaret()

{

int res;

if(Kapat[1] Kapat[1] )

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(), Bid,3,0,Close[1],"",MAGICMA,0,Red);

dönüş;

}

if(Open[0]<Aç[1] && Sor <Aç[1])

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,0,Aç[1],"",MAGICMA,0,Mavi);

dönüş;

}

}

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

//| uzman başlatma işlevi |

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

geçersiz başlangıç()

{

if(isNewBar())

{

closeOrders(MAGICMA,OP_BUY);

closeOrders(MAGICMA,OP_SELL);

}

Yazdır(Kapat[1]-Aç[0]);

//---- geçmişi ve ticareti kontrol et

if(Bars<100 || IsTradeAllowed()==yanlış) dönüş;

//---- açık siparişleri mevcut sembole göre hesapla

if(CalculateCurrentOrders(Symbol())==0) opentrade();

// başka donggiaodich();

//----

}

void closeOrders(int oMagic,int oType) {

for(int i=0;i<OrdersTotal();i++) {

if(OrderSelect(i,SELECT_BY_POS)) {

if(OrderMagicNumber()==oMagic || oMagic<0) {

if(OrderSymbol()==Symbol()) {

if(OrderType()==oType || oType<0) {

if(OrderType()==OP_BUY) {

OrderClose(OrderTicket(),OrderLots(),Bid,0);

ben--;

}

if (OrderType() == OP_BUYSTOP)

{

OrderDelete(OrderTicket());

ben--;

}

if(OrderType()==OP_SEL) {

OrderClose(OrderTicket(),OrderLots(),Ask,0);

ben--;

}

if (OrderType() == OP_SELLSTOP)

{

OrderDelete(OrderTicket());

ben--;

}

}

}

}

}

}

}

bool isNewBar() {

statik int prevTime;

bool yeniBar=yanlış;

if(Zaman[0]!=öncekiZaman) {

yeniBar=true;

prevTime=Zaman[0];

}

dönüş(newBar);

}

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

Şerefe,

Grzesiek[/lang]

 

Kodlama Yardımı: Bir ECN Aracısı kullanarak EA ile Zarar Durdur ve Kâr Al yerleştirme

ECN Broker ile Zararı Durdurun, Kar Alın

Arkadaşlar,

MQL4 programlamasında acemiyim ve bir ECN komisyoncusu ile bir SİPARİŞE SL & TP eklemek için yardıma ihtiyacım var.

Başlangıçta, birisi SİPARİŞLEREND içindeki StopLoss & TakeProfit alanını "0" olarak ayarlaması gerektiğini, aksi takdirde bir ECN/STP komisyoncusunun yapmayacağını belirtene kadar SL ve TP'lerin neden siparişimi bir hatayla sonuçlandırdığını anlayamadım. emri yerine getirin.

Öyleyse sorum şu: Market'te bir emri nasıl uygulayabilirim ve ardından hemen (veya bir veya iki saniye içinde) o bilete bir SL/TP ekleyebilirim?

İşte sorumla ilgili kodun bir parçası:

if(CurrentPriceBuy>ÜstFiyatTetikleyici)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Com mm,0,0,CLR_NONE);

}

Herhangi biri, bu belirli bilete isteğe bağlı olarak 25 piplik bir TP/SL ekleyebilmem için OrderSend komutundan hemen sonra kod eklememe yardımcı olabilir mi?

Herhangi bir yardım çok takdir edilecektir. Şimdiden teşekkürler.

Saygılarımızla,

kasio

 
kasio:
ECN Broker ile Zararı Durdurun, Kar Alın

Arkadaşlar,

MQL4 programlamasında acemiyim ve bir ECN komisyoncusu ile bir SİPARİŞE SL & TP eklemek için yardıma ihtiyacım var.

Başlangıçta, birisi SİPARİŞLEREND içindeki StopLoss & TakeProfit alanını "0" olarak ayarlaması gerektiğini, aksi takdirde bir ECN/STP komisyoncusunun yapmayacağını belirtene kadar SL ve TP'lerin neden siparişimi bir hatayla sonuçlandırdığını anlayamadım. emri yerine getirin.

Öyleyse sorum şu: Market'te bir emri nasıl uygulayabilirim ve ardından hemen (veya bir veya iki saniye içinde) o bilete bir SL/TP ekleyebilirim?

İşte sorumla ilgili kodun bir parçası:

if(CurrentPriceBuy>ÜstFiyatTetikleyici)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Com mm,0,0,CLR_NONE);

}

Herhangi biri, bu belirli bilete isteğe bağlı olarak 25 piplik bir TP/SL ekleyebilmem için OrderSend komutundan hemen sonra kod eklememe yardımcı olabilir mi?

Herhangi bir yardım çok takdir edilecektir. Şimdiden teşekkürler.

Saygılarımızla,

kasio

merhaba kasio,

ECN brokerinde işlem yapıyorsanız, SL/TP olmadan emir göndermeli ve değiştirmelisiniz.

işte bir örnek:

harici çift StopLoss = 25;

harici çift TakeProfit = 25;

if(isECN==true )

{

bilet=OrderSend(Symbol(),OP_BUY,lot,Sor, kayma,0,0,yorum,sihir);

OrderSelect(bilet,SELECT_BY_TICKET);

OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - StopLoss*Point, StopLoss),sltpValue(Sor+Kar Al*Puan,Kar Al),0);

}

double sltpValue(double w1, int w2)

{

if(w2 == 0)

dönüş (0);

dönüş (NormalizeDouble(w1, Digits));

}

umarım açıktır

Daha fazla sorunuz varsa bana PM atın.

şerefe,

grzesiek

 

Bilgiler her tikte güncellenmez

Merhaba millet,

Ekranımdaki çeşitli göstergeler hakkında bana bilgi gösteren bu ea'yı yazdım.

Ancak ea'yı grafiğime eklediğimde, bilgiler sadece her 5 dakikada bir güncelleniyor (5 dakikalık grafikte),

her tik yerine. Kodlamamda yanlış bir şey mi var? Her tiki değiştirecek bilgileri görmek isterim.

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

//| test.mq4 |

//| Telif hakkı © 2011, Test A.Ş. |

//| test.net - Kaynakları ve Bilgileri Test Edin. |

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

#property telif hakkı "Telif hakkı © 2011, Test Inc."

#özellik bağlantısı "http://www.test.net"

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

//| etiketler |

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

#define ccilabel "CCIValue"

#define rsilabel "RSIValue"

#define stochlabel "StochValue"

#define üst bant etiketi "UpperBandValue"

#define alt bant etiketi "LowerBandValue"

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

//| 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ıç()

{

//----

//============================================== ===================

// Dinamik Göreceli Güç İndeksi

//============================================== ===================

çift RSI;

çift UpperBand;

çift AltBant;

RSI=iCustom(NULL,0,"Dinamik Bölge RSI",14,0,1);

UpperBand=iCustom(NULL,0,"Dinamik Bölge RSI",14,1,1);

LowerBand=iCustom(NULL,0,"Dinamik Bölge RSI",14,2,1);

//============================================== ===================

// CCİ

//============================================== ===================

çift CCI;

CCI=iCCI(NULL,0,14,PRICE_TYPICAL,1);

//============================================== ===================

// Stokastik berekenen

//============================================== ===================

çift Stoch;

Stoch=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);

//============================================== ===================

// Bilgileri göster

//============================================== ===================

// CCIDeğeri

ObjectDelete(ccilabel);

ObjectCreate(ccilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20);

ObjectSet(ccilabel, OBJPROP_YDISTANCE, 20);

ObjectSetText(ccilabel, "CCIValue is " + DoubleToStr(CCI,2), 10, "Arial", DeepSkyBlue);

// Stok Değeri

ObjectDelete(stochlabel);

ObjectCreate(stochlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(stochlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(stochlabel, OBJPROP_YDISTANCE, 40);

ObjectSetText(stochlabel, "StochValue is " + DoubleToStr(Stoch,2), 10, "Arial", DeepSkyBlue);

// RSIV değeri

ObjectDelete(rsilabel);

ObjectCreate(rsilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(rsilabel, OBJPROP_XDISTANCE, 20);

ObjectSet(rsilabel, OBJPROP_YDISTANCE, 60);

ObjectSetText(rsilabel, "RSIValue is " + DoubleToStr(RSI,2), 10, "Arial", DeepSkyBlue);

// UpperBandValue

ObjectDelete(üst bant etiketi);

ObjectCreate(üst bant etiketi, OBJ_LABEL, 0, 0, 0);

ObjectSet(üst bant etiketi, OBJPROP_XDISTANCE, 20);

ObjectSet(üst bant etiketi, OBJPROP_YDISTANCE, 80);

ObjectSetText(üst bant etiketi, "UpperbandValue is " + DoubleToStr(UpperBand,2), 10, "Arial", DeepSkyBlue);

// AltBandValue

ObjectDelete(alt bant etiketi);

ObjectCreate(alt bant etiketi, OBJ_LABEL, 0, 0, 0);

ObjectSet(alt bant etiketi, OBJPROP_XDISTANCE, 20);

ObjectSet(alt bant etiketi, OBJPROP_YDISTANCE, 100);

ObjectSetText(alt bant etiketi, "LowerBandValue is " + DoubleToStr(LowerBand,2), 10, "Arial", DeepSkyBlue);

//----

dönüş(0);

}

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

 

KG Destek ve Direnç modu

Merhaba,

Ekli destek ve direnç göstergelerinden birini değiştirecek birine ihtiyacım var. İlki, bir koparma yapıldığında bir uyarı verir. Yeni bir destek veya direnç çubuğu belirir belirmez bir uyarıya ihtiyacım var. Bu gösterge en iyi destek/direnç göstergelerinden biridir ve ayrıca özellikle yüksek zaman dilimlerinde çok güçlüdür.

teşekkürler

kg_support_and_resistance.mq4 veya

kg_support_and_resistance_alert_revision_2.ex4