Nasıl kodlanır? - sayfa 291

 

son mum detayı

Merhaba,

son mumun yüksek, düşük, açılış ve kapanış değerini göstermek için bir göstergeye ihtiyacınız var...

 
mladen:
O zaman neden takip eden bir durdurma kullanmıyorsunuz? Demek istediğim, orijinal fikrinizin neredeyse% 100'ünü (neredeyse) yapardı ve kodlaması çok, çok daha kolay

Mesele şu ki (doğru ifade ettiğimi veya %100 doğru olmadığımı düşünüyorum) stoplar (şimdilik zaten) tüm işlem boyunca aynı kalacak. Bunun gibi bir yaklaşıma ne dersiniz, iki işlem açıkken, bir kod açık emirlerin sayısını kontrol edebilir, eğer 1'in üzerindeyse (temelde 2), o zaman her iki işlemin de kârları , öncekinden daha yüksek olan belirli bir miktara değiştirilir. Esasen burada bir tür riskten korunma işlemi yapılıyor.

Teşekkürler,

madmax3

 

[langtitle=pl]Proszę veya pomoc w napisaniu EA działającego n[/langtitle]

[lang=pl]Witam czy bugł tarafından ktoś mi to dopracować był rym wdzięczny : Chciałbym rzeby kupywał LevelRSIbuy=20; bir sprzeawał jak dojdzie LevelRSIsell=80; MagicNumber'ın mahremiyetini biliyorum.

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESEL 4

#property telif hakkı "Uzman Danışman Oluşturucu"

#özellik bağlantısı "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

harici int SihirliSayı = 0;

harici bool SignalMail = Yanlış;

extern bool EachTickMode = True;

harici çift Lot = 0.1;

extern int Kayma = 1;

extern bool UseStopLoss = True;

harici int StopLoss = 10;

extern bool UseTakeProfit = True;

harici int TakeProfit = 5;

extern bool UseTrailingStop = False;

extern int TrailingStop = 30;

harici int LevelRSIbuy=20;

harici int LevelRSISell=80;

int BarCount;

int Akım;

bool TickCheck = Yanlış;

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

//| uzman başlatma işlevi |

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

int init() {

BarCount = Barlar;

if (EachTickMode) Akım = 0; başka Akım = 1;

dönüş(0);

}

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

//| uzman sıfırlama işlevi |

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

int tanım() {

dönüş(0);

}

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

//| uzman başlatma işlevi |

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

int start() {

int Sıra = SIGNAL_NONE;

int Toplam, Bilet;

çift StopLossLevel, TakeProfitLevel;

if (EachTickMode && Çubuklar != BarCount) TickCheck = False;

Toplam = SiparişlerToplam();

Sıra = SIGNAL_NONE;

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

//| Değişken Başlangıç |

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

double Var1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Cari + 0);

double Buy1_1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Cari + 0);

double Sell1_1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Cari + 0);

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

//| Değişken Son |

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

//Konumu kontrol et

bool IsTrade = Yanlış;

for (int i = 0; i < Toplam; ben ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = Doğru;

if(OrderType() == OP_BUY) {

//Kapat

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

//| Sinyal Başla(Çıkış Satın Al) |

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

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

//| Sinyal Sonu(Çıkış Satın Al) |

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

if (Sipariş == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

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

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Teklif, Rakamlar) + " Satın Alma Kapat");

if (!EachTickMode) BarCount = Çubuklar;

IsTrade = Yanlış;

devam etmek;

}

//Sondaki durdurma

if(UseTrailingStop && TrailingStop > 0) {

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

if(OrderStopLoss() < Teklif - Nokta * TrailingStop) {

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

if (!EachTickMode) BarCount = Çubuklar;

devam etmek;

}

}

}

} başka {

//Kapat

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

//| Sinyal Başla(Çıkış Sat) |

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

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

//| Sinyal Sonu (Çıkış Sat) |

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

if (Sipariş == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

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

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Kapat Satış");

if (!EachTickMode) BarCount = Çubuklar;

IsTrade = Yanlış;

devam etmek;

}

//Sondaki durdurma

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Sor) > (Nokta * TrailingStop)) {

if((OrderStopLoss() > (Sor + Nokta * TrailingStop)) || (OrderStopLoss() == 0)) {

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

if (!EachTickMode) BarCount = Çubuklar;

devam etmek;

}

}

}

}

}

}

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

//| Sinyal Başlıyor(Giriş) |

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

if (Yanlış) Sıra = SIGNAL_BUY;

if (Yanlış) Sıra = SIGNAL_SELL;

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

//| Sinyal Sonu |

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

//Satın almak

if (Sipariş == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

if(!IsTrade) {

// Serbest marjı kontrol et

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

Print("Paramız yok. Serbest Marj = ", AccountFreeMargin());

dönüş(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Puan; başka StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Sor + TakeProfit * Puan; başka TakeProfitLevel = 0.0;

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

if(Bilet > 0) {

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

Print("Satın alma emri açıldı : ", OrderOpenPrice());

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Satın Alımı Aç");

} başka {

Print("SATIN AL emri açılırken hata oluştu : ", GetLastError());

}

}

if (EachTickMode) TickCheck = Doğru;

if (!EachTickMode) BarCount = Çubuklar;

dönüş(0);

}

}

//Satmak

if (Sipariş == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {

if(!IsTrade) {

// Serbest marjı kontrol et

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

Print("Paramız yok. Serbest Marj = ", AccountFreeMargin());

dönüş(0);

}

if (UseStopLoss) StopLossLevel = Teklif + StopLoss * Puan; başka StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Teklif - TakeProfit * Puan; başka TakeProfitLevel = 0.0;

Bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sat(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Bilet > 0) {

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

Print(" SAT emri açıldı : ", OrderOpenPrice());

if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Teklif, Rakamlar) + " Açık Satış");

} başka {

Print("SATIŞ emrini açarken hata: ", GetLastError());

}

}

if (EachTickMode) TickCheck = Doğru;

if (!EachTickMode) BarCount = Çubuklar;

dönüş(0);

}

}

if (!EachTickMode) BarCount = Çubuklar;

dönüş(0);

}

//+------------------------------------------- -------------------+[/lang]

 

Açık işlemlerin karını artırmak için bu kodu kullanmaya çalışıyorum (eğer iki açık işlem ise).

if(total>2)

if(OrderType()==OP_BUY)

OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+((TakeProfit+20)*Point),0,Blue);

if(OrderType()==OP_SELL)

OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+((TakeProfit+20)*Point),0,Blue);

toplam=SiparişToplam(); btw.

Yine de çalıştıramıyorum, herhangi bir öneriniz var mı?

Teşekkürler,

madmax3

 

Günlük İşlem Sayısını 1 ile Sınırlandırmaya Yardımcı Olun

Programlamada yeniyim ve MQL4'te yardıma ihtiyacım var. Bazı kodlayıcı kılavuzlarını inceledim ve alım satım stratejime göre alım satımların nasıl açılıp kapatılacağını anladım. Benim zorluğum günlük işlem sayısını 1 ile sınırlamak. Günde 1'den fazla işlem açmak istemiyorum (sunucu saatine göre). Bu yüzden bugün bir siparişin açılıp açılmadığını görmek için açık ve kapalı siparişleri kontrol etmek istiyorum. Bugün bir sipariş açıldıysa, o gün için ek sipariş açmayın.

Lütfen yardım et.

 
Bunun gibi bir şey deneyin:
bool uniqueOnDay()

{

datetime startTime = iTime(NULL,PERIOD_D1,Time[0]);

datetime endTime = startTime+24*60*PERIOD_D1;

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != MagicNumber) continue;

if (OrderOpenTime()endTime) continue;

return(false);

}

return(true);

}
Mevcut sembol için kapatılan emirlerden herhangi birinin cari günde açılıp açılmadığını kontrol eder. Eğer o gün açılmış bir emir varsa false (o gün açılmış bir emir var) yoksa true (o gün açılmış emir yok) döner. Şu anda açılmış siparişleri (sadece geçmişi) kontrol etmiyor çünkü 1'den fazla açılmış sipariş istemediğinizi ve bunun farklı şekilde kontrol edildiğini varsayıyorum. Kullanım şöyle bir şey olurdu:

if (UniqueOnDay() && CurrentOpenedOrders==0) ...

Not: EA'nızın bir MagicNumber parametresine (tam ad) sahip olduğunu varsayar

PPS: güne kadar olan zaman dilimlerinde çalışacaktır. Haftalık ve aylık grafiklerde düzgün çalışmayacak

dresolo1:
Programlamada yeniyim ve MQL4'te yardıma ihtiyacım var. Bazı kodlayıcı kılavuzlarını inceledim ve alım satım stratejime göre alım satımların nasıl açılıp kapatılacağını anladım. Benim zorluğum günlük işlem sayısını 1 ile sınırlamak. Günde 1'den fazla işlem açmak istemiyorum (sunucu saatine göre). Bu yüzden bugün bir siparişin açılıp açılmadığını görmek için açık ve kapalı siparişleri kontrol etmek istiyorum. Bugün bir sipariş açıldıysa, o gün için ek sipariş açmayın. Lütfen yardım et.
 

[ langtitle =pl]Temayı Tema'ya Dönüştür(kapat,nokta)[/langtitle]

Witam

Jeszcze raz bo cos sie zle wkleilo. Jak przekazac wartosc funkcji Tema Var1 yapın. Jak robie tak jak w kodzie ponizej için Var1 jest pute.

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DarkBlue

#property indicator_width1 2

//---- input parameters

extern int EMA_period=4;

//---- buffers

string txt;

double TemaBuffer[];

double Ema[];

double EmaOfEma[];

double EmaOfEmaOfEma[];

double Var1;

int Var2;

int i,limit,limit2,limit3;

extern int Apply_To_Price=1;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,Var1);

SetIndexBuffer(1,TemaBuffer);

SetIndexBuffer(2,Ema);

SetIndexBuffer(3,EmaOfEma);

SetIndexBuffer(4,EmaOfEmaOfEma);

IndicatorShortName("TEMA("+EMA_period+")");

switch(Apply_To_Price)

{

case 1:

{txt="Open";break;}

case 2:

{txt="High";break;}

case 3:

{txt="Low"; break;}

case 4:

{txt="Median"; break;}

case 5:

{txt="Typical"; break;}

case 6:

{txt="WghtdClose"; break;}

default:

{txt="Close";}

}

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

//----

int counted_bars=IndicatorCounted();

if (counted_bars==0)

{

limit=Bars-1;

limit2=limit-EMA_period;

limit3=limit2-EMA_period;

}

if (counted_bars>0)

{

limit=Bars-counted_bars-1;

limit2=limit;

limit3=limit2;

}

for (i=limit3;i>=0;i--)

{

Var1 = Tema(Apply_To_Price,4); //=======================TUTAJ JEST PROBLEM W VAR1 NIC NIE MA. DLACZEGO?

// Alert(Var1);

}

Var2 = dodawanie (2,3);

return(0);

}

double Tema(int Cena, int cykl)

{

//----

for (i=limit;i>=0;i--) Ema=iMA(NULL,0,cykl,0,MODE_EMA,Cena,i);

for (i=limit2;i>=0;i--) EmaOfEma=iMAOnArray(Ema,0,cykl,0,MODE_EMA,i);

for (i=limit3;i>=0;i--) EmaOfEmaOfEma=iMAOnArray(EmaOfEma,0,cykl,0,MODE_EMA,i);

for (i=limit3;i>=0;i--)

{

TemaBuffer=3*Ema-3*EmaOfEma+EmaOfEmaOfEma;

//Alert(TemaBuffer);

}

return(TemaBuffer);

}

int dodawanie (int a, int b)

{

int c;

c=a+b;

return(c);

}

 

Bunun gibi (TEMA)...

İşlev gibi istiyorsanız, bunun gibi bir şey olması gerekir:
double workTema[][3];

#define _ema1 0

#define _ema2 1

#define _ema3 2

double iTema(double price, double period, int r, int instanceNo=0)

{

if (ArrayRange(workTema,0)!= Bars) ArrayResize(workTema,Bars); instanceNo*=3; r = Bars-r-1;

//

//

//

//

//

double alpha = 2.0 / (1.0+period);

workTema[r][_ema1+instanceNo] = workTema[r-1][_ema1+instanceNo]+alpha*(price -workTema[r-1][_ema1+instanceNo]);

workTema[r][_ema2+instanceNo] = workTema[r-1][_ema2+instanceNo]+alpha*(workTema[r][_ema1+instanceNo]-workTema[r-1][_ema2+instanceNo]);

workTema[r][_ema3+instanceNo] = workTema[r-1][_ema3+instanceNo]+alpha*(workTema[r][_ema2+instanceNo]-workTema[r-1][_ema3+instanceNo]);

return(workTema[r][_ema3+instanceNo]+3.0*(workTema[r][_ema1+instanceNo]-workTema[r][_ema2+instanceNo]));

}[/PHP]

Örnek bir gösterge de eklemek. Fiyat türü yerine bir değer iletmenin avantajı, bu şekilde temayı herhangi bir değere uygulayabilmenizdir (bir fiyatın teması olmak zorunda değildir, örneğin başka bir göstergenin teması olabilir)

lukibest:
Witam

Jeszcze raz bo cos sie zle wkleilo. Jak przekazac wartosc funkcji Tema Var1 yapın. Jak robie tak jak w kodzie ponizej için Var1 jest pute.

[PHP]

#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 1

#özellik göstergesi_renk1 KoyuMavi

#özellik göstergesi_width1 2

//---- giriş parametreleri

harici int EMA_period=4;

//---- arabellekler

dize txt'si;

çift TemaBuffer[];

çift Ema[];

çift EmaOfEma[];

double EmaOfEmaOfEma[];

çift Var1;

int Var2;

int i,limit,limit2,limit3;

harici int Apply_To_Price=1;

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

//| Özel gösterge başlatma işlevi |

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

int init()

{

//---- göstergeler

GöstergeTamponları(5);

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,Var1);

SetIndexBuffer(1,TemaBuffer);

SetIndexBuffer(2,Ema);

SetIndexBuffer(3,EmaOfEma);

SetIndexBuffer(4,EmaOfEmaOfEma);

GöstergeShortName("TEMA("+EMA_period+")");

geçiş(Apply_To_Price)

{

dava 1:

{txt="Aç";kır;}

durum 2:

{txt="Yüksek";kırılma;}

durum 3:

{txt="Düşük"; kırmak;}

durum 4:

{txt="Medyan"; kırmak;}

durum 5:

{txt="Tipik"; kırmak;}

durum 6:

{txt="WghtdKapat"; kırmak;}

varsayılan:

{txt="Kapat";}

}

//----

dönüş(0);

}

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

//| Özel gösterge sıfırlama işlevi |

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

int tanım()

{

//----

//----

dönüş(0);

}

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

//| Özel gösterge yineleme işlevi |

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

int başlangıç()

{

//----

int counted_bars=IndicatorCounted();

if (counted_bars==0)

{

limit=Bar-1;

limit2=limit-EMA_period;

limit3=limit2-EMA_period;

}

if (counted_bars>0)

{

limit=Barlar-sayılan_barlar-1;

limit2=limit;

limit3=limit2;

}

(i=limit3;i>=0;i--) için

{

Var1 = Tema(Apply_To_Fiyat,4); //=======================TUTAJ JEST PROBLEM W VAR1 NIC NIE MA. DLACZEGO?

// Uyarı(Var1);

}

Var2 = dodawanie (2,3);

dönüş(0);

}

çift Tema(int Cena, int cykl)

{

//----

(i=limit;i>=0;i--) için Ema=iMA(NULL,0,cykl,0,MODE_EMA,Cena,i);

for (i=limit2;i>=0;i--) EmaOfEma=iMAOnArray(Ema,0,cykl,0,MODE_EMA,i);

for (i=limit3;i>=0;i--) EmaOfEmaOfEma=iMAOnArray(EmaOfEma,0,cykl,0,MODE_EMA,i);

(i=limit3;i>=0;i--) için

{

TemaBuffer=3*Ema-3*EmaOfEma+EmaOfEmaOfEma;

//Uyarı(TemaBuffer);

}

dönüş(TemaBuffer);

}

int dodawanie (int a, int b)

{

int c;

c=a+b;

dönüş(c);

}

Dosyalar:
tema.mq4  3 kb
 

HAMMER koduyla ilgili yardım lütfen

Merhaba,

mql4'te yeni başlıyorum. Aşağıdaki göstergeye sahip şamdanlarda siyah beyaz çekiçler seçmeye çalışmak. Ancak, grafikte bazen şamdanlar yanlış tanımlama metni alır (beyaz çekiç mum, siyah çekiç mum olarak tanımlanır ve bunun tersi de geçerlidir). Lütfen bu durumda bana yardım edin, şimdiden teşekkürler.

#özellik göstergesi_chart_window

int limiti;

//---- arabellekler

sicim çekici[20000];

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

//| CuStom göstergesi başlatma işlevi |

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

int init()

{

dönüş(0);

}

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

//| CuStor göstergesi sıfırlama işlevi |

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

int tanım()

{

//----

ObjectsDeleteAll(çekiç,OBJ_TEXT);

//----

dönüş(0);

}

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

//| CuStom göstergesi yineleme işlevi |

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

int başlangıç()

{

int N;

int N1;

int N2;

dize metni;

int counted_bars=IndicatorCounted();

limit=Barlar-sayılan_barlar;

for(N = 1; N < limit; N++) {

çekiç[N]= CharToStr(N);

N1 = N+1;

N2 = N + 2;

//----

//---- olası hataları kontrol et

if(counted_bars<0) {

Alert("Çubuk YOK..");

dönüş(-1);

}

// Hammer White'ı kontrol et

if (((Kapat[N1]>Aç[N1]) && ((Aç[N1]-Düşük[N1])>=2*(Kapat[N1]-Aç[N1])) && ((Yüksek[N1]) -Kapat[N1])<=(Açık[N1]-Düşük[N1])*0.10))) {

ObjectCreate(çekiç[N], OBJ_TEXT, 0, Zaman[N1], Düşük[N1] - Nokta);

ObjectSetText(çekiç[N], "WHmr", 9, "Times New Roman", LawnGreen);

}

// Hammer Black'i kontrol et

if (((Kapat[N1]=2*(Aç[N1]-Kapat[N1])) && ((Yüksek[N1]-Aç[N1])<=(Kapat[N1]-Düşük[N1])* 0.10))) {

ObjectCreate(çekiç[N], OBJ_TEXT, 0, Zaman[N1], Düşük[N1] - Nokta);

ObjectSetText(çekiç[N], "BHmr", 9, "Times New Roman", LawnGreen);

}

//----

} // for döngüsünün sonu

dönüş(0);

}

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

 
svezir:
Merhaba,

mql4'te yeni başlıyorum. Aşağıdaki gösterge ile şamdanlarda siyah beyaz çekiçler seçmeye çalışmak. Ancak, grafikte bazen şamdanlar yanlış tanımlama metni alır (beyaz çekiç mum, siyah çekiç mum olarak tanımlanır ve bunun tersi de geçerlidir). Lütfen bu durumda bana yardım edin, şimdiden teşekkürler.

#özellik göstergesi_chart_window

int limiti;

//---- arabellekler

dize çekici[20000];

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

//| CuStom göstergesi başlatma işlevi |

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

int init()

{

dönüş(0);

}

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

//| CuStor göstergesi sıfırlama işlevi |

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

int tanım()

{

//----

ObjectsDeleteAll(çekiç,OBJ_TEXT);

//----

dönüş(0);

}

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

//| CuStom göstergesi yineleme işlevi |

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

int başlangıç()

{

int N;

int N1;

int N2;

dize metni;

int counted_bars=IndicatorCounted();

limit=Barlar-sayılan_barlar;

for(N = 1; N < limit; N++) {

çekiç[N]= CharToStr(N);

N1 = N+1;

N2 = N + 2;

//----

//---- olası hataları kontrol et

if(counted_bars<0) {

Alert("Çubuk YOK..");

dönüş(-1);

}

// Hammer White'ı kontrol et

if (((Kapat[N1]>Aç[N1]) && ((Aç[N1]-Düşük[N1])>=2*(Kapat[N1]-Aç[N1])) && ((Yüksek[N1]) -Kapat[N1])<=(Açık[N1]-Düşük[N1])*0.10))) {

ObjectCreate(çekiç[N], OBJ_TEXT, 0, Zaman[N1], Düşük[N1] - Nokta);

ObjectSetText(çekiç[N], "WHmr", 9, "Times New Roman", LawnGreen);

}

// Hammer Black'i kontrol et

if (((Kapat[N1]=2*(Aç[N1]-Kapat[N1])) && ((Yüksek[N1]-Aç[N1])<=(Kapat[N1]-Düşük[N1])* 0.10))) {

ObjectCreate(çekiç[N], OBJ_TEXT, 0, Zaman[N1], Düşük[N1] - Nokta);

ObjectSetText(çekiç[N], "BHmr", 9, "Times New Roman", LawnGreen);

}

//----

} // for döngüsünün sonu

dönüş(0);

}

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

Merhaba Svezir,

Mum kalıpları için bu göstergeye sahip olun belki yardımcı olur.

Neden: