Nasıl kodlanır? - sayfa 233

 
CoeyCoey:
Hepinize merhaba,

Grafiğin zamanına göre para biriminin gücünü göstermek için bir para birimi gücü ölçeri değiştirmeye çalışıyorum. Şu anda kullanılan kod şudur:

aHigh = MarketInfo(mySymbol,MODE_HIGH); // set a high today

aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today

aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid

aAsk = MarketInfo(mySymbol,MODE_ASK);

MODE_HIGH ve MODE_LOW'un mevcut günlerin en yüksek ve en düşük seviyesini aldığını anlıyorum. Bunun yerine mevcut zaman çerçevesinin en yüksek ve en düşük değerlerini nasıl alabilirim?

Teşekkürler!

Not Ben bir programcı değilim, bu yüzden lütfen küçük kelimeler kullanın :)

MarketInfo() kullanmak zorunda değilsiniz. Mevcut Yüksek'i almak istiyorsanız, Yüksek[0] ve Düşük[n], Kapat[n], Aç[n]'ı kullanın. 'n', geçerli çubuktan ofseti belirtir. Örneğin, çubuğun Yüksek değerini akımdan önce almak için, akım 0 olduğundan ve çubuktan önceki çubuk, akımdan 1 ofsetine sahip olduğundan Yüksek[1] kullanabilirsiniz.

Grafikte görüntülediğiniz dışındaki diğer zaman dilimlerinin Yüksek, Düşük, Açılış ve Kapanışlarını kontrol etmek için iHigh(), iLow(), iClose() ve iOpen işlevlerini kullanabilirsiniz.

Aşağıdaki örnek kullanım.

double high_of_gbpusd_4hours_current = iHigh("gbpusd", period_h4, 0);

 

Teşekkürler! Siz harikasınız!

 
mfurlend:

Sanırım hemen hemen işe yarıyor (emin değilim??), Ama nedense dizi, meşru değerlerle birlikte birçok '0' değeriyle doluyor.

Bunu şöyle yapardım:

#define TICKET 0

#define PRICES 1

double ResumeArray[0,2];

int CheckForResume()

{

ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;

bool success = false;

int k;

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

{

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

if (OrderType() > OP_SELL || OrderProfit()> Cutoff)continue;

int arraycount=ArrayRange(ResumeArray,TICKET);

bool found = false;

for (k=arraycount-1; k>=0; k--)

{

if (ResumeArray[k,TICKET] == OrderTicket())

{

found = true;

if (ResumeArray[k,PRICES] + Cutoff < OrderProfit())break;

else

{

success=true;

Print ("ELSE");

ResumeArray[k,PRICES] = OrderProfit();

break;

}

}

}

if (found == false)

{

arraycount = ArrayResize(ResumeArray,arraycount+1)/2;

ResumeArray[arraycount-1,TICKET] = OrderTicket();

ResumeArray[arraycount-1,PRICES] = OrderProfit();

success=true;

}

}

if(success)return (1);

else return(0);

}

TICKET ve PRICES tanımlarını kullanmanıza gerek yok, sadece 2 boyutlu bir dizinin nasıl çalıştığını göstermek için ekledim. TICKET ve PRICES'ın tüm oluşumlarını sırasıyla 0 ve 1 ile değiştirin.

'For' döngüsündeki 'return' komutlarını 'break' ile değiştirdim, böylece tüm açık siparişler işlenecek.

Unutulmaması gereken bir şey, kapalı siparişlerin diziden hiçbir zaman kaldırılmamasıdır , bu nedenle boyut olarak büyümeye devam edecek ve platformunuzu yavaşlatacaktır.

d4v3

 

Bar geçmişi sınırı

Birisi bu RenkoLiveChart_v3.2 betiğine çubuk sınırı seçeneği ekleyebilirse çok minnettar olurum.

Çok fazla bilgisayar kaynağı gerektirir.

Dosyalar:
 

Temel Uyarı EA

................[çözüldü] ................................

 

gürültü azaltma

herkese merhaba - Bir ticarette gürültüyü sınırlamanın ve daha hızlı bir kesinti yapmanın bir yolunu arıyordum

Fikir aslında oldukça basit

gürültü bu resimde gösterilmektedir, dinamik anlamı piyasa koşullarına uyacak şekilde değişmeye devam ediyor

İşte kapanış için yaptığım bazı kodlar, eğer biri onu kullanmak isterse, sadece içine bazı çarpanların eklenmesi gerekiyor.

int kar = OrderProfit() + OrderSwap() + OrderCommission();

int Trades = ScanTrades(0,0);

if (İşlemler == 0) TS1 = 0;

if ((ScanTrades(2,0) > 0) && (kâr < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + gürültü + Kayma);

if ((ScanTrades(2,0) > 0) && (kâr > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + gürültü );

if ((ScanTrades(1,0) > 0) && (kâr < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - gürültü - Kayma);

if ((ScanTrades(1,0) > 0) && (kâr > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - gürültü );

//kısa boylu

if ((ScanTrades(2,0) > 0)&& (TS1 ==0 )) TS1 = TS;

if ((ScanTrades(2,0) > 0)&& (TS < TS1)) TS1 = TS;

if ((ScanTrades(2,0) > 0) && (MarketInfo(Symbol(),MODE_BID) > TS1)) CloseOrder(2);

//uzun

if ((ScanTrades(1,0) > 0)&& (TS1 ==0 )) TS1 = TS;

if ((ScanTrades(1,0) > 0)&& (TS > TS1)) TS1 = TS;

if ((ScanTrades(1,0) > 0) && (MarketInfo(Symbol(),MODE_BID) < TS1)) CloseOrder(1);

Bir çubuk grafikten mevcut ve önceki en yüksek ve en düşük değerleri almanın en iyi yolu ne olurdu. "Gürültü" değişkenini yaratmam gerekiyor

Bunu denedim ama isabet ve ıskalama t1 ve l1 bazen 0 en iç karartıcı, çünkü böyle bir şey varsa, tüm ea'nın "bitmiş" olması arasında duran her şey.

çift hh2=Yüksek;

double ll2=Düşük;

çift hh3=Yüksek;

double ll3=Düşük;

çift t1,l1,gürültü;

//noise = önceki çubukların çakışması

if ((hh2 - hh3) > 0 ) t1 =(hh3); // temelde iki yükseliş arasındaki en düşük "yüksek" çubuğu seçmek

eğer ((hh3- hh2) > 0 ) t1=(hh2); //düşüş

if ((ll2 - ll3) > 0 ) l1 =(ll2); // en yüksek düşük çubuk yükselişini seçmek

if ((ll3-ll2) > 0 ) l1=(ll3); //düşüş

gürültü =(t1-l1);

Print("t1 = ",t1,"; l1 = ",l1);

print'in tipik sonuçları t1=0 l1=94.3 en can sıkıcı, çünkü hh2 ve hh3 == ne yapacağımı bilmiyorum sadece kodumda bir sorun göremiyorum.

Dosyalar:
cutoff.jpg  5 kb
 

kim bana yardım edebilir ?

biri bana 3 tanıdık göstergeye dayanan yeni bir göstergenin nasıl yapıldığını gösterebilir mi? Çok güçlü al/sat sinyalleri gösteren 3 göstergeye dayalı bir strateji yapıyorum ama 1 gösterge oluşturmak istiyorum...

 

ea değişiklik lütfen

Lütfen bu üründe aşağıdaki değişiklikleri uygulamama yardım edin

1) saat içinde ekleyin

A) 33,0.5,0.5 ayarlarına sahip fisher_ 11 göstergesi

B) tcf düzleştirilmiş gösterge ayarları 17, 8, 0.7

c) Ayrıca dinap _basic göstergesinin sinyal yönüne karşı çekim yaptığında işlemlere izin vermemesini istiyorum, yani yukarı çekiyorsa, alım sinyallerine izin VERİLMEZ, düşerse satış sinyallerine izin VERMEZ.

2) 15 dakika içinde ekleyin

A) süper trend göstergesi

B) Trendlord göstergesi

para yönetimi

1) Her biri hesap toplamının ( %1,5) %3 stop zararında 2 işlem açın

2) Biri 80 pipte kar alır veya %2,2 ve ikincisi %3,8 kar alır

3) Ardışık 4 kayıptan sonra beşinci işlem için çift lot boyutu, ardından iki ardışık kazanç ve varsayılan lot boyutuna geri dönene kadar sonraki işlemler için doğrusal lot artışı.

4) 12piplik takip eden stop (tüm işlemler için eski mum atrstops_v1 göstergesinin satın alınması için yukarıda ve satış için aşağıda.

hepsi bu lütfen yardım edin

Dosyalar:
 

Bir satır kodla tamamen aynı şeyi başarabilirdiniz.

GlobalVariableSet("TRENDSET_"+Symbol());

Daha da benzersiz hale getirmek için zaman çerçevesini de ekleyebilirsiniz.

Dürüst olmak gerekirse, gönderinizin amacının ne olduğundan tam olarak emin değilim.

Saygılarımızla

Lüks

 

iCustom kullanarak H1'den değer nasıl çağırılır?

Merhaba,

Çok basit bir gösterge kodlamaya çalışıyorum ama H1'den Laguerre değerini çağıramıyorum.

yapmak istediğim şey :

1M TF'yi kullanma

al sinyali : Laguerre 0.15 seviye yukarıyı geçiyor ve Laguerre H1 > 0.75

sat sinyali : Laguerre 0.75 seviyesini baş aşağı geçiyor ve Laguerre H1 < 0.15

basit çarpı için gösterge yaptım ve işe yarıyor, sorun Laguerre H1'den değeri kontrol etmeye çalıştığımda: bu bir karmaşa!

2 yol denedim:

Birincisi:

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 SeaGreen

#property indicator_color2 Red

#property indicator_width1 3

#property indicator_width2 3

double CrossUp[];

double CrossDown[];

extern bool SoundON=true;

double alertTag;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0, DRAW_ARROW, EMPTY,3);

SetIndexArrow(0, 233);

SetIndexBuffer(0, CrossUp);

SetIndexStyle(1, DRAW_ARROW, EMPTY,3);

SetIndexArrow(1, 234);

SetIndexBuffer(1, CrossDown);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start() {

int limit, i;

int counted_bars=IndicatorCounted();

//---- check for possible errors

if(counted_bars<0) return(-1);

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

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

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

if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) > 0.15) && (iCustom(NULL,0,"Laguerre",0.66,9500,0,i+1) < 0.15)

&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) > 0.75) ) //check for buy signal

{

CrossUp = Close;

}

else if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) 0.75)

&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) < 0.15) ) //check for sell signal

{

CrossDown = Close;

}

if (SoundON==true && i==1 && CrossUp > CrossDown && alertTag!=Time[0]){

Alert("SHORT signal on ",Symbol()," ",Period());

alertTag = Time[0];

}

if (SoundON==true && i==1 && CrossUp < CrossDown && alertTag!=Time[0]){

Alert("Long Signal on ",Symbol()," ",Period());

alertTag = Time[0];

}

}

return(0);

}[/CODE]

second one:

[CODE]//+------------------------------------------------------------------+

//| Shift.mq4 |

//| me |

//|

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

#property copyright "me"

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_width1 4

#property indicator_width2 4

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

bool Fact_Up = true; // Fact of report that market..

bool Fact_Dn = true; //..is bullish or bearish

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,241);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,242);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(1,0.0);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

//int limit;

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

if(counted_bars<0) return(-1);

//limit=Bars-counted_bars;

//----

double MA; // MA value on 0 bar

double MA2;

double MA3;

double MA4;

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

double value1, value2, value3;

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

//---- main loop

//for(int i=0; i<limit; i++)

{value1=0.0;

value2=0.0;

value3=0.0;

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

// Checking if bullish

if( (iCustom(Symbol(),NULL,"Laguerre",0,i) > 0.15) && (iCustom(Symbol(),NULL,"Laguerre",0,i+1) < 0.15) && Fact_Up == true

&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) > 0.75) )

{

Fact_Dn = true; // Report about bullish market

Fact_Up = false; // Don't report bullish market

// Alert("BUY SIGNAL.");

value1=Open;

}

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

// Checking if bearish

if( (iCustom(Symbol(),NULL,"Laguerre",0,i) 0.75) && Fact_Dn == true

&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) < 0.15) )

{

Fact_Up = true; // Report about bearish market

Fact_Dn = false; // Don't report bearish market

// Alert("SELL SIGNAL.");

value2=Open;

}

ExtMapBuffer1=value1;

ExtMapBuffer2=value2;

}

//----

return(0);

}

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

ikisi de çalışmıyor, sorun KIRMIZI çizgi, KIRMIZI çizgi olmadan mükemmel çalışıyor .

denedim (iCustom(Symbol(),PERIOD_H1,"Laguerre",0, i ) < .....)

(iCustom(Symbol(),PERIOD_H1,"Laguerre",0, 0 ) < ....)

(iCustom(Symbol(),60,"Laguerre",0, i ) < ....)

(iCustom(Symbol(),60,"Laguerre",0, 0 ) < .....)

Değişkenlerle de denedim: (iCustom(Symbol(),PERIOD_H1,"Laguer re", 0.66,9500 ,0,i)

eğer koyarsam:

Print(iCustom(Symbol(),60,"Laguerre ",0, ben )); "eğer"den önce rastgele sayı döndürür...

ancak şununla birlikte: Print(iCustom(Symbol(),60,"Laguerre ",0, 0 )); H1'den iyi değeri döndürür

şimdi iCustom (Symbol(),60,"Laguerre",0, 0 ); kullanırsam sorun aynı kalır; "eğer" içinde çalışmıyor ...

sorun "for" ve "i" ve iCustom "shift" değeriyle ilgili ancak çözemiyorum.

yardımın çok memnuniyetle karşılanacaktır!

Denemek isterseniz kullandığım Laguerre göstergesini ekledim.

eğer birisi onu sıfırdan yeniden kodlamaya hazırsa lütfen tereddüt etmeyin

beni deli ediyor...

Dosyalar:
laguerre.mq4  3 kb
Neden: