Kodlama yardımı - sayfa 351

 
mladen:
stevenpun Bunun için, o göstergeye bir miktar "eğim yönü" tamponu eklemek ya da bu eğimi bir tamponda çözülmüş olan başka bir MACD kullanmak en kolayı olacaktır.

Buna ne dersiniz https://www.mql5.com/en/forum/178018/page67

Ama sorun, koda ne koymam gerekiyor, google'da birçok ea var ama bazı örnekler bulma konusunda başarılı değilim.

Lütfen bana bir örnek gösterin, yardım ettiğiniz için teşekkürler.

 
stevenpun:
Buna ne dersiniz https://www.mql5.com/en/forum/178018/page67

Ama sorun, koda ne koymam gerekiyor, google'da birçok ea var ama bazı örnekler bulma konusunda başarılı değilim.

Lütfen bana bir örnek gösterin, yardım ettiğiniz için teşekkürler.

stevenpun

Bu kullanmak için iyi bir örnek olurdu.

"Renkler" arabelleğini okuyun ve içindeki değer -1'den 1'e değiştiğinde bu bir satın alma sinyalidir ve değer 1'den -1'e değiştiğinde bu bir satış sinyalidir ("başlangıç" önceki değerdir) renk arabelleğinin ve "to" geçerli değerdir veya yalnızca kapalı çubuklarla çalışmak istiyorsanız, "dan" 2 çubuk öncedir ve "to" 1 çubuk öncedir)

 

Merhaba,

ben burada yeniyim. Bir dikdörtgen nesneyi güncellemek istiyorum ama nasıl yapacağımı bilmiyorum. Aşağıdaki kod, EMA'lar kesişirse nesne dikdörtgenleri oluşturmak için kullandım. Fiyat geri çekilir ve ona dokunursa bu dikdörtgenin bitmesi gerekir. Nasıl yapılır ?

Şimdiden teşekkürler.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 clrLime

#property indicator_width1 2

#property indicator_color2 clrMagenta

#property indicator_width2 2

extern int EMA1 = 3;

extern int EMA2 = 21;

extern int EMA3 = 63;

extern double arrowDistance = 0.0003;

extern color upRectColor = clrYellow;

extern color dnRectColor = clrDodgerBlue;

extern color touchRectColor = clrDarkGray;

//---

extern double rectHigh = 0.0001;

extern int rectDays = 3;

extern int bars_limit = 2000;

extern bool showRectangle = true;

double upArrow[];

double dnArrow[];

double prev2EMA1, prev2EMA2, prev2EMA3;

double prevEMA1, prevEMA2, prevEMA3;

double curEMA1, curEMA2, curEMA3;

double prevOpenPrc, prevClosePrc, prevLowPrc, prevHighPrc;

string objRectName;

string rectArray[];

string indiName = "Emac";

int rectValidity = 0;

int arrayMaxAmounts = 99999;

int arrayCurAmount = 0;

int arrayLastAmount = 0;

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

//| INIT() |

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

int init() {

if (Period() != PERIOD_H1) {

Alert("Use only @ TF: H1");

return(0);

}

ArrayResize(rectArray,arrayMaxAmounts,arrayMaxAmounts);

IndicatorBuffers(2);

SetIndexBuffer(0,upArrow);

SetIndexBuffer(1,dnArrow);

SetIndexStyle(0,DRAW_ARROW);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexArrow(1,234);

SetIndexEmptyValue(0,0.0);

SetIndexEmptyValue(1,0.0);

SetIndexLabel(0,"Up");

SetIndexLabel(1,"Dn");

return(0);

}

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

//| DEINIT() |

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

int deinit() {

int k=0;

while (k<ObjectsTotal()) {

string objname = ObjectName(k);

if (StringSubstr(objname,0,StringLen("Emac")) == "Emac")

ObjectDelete(objname);

else

k++;

}

return(0);

}

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

//| START() |

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

int start() {

if (Period() != PERIOD_H1) {

Alert("Use only @ TF: H1");

return(0);

}

int limit,i,k;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---

if (limit>bars_limit-1 && bars_limit!=0) limit=bars_limit-1;

if (Bars<EMA1 || Bars<EMA2 || Bars0 && bars_limit0 && bars_limit0 && bars_limit<EMA3)) {

Alert("Adjust limit settings or put more bars on your chart!");

return(0);

}

//---

for (i=0; i<limit; i++) {

prev2EMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+2);

prev2EMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+2);

prev2EMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+2);

prevEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+1);

prevEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+1);

prevEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+1);

curEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i);

curEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i);

curEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i);

prevOpenPrc = iOpen(NULL,0,i+1);

prevClosePrc = iClose(NULL,0,i+1);

prevLowPrc = iLow(NULL,0,i+1);

prevHighPrc = iHigh(NULL,0,i+1);

rectValidity = rectDays*86400;

if ( (prev2EMA1=prevEMA2)&&(curEMA1>curEMA2)&&(prevEMA2>=prevEMA3)&&(curEMA2>curEMA3) ) { // up

upArrow = prevLowPrc - arrowDistance;

if (showRectangle == true) {

//----------------------- Draw Rectangle ----------------------

objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));

if (ObjectFind(objRectName) == -1) { // not exists

ObjectCreate(objRectName, OBJ_RECTANGLE, 0,Time,prevLowPrc,Time+rectValidity,prevLowPrc+rectHigh);

ObjectSet(objRectName, OBJPROP_COLOR, upRectColor);

ObjectSet(objRectName, OBJPROP_WIDTH, 0);

ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);

//--- put information to Array ---

arrayCurAmount = ArraySize(rectArray);

rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$up$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched

} // if

} // if

} // if

if ( (prev2EMA1>prev2EMA2)&&(prevEMA1<=prevEMA2)&&(curEMA1<curEMA2)&&(prevEMA2<=prevEMA3)&&(curEMA2<curEMA3) ) { // down

dnArrow = prevHighPrc + arrowDistance;

if (showRectangle == true) {

//----------------------- Draw Rectangle ----------------------

objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));

if (ObjectFind(objRectName) == -1) { // not exists

ObjectCreate(objRectName, OBJ_RECTANGLE, 0, Time,prevHighPrc,Time+rectValidity,prevHighPrc-rectHigh);

ObjectSet(objRectName, OBJPROP_COLOR, dnRectColor);

ObjectSet(objRectName, OBJPROP_WIDTH, 0);

ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);

//--- put information to Array ---

arrayCurAmount = ArraySize(rectArray);

rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$dn$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched

} // if

} // if

} // if

} // for

//----------------------- Edit Rectangle, change time2 & color, if price touched ----------------------

return(0);

} // start

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

void DelObjects(string id) {

int ot1=ObjectsTotal();

while(ot1>=0) {

if (StringFind(ObjectName(ot1),id,0)>-1) {

ObjectDelete(ObjectName(ot1));

}

ot1--;

}

return;

}

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

string FuncPeriodToStr(int thePeriod) {

switch(thePeriod) {

case 1: return("M1");

case 5: return("M5");

case 15: return("M15");

case 30: return("M30");

case 60: return("H1");

case 240: return("H4");

case 1440: return("D1");

case 10080: return("W1");

case 43200: return("MN1");

default: return("MN1");

}

}

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

 

İki veya daha fazla EA arasında nasıl iletişim kurulur?

 

NewBie bunu MT4 build 670'e geliştirmeye çalışıyor. Yardım ~

MetaTrader Market'te MetaTrader 5 için 'Üç Hareketli Ortalama' Ticaret Robotunu (Uzman Danışman) indirin?

Bunu seviyorum çünkü KISS'i seviyorum (basit olsun aptal)

Ben bir acemiyim ve bunu geliştirmek istiyorum.

(1. sürüm_01)

Çalıştığında, EA açılır açılmaz konumu hemen yerleştirir.

.ex5'ten .mq4 oluşturmak tersine mühendislik gibidir.

(2. sürüm_02)

Aynı çizelgede, Zig-Zag'dan bulunacak Haftalık Ar-Ge'yi görselleştirin.

(3. sürüm_03)

mantık ekle,

--- trend çizgisinin 20 pips üstüne veya altına girmeyin.

haftalık R & S dışında 20 pipte pozisyonu temizleyin.

Yardımın minnettar olacak ~

şimdiden teşekkürler ~

 

kozmik yaşam formu, o zamandan beri Nice TraderEA'yı geri test ettirememek komik, bu yüzden optimize edemedim, bunu alpari demo ve ista forex'te yaptım, aynı....bana boş sonuç vermeye devam ediyor . Lütfen bana geri test etmek için kullandığınız ipuçlarını söyler misiniz?

cosmiclifeform:
Merhaba Mastercash,

NiceTrader EA'yı Strateji Test Cihazında sorunsuz bir şekilde indirip çalıştırabildim.

Sadece varsayılan ayarları kullandım ve hiçbir şeyi değiştirmedim... ve herhangi bir hata mesajı almadım.

Demomda gerçek zamanlı çalıştırmayı denemedim... ama bu EA, Strateji Test Cihazı ile iyi çalışıyor. Ekteki tabloya bakın...

Sizin için neden işlem yapmadığına dair herhangi bir günlük hatası mesajı veya başka ipuçları alıyor musunuz...?

Bu yardımcı olur umarım,

Robert

 
Mastercash:
kozmik yaşam formu, o zamandan beri Nice TraderEA'yı geri test ettirememek komik, bu yüzden optimize edemedim, bunu alpari demo ve ista forex'te yaptım, aynı....bana boş sonuç vermeye devam ediyor . Lütfen bana geri test etmek için kullandığınız ipuçlarını söyler misiniz?

Merhaba Mastercash,

EA'yı bir FXDD demo hesabında çalıştırdım... ve özel bir şey yapmadım... EA'yı varsayılan ayarlarla Strateji Test Cihazında çalıştırdım.

Keşke daha fazla yardımcı olabilseydim... ancak izlenecek belirli ipuçları (hata günlükleri, ekran görüntüleri ve diğer koşullar) olmadan neden boş sonuçlar aldığınızı bulmak imkansız olacaktır.

Tavsiye edebileceğim tek şey...

İlk önce, iyi çalıştığını bildiğiniz test cihazında iyi bir EA deneyin.

Bu, hem demo hesaplarınızın hem de prosedürlerinizin uygun olduğunu belirleyecektir.

Her şeyin olması gerektiği gibi çalıştığına dair önce kendinize güvenin.

Ardından Nice TraderEA'nızı deneyin... ve tam olarak ne olduğunu yazın. Boş bir ekran bile kontrol edilecek günlüklere sahip olmalıdır.

Her yere PRINT ve COMMENT deyimleri eklemeyi deneyin... ardından günlüklerinizi tekrar kontrol edin...hem EA sekmesi hem de Günlük sekmesi...

Ayrıca YORUM'larınız ekranda görünecek... yani gerçekten EA'nızın çalışıp çalışmadığını görmelisiniz.

İyi kodlama yardımı almanın en alt satırı...

EA'nızda neler olduğuna dair bulabileceğiniz en fazla ipucunu sağlamaktır...

Mümkün olan her şeyi denemeye devam edin... ve sonuçları bize bildirin.

Dikkatli ol,

Robert

 
apprentice coder:
İki veya daha fazla EA arasında nasıl iletişim kurulur?

Eğer bunun için ayrılmış bir fonksiyon veya fonksiyon seti varsa, o zaman cevap şudur, böyle bir şey yoktur.

Epeyce denemeler gördüm ve şimdiye kadar bu yolların hiçbirinin tüm durumlarda işe yaradığını görmedim. Biri hariç. Ama bir tanesi benim tarafımdan icat edildi ve fikir o kadar basit ki hala kimsenin düşünmediğine inanamıyorum (hatta aynı yerde olmayan ve bunun için herhangi bir API kullanmayan EA'ların iletişimini sağlıyor) o zaman Bu çözümü benim için saklıyorum (bu durumda birinin aynı şeyi düşünüp düşünmediğini görmek için bekliyorum)

Sadece beklenen sınırların dışında düşünmeye çalışın

 
mladen:
Eğer bunun için ayrılmış bir fonksiyon veya fonksiyon seti varsa, o zaman cevap şudur, böyle bir şey yoktur.

Epeyce denemeler gördüm ve şimdiye kadar bu yolların hiçbirinin tüm durumlarda işe yaradığını görmedim. Biri hariç. Ama bir tanesi benim tarafımdan icat edildi ve fikir o kadar basit ki hala kimsenin düşünmediğine inanamıyorum (hatta aynı yerde olmayan ve bunun için herhangi bir API kullanmayan EA'ların iletişimini sağlıyor) o zaman Bu çözümü benim için saklıyorum (bu durumda birinin aynı şeyi düşünüp düşünmediğini görmek için bekliyorum)

Sadece beklenen sınırların dışında düşünmeye çalışın

Ne demek istediğinizi biliyorum: fikirler bazen ondan sonra nasıl yapıldıklarından çok daha değerlidir. teşekkürler

 

merhaba,

sevgili mladen , senden küçük bir ricam var - sol üst köşedeki aşağıdaki göstergenin gösterdiği tüm bilgileri kapatır mısın?

şimdiden teşekkürler ;-)

Dosyalar: