Nasıl kodlanır? - sayfa 18

 

Michel,

Zaman ayırıp koda bakıp yanıt verdiğiniz için çok teşekkür ederiz. Bazen tek gereken bir çift göz daha! Hatanın eksik bir çubukla 0'a bölünmesi olduğu konusunda haklıydınız. Şimdi hepsi halledildi.

SB

 

Kod açıklaması - Ind-Fractals-1

Bu ( https://c.mql5.com/forextsd/forum/165/ind-fractals-1.mq4 ) göstergede fraktalların nasıl belirlendiğini biri açıklayabilir mi? Normal fraktallar gibi, dönüm noktası ile çizilen gerçek fraktal arasında bir gecikme olduğunu fark ettim, ancak bu gecikmenin ne kadar sürdüğünü bilmek istiyorum. Nokta kurulduktan sonra 40-50 1dk barlar 15dk bir fraktal çizildiğini düşünüyorum. Ayrıca, bazı 15 dakikalık fraktallar 1 saatlik fraktallar haline geldikçe fraktalların renginin değiştiğini (konumları değişmese de) fark ettim.

 

aşağıdakiler nasıl kodlanır?

Herkese selam,

Metatrader 4'te yeniyim. mt4'te kodlama hakkında pek bir şey bilmiyorum.

metatrader'ın ne zaman uyarı vermesini istiyorum

1. 30 dönemlik basit hareketli ortalama , 60 dönemlik basit hareketli ortalamanın üzerine çıkar.

2. 30 dönemlik basit hareketli ortalama, 60 dönemlik basit hareketli ortalamanın altına düşer.

Kodu buraya yazmama yardımcı olabilecek var mı??

çok teşekkürler

 
adamk203:
Herkese selam,

Metatrader 4'te yeniyim. mt4'te kodlama hakkında pek bir şey bilmiyorum.

metatrader'ın ne zaman uyarı vermesini istiyorum

1. 30 dönemlik basit hareketli ortalama, 60 dönemlik basit hareketli ortalamanın üzerine çıkar.

2. 30 dönemlik basit hareketli ortalama, 60 dönemlik basit hareketli ortalamanın altına düşer.

Kodu buraya yazmama yardımcı olabilecek var mı??

çok teşekkürler

Neden bunu kullanmıyorsun? MA'nızı girin ve basit için 0'ı seçin, size çizgiler ve oklar verir

Dosyalar:
 

çok teşekkürler~~

 
increase:
Neden bunu kullanmıyorsun? MA'nızı girin ve basit için 0'ı seçin, size çizgiler ve oklar verir

Merhaba, önceden cross over.thx'ten sonra 2 temiz mum bittiğinde sinyalin gelmesini istiyorum

Dosyalar:
gbp_4h.gif  19 kb
 

lütfen kodumu düzeltmeye yardım edin

Her şeyden önce, bu kodun çok kullanışlı olduğuna inanıyorum, birçok kişi buna bayılacak. Bu yüzden lütfen geliştirmeme yardım edin.

Aslında, bu kod zaten harika çalışıyor. Ancak, NO Sembolünün gösterildiği basit Uyarı açılır penceresinden bıktım. Bu yüzden denemek için bazı satırları değiştirdim/ekledim, bu %%%%%%%% kısmı.

Neden bilmiyorum, yazdır, yorum yap... her neyse, hiçbir şey olmuyor.

Ve garip bir şekilde, "----alert----" bölümünde görebilirsiniz, UPBREAK uyarısını başka bir şeye değiştirdim, ancak yine de "UP BREAK" gösteriyor. ---- Eminim kodu her yeniden yazdığımda, derler, çizelgeden siler ve tekrar yüklerim.

Herhangi bir fikir?

#property indicator_chart_window

#import "usr32.dll" // %%%%%%%%%%

int MessageBoxA(int hWnd,string lpText,string lpCaption,int uType); //%%%%%%%%%%

#import //%%%%%%%%%%

int PrevAlertTime = 0;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

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

int start()

{

int i=ObjectsTotal();

int redtotal=0,j,typ1;

double price1,price2,up,down;

color col;

string name1,name2,nameup,namedown,warn1,sym=Symbol();

warn1=sym + "Break Up"; //%%%%%%%%%%

Print(sym); //%%%%%%%%%%%

//----make sure exactly 2 red lines on chart---------------------

for (j=0; j<i; j++)

if(ObjectGet(ObjectName(j),OBJPROP_COLOR)==255 && ObjectType(ObjectName(j))==OBJ_TREND)

{ redtotal++;

if (redtotal==1) name1=ObjectName(j);

if (redtotal==2) name2=ObjectName(j);

}

if (redtotal==2)

{

if(ObjectFind("remind")==0) ObjectDelete("remind");

}

else

{

ObjectCreate("remind",OBJ_LABEL,0,0,0);

ObjectSet("remind", OBJPROP_XDISTANCE,0);

ObjectSet("remind", OBJPROP_YDISTANCE,20);

ObjectSetText("remind", "Keep exactly 2 red lines on chart" ,16,"Times New Roman",Blue);

return(0); // question here: what should I use, 0 or -1 ?

}

//--------decide which line is up / down ---------------------

price1=NormalizeDouble(ObjectGetValueByShift(name1,1),

MarketInfo(Symbol(),MODE_DIGITS));

price2=NormalizeDouble(ObjectGetValueByShift(name2,1),

MarketInfo(Symbol(),MODE_DIGITS));

if (price2>=price1)

{

nameup=name2; namedown=name1;

up=price2; down=price1;

}

else

{ nameup=name1; namedown=name2;

up=price1; down=price2;

}

//-------- alert ----------------------------------------------

if (TimeCurrent() - PrevAlertTime > Period()*60/3)

{

if (Close[1]up)

{ MessageBoxA(NULL,"tupole","11111",0); // %%%%%%%%%%

Print(Symbol()); // %%%%%%%%%%

PrevAlertTime = TimeCurrent();

}

if (Close[1]>=down && Close[0]<down)

{ Alert("DOWN BREAK",Symbol());

PrevAlertTime = TimeCurrent();

}

}

return(0);

}

 

Neyin yanlış olduğunu buldum:

Genellikle, bir kod oluşturur veya düzenlerim: "Metaeditor---file---new/open..."

Ama sadece şunu öğrendim: grafiğe ekledikten ve sonra bu koddaki bazı değişikliklerden sonra, nihayet daha fazla değişiklik grafiği artık etkilemiyor (kesinlikle derledim!) ----- ama "Metaeditor--navigator--files-- -benim kodum..." yap ! Bu garip, aynı kod olmalılar!

 

iz kodu ile yardım

void TrailIt( int byPips ) // based on trailing stop code from MT site... thanks MT!

{

if (byPips >=5)

{

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

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...

{

if (OrderType() == OP_BUY) {

//if (Bid > (OrderValue(cnt,VAL_OPENPRICE) + TrailingStop * Point)) {

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

// break;

//}

if (Bid - OrderOpenPrice() > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {

if (OrderStopLoss() < Bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);

}

}

} else if (OrderType() == OP_SELL) {

if (OrderOpenPrice() - Ask > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {

if ((OrderStopLoss() > Ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT)) ||

(OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(),

Ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);

}

}

}

}

}

}

} // proc TrailIt()

Kod budur. Ekte bir siparişte görüldüğü gibi, durağı değiştirecek ama aynı zamanda yanlış yönde değiştirecek ve düzeltemiyorum. Çözümü bulmadaki yardımı gerçekten takdir ediyorum!

Dosyalar:
ordermodify.txt  40 kb
 

Bunu dene. Görünüşe göre siparişleri farklı sembollerle değiştirmeye çalışıyorsunuz. Bu durumda, Teklif ve Talep yalnızca EA'nın eklendiği Grafik penceresinin sembolünden piyasa verilerini çekecektir. Uygun verileri almanın yolu MarketData(symbol, MODE_BID) kullanmaktır.

void TrailIt( int byPips ) // based on trailing stop code from MT site... thanks MT!

{

if (byPips >=5)

{

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

double bid=MarketInfo(OrderSymbol(),MODE_BID);

double ask=MarketInfo(OrderSymbol(),MODE_ASK);

if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...

{

if (OrderType() == OP_BUY)

{

if (bid - OrderOpenPrice() >= byPips * MarketInfo(OrderSymbol(), MODE_POINT))

{

if (OrderStopLoss() < bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT)|| (OrderStopLoss() == 0))

{

OrderModify(OrderTicket(), OrderOpenPrice(), bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);

}

}

}

else if (OrderType() == OP_SELL)

{

if (OrderOpenPrice() - ask >= byPips * MarketInfo(OrderSymbol(), MODE_POINT))

{

if ((OrderStopLoss() > ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT)) || (OrderStopLoss() == 0))

{

OrderModify(OrderTicket(), OrderOpenPrice(),ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);

}

}

}

}

}

}

return;

}