ICözel işlev - sayfa 7

 

Bu Advanced ADX göstergesini kullanarak bir EA yazısı yazmak istiyorum... Göstergeden değeri ve rengi nasıl çıkarabilirim...

Satın almak

ADX rengi yeşil ve (bu saat ADX> önceki saat ADX)

Satmak

ADX rengi kırmızı ve (bu saatteki ADX< önceki saatteki ADX)

Kendi başıma kodlamada abit denedim. Benim kuralıma göre kodlama doğru mu? Bana burada yardım et?

Teşekkür

sonik

for (i = Bars - 205; i >= 0; i --)

{

double adx1 =iCustom(NULL, 0, "Advanced_ADX",13,0,i);

double adx2 =iCustom(NULL, 0, "Advanced_ADX",13,1,i);

if ((adx1>adx2)&&(adx1 > adx1) // BUY

{ BUY routine}

if ((adx1<adx2)&&(adx1 < adx1) // SELL

{ SELL routine}

}
Dosyalar:
 

ICözel Gösterge EA

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

//| This MQL is generated by Expert Advisor Builder |

//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |

//| |

//| In no event will author be liable for any damages whatsoever. |

//| |

//| |

//+------------------- DO NOT REMOVE THIS HEADER --------------------+

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

#property copyright "Expert Advisor Builder"

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = True;

extern double Lots = 0.2;

extern int Slippage = 3;

extern bool UseStopLoss = True;

extern int StopLoss = 27;

extern bool UseTakeProfit = True;

extern int TakeProfit = 34;

extern bool UseTrailingStop = False;

extern int TrailingStop = 30;

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

double Buy1_1 = iOBV(NULL, 0, PRICE_LOW, Current + 0);

double Buy1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0);

double Sell1_1 = iOBV(NULL, 0, PRICE_HIGH, Current + 0);

double Sell1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0);

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

//| Variable End |

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

//Check position

bool IsTrade = False;

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

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

if (Buy1_1 != Buy1_2) Order = SIGNAL_BUY;

if (Sell1_1 != Sell1_2) Order = SIGNAL_SELL;

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

//| Signal End |

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

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//Sell

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("SELL order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Error opening SELL order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

merhaba

bu benim startegy'm

double Buy1_1 = iOBV(NULL, 0, PRICE_LOW, Mevcut + 0);

double Buy1_2 = iCustom(NULL, 0, "sentetik_", 22, 0, Geçerli + 0);

double Sell1_1 = iOBV(NULL, 0, PRICE_HIGH, Mevcut + 0);

double Sell1_2 = iCustom(NULL, 0, "sentetik_", 22, 0, Geçerli + 0);

özel göstergem obv çizgisini geçtiğinde piyasayı satmayı veya satın almayı istiyorum

ancak

çalışmıyor

kodda yanlış olan ne?_

 

2 renkli hint

Herkese selam,

Alttaki indi (Complex_Pairs1) yalnızca bir renge sahiptir. Birisi bana yardım edebilir ve bunun yerine 2 renge değiştirebilir mi? Yukarı çıkmak için mavi, aşağı inmek için Kırmızı. Tıpkı grafikteki indi gibi (Execute Line).

Kodu kendim değiştirmek için çok uğraştım ama başarılı olamadım.

Derlemeden sonra hiçbir hata olmadı, ancak indi'yi açmaya çalıştığımda hiçbir şey olmuyor.

Bu muhtemelen siz yetenekli kodlayıcılar için çocuk oyuncağıdır ve umarım bundan bir şeyler öğrenebilirim.

Teşekkür ederim!

Klondyke

Dosyalar:
 

Bir belge veya forum dizisi mi arıyorsunuz?

Merhaba, google'da bir uzmana özel bir göstergenin nasıl çizileceğine dair bir kullanıcı kılavuzu veya forum başlığı aramaya çalıştım. Aslında iCustom işlevinin nasıl daha iyi kullanılacağı hakkında bir bilgi ve birkaç örnek istiyorum .... Şimdiden teşekkürler!

 

Konunuzu iCustom fonksiyon başlığına taşıdım.

Umarım her şeyi bulursun.

Ayrıca bu gönderiye bakın https://www.mql5.com/en/forum

 

Konuyu anladım teşekkürler millet!

 

mQL ea'ya nasıl ekleneceğini bilen var mı?

icustom işlevini kullanan zig zag göstergesi.

denedim

double x = iCustom(NULL,PERIOD_M5,"ZigZag",3,0,0);

ancak yazdırma işlevimde çeşitli sayılar alıyorum.

Ayrıca çeşitli numaralar denedim.

herhangi bir yardım takdir edilmektedir.

Dosyalar:
zigzag.mq4  7 kb
 
ajk:
mQL ea'ya nasıl ekleneceğini bilen var mı?

icustom işlevini kullanan zig zag göstergesi.

denedim

double x = iCustom(NULL,PERIOD_M5,"ZigZag",3,0,0);

ancak yazdırma işlevimde çeşitli sayılar alıyorum.

Ayrıca çeşitli numaralar denedim.

herhangi bir yardım takdir edilmektedir.

Bir yol: iCustom(NULL,0,"ZigZag",derinlik,sapma,backstep,0,1)

 

zikzaklı

hey ajk....... zikzak, çoğu göstergeden farklıdır, çünkü zamanın büyük bir yüzdesi için değeri 0'dır, yalnızca ara sıra sıfır olmayan bir sayı ile..... bu, onu standart iCustom biçiminde neredeyse kullanılamaz hale getirir .....

// ---> zig = iCustom(NULL,0,"ZigZag",15,5,3, 0, i);

yararlı olması için neredeyse kesinlikle tüm "sıfır olmayan" sayıları depolamak için bir dizi oluşturmanız gerekecek..... örneğin;

if(zig>0)

{

zag[n] = zig;

}

o zaman genel olanı yapabilirsin

if(zag[1] > zag[2]) // bunu yap

başka // veya

if(zag[1] < zag[2]) // bunu yap

//------------

biraz daha fazlası var, ama temel fikir bu.....h

 

yardıma ihtiyacım var

merhaba..

Univeral MA Cross EA'yı buldum..

güzel bir EA..

Dosyalar:
Neden: