Nasıl kodlanır? - sayfa 321

 
mladen:
dasio

Bunun gibi bir şey deneyin:

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 OrangeRed

#property indicator_color2 Silver

#property indicator_width1 2

extern int RsiPeriod = 50;

extern int RsiPrice = PRICE_CLOSE;

double work[];

double avg[];

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

//

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

//

//

//

//

//

int init()

{

SetIndexBuffer(0,work);

SetIndexBuffer(1,avg);

return(0);

}

int start()

{

int i,countedBars = IndicatorCounted();

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

if (countedBars>0) countedBars--;

int limit = MathMin(Bars-countedBars,Bars-1);

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

{

work = iRSI(NULL,0,RsiPeriod,RsiPrice,i);

int y = iBarShift(NULL,PERIOD_D1,Time);

int x = iBarShift(NULL,PERIOD_D1,Time);

if (x!=y)

{

int k = iBarShift(NULL,0,iTime(NULL,PERIOD_D1,y));

double average = work[k];

int c = 1;

for (int j=k-1; j>=i; j--,c++) average += work[j]; average /= c;

for ( j=k ; j>=i; j--) avg[j] = average;

}

}

return(0);

}

Mladen denedim ama başarılı olamadım.

Ekte benim göstergemin bir örneği var. Tek fark hesaplamalarda ama diğeri aynı.

Formülünüzle bütünleştirebilir misiniz? bu yüzden ben de çalışabilirim.

Teşekkür ederim

test1.mq4

Dosyalar:
test1.mq4  3 kb
 

Herkese selam. Bir sinyal için bir kod satırı yazmak için hızlı yardım arıyorum.

Sinyal için Step_Indy ve bir EMA çaprazı kullanıyorum. Yapmak istediğim şey, EA'nın ancak her ikisi de birbirinden 10 çubuk uzaklıkta bir sinyal verdiğinde ticarete girmesini sağlamak.

Diyelim ki Adım bir sinyal veriyor, EA'nın MA çaprazı olup olmadığını görmek için 10 çubuk geriye bakmasını istiyorum, evet ise girin. (Sadece MA çapraz akım sinyalinin uzun olup olmadığını kontrol etmesini ve görmesini istemiyorum, 10 bar gibi yakın zamanda olmasını istiyorum)

Herhangi bir yardım için TIA, bunu geçmişte gördüğüm herhangi bir EA'da gördüğümü sanmıyorum.

 

dasio

Koddan, kodun amacının ne olduğunu göremiyorum. Her neyse, göstergenin "temel" değeri olarak gerçek aralığı kullanmak isteyip istemediğinizi (kodunuzun ilk kısmıdır) veya kodunuzun ikinci bölümünü aşağıdaki gibi kullanmak istiyorsanız, seçebileceğiniz bir kod aşağıdadır. "temel" değer

dasio:
Mladen denedim ama başarılı olamadım.

Ekte benim göstergemin bir örneği var. Tek fark hesaplamalarda ama diğeri aynı.

Formülünüzle bütünleştirebilir misiniz? bu yüzden ben de çalışabilirim.

Teşekkür ederim

test1.mq4
Dosyalar:
_test1.mq4  2 kb
 

Sinyal Sorunları

Mladen, bir kez daha teşekkür ederim, uyarı artık tekrarlanmıyor, iyi çalışıyor.....ama bir durdurma sinyali vermek istiyorum..... ve aşağıdaki kodu yazdım,al ve sat sinyali çalışıyor ama al stop ve satış durdurma çalışmıyor, aşağıdaki koda bakın:

//-----Alartları Atama----

if(Period()==240){

statik tarihsaat lastAlerted=0;

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0);

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

çift RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0);

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0);

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

double şimdiCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0);

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1);

double şimditrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0);

// Ticaret uyarıları

if((adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&(nowtrCCI>0) (lastAlerted!=Zaman[0]))

{

lastAlerted=Zaman[0];

Alert("Buy","\n"," Geçerli saat ",TimeToStr(CurTime()),"\n",Symbol());

}

if((adx_h4>=20)&&(di_m_h4>=20)&&(di_m_h4>di_p_h4)&&(ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&&nowenCCI<b4enCCI)&&(now&trCCItr)&(b&nowCCI<0& (lastAlerted!=Zaman[0]))

{

lastAlerted=Zaman[0];

Alert("Sat",\n","Geçerli saat ",TimeToStr(CurTime()),"\n",Symbol());

}

// Uyarıları durdur

if((adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_mainRSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)&>b4trCCI)&> (di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP10&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)||(adx_h4>=20)&_h(>di_p_&> >di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI<0&&nowenCCI0&&nowtrCCI>b4trCCI)||(adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_ms_h&(di_p_h4>di_m_h4>di_m_h4) &&(RSIP1>RSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowtrCCI<0&&nowtrCCI<b4trCCI)&&(lastUyarıldı!=Zaman[0]))

{

lastAlerted=Zaman[0];

Alert("Satın Almayı Durdur",\n","Geçerli saat ",TimeToStr(CurTime()),"\n",Symbol());

}

if((adx_h4>=20)&&(di_m_h4>=20)&&(di_p_h4ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI=20)&&(di_20)h di_p_h4<di_m_h4)&&(ist_mainRSIP2)&&(nowenCCI<0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_hma)&&(di_p_h4<di_m_hma)C&&now(10)&&ist(ist) (nowtrCCI<0&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_h4)&&(ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&&nowenCCI0&&nowtrCCI>&b4trCCI) )

{

lastAlerted=Zaman[0];

Alert(" Satışı Durdur",\n","Geçerli saat ",TimeToStr(CurTime()),"\n",Symbol());

}

mladen:
Şu şekilde deneyin:
if(Period()==240)

{

static datetime lastAlerted=0;

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0);

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0);

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0);

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0);

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1);

double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0);

// alerts

if((ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI >0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Buy Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

if((ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI <0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI<b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Sell Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

}
 
mladen:
dasio Koddan, kodun amacının ne olduğunu göremiyorum. Her neyse, göstergenin "temel" değeri olarak gerçek aralığı kullanmak isteyip istemediğinizi (kodunuzun ilk kısmıdır) veya kodunuzun ikinci bölümünü aşağıdaki gibi kullanmak istiyorsanız, seçebileceğiniz bir kod aşağıdadır. "temel" değer

teşekkür ederim mladen.

Biliyorum bu şekilde hesap yapmanın bir anlamı yok. Ama her gün yaptığım bir analizi kodlamaya çalışıyorum. ^^

İşin sadece 1/3'ü.

Teşekkür ederim

 
mladen:
dasio Koddan, kodun amacının ne olduğunu göremiyorum. Her neyse, göstergenin "temel" değeri olarak gerçek aralığı kullanmak isteyip istemediğinizi (kodunuzun ilk kısmıdır) veya kodunuzun ikinci bölümünü aşağıdaki gibi kullanmak istiyorsanız, seçebileceğiniz bir kod aşağıdadır. "temel" değer

Teşekkür ederim, mükemmel.

Cuma düzeltmesini eklemek mümkün mü?

Teşekkür ederim

Saygılarımızla

 

Ses

her çubuğun hacmini sorgulamak istiyorum ama nasıl yapacağım hakkında hiçbir fikrim yok mql4 programlamada yeniyim ama öğrenmeye çalışıyorum bu basit programı denedim ama tamamen saçma olabilir, lütfen bana bildirin, ve herhangi bir öneri takdir edilecektir. Aşağıda bir çubuğun hacmini sorgulamak ve sonucu yazdırmak için betiğin başlangıcı verilmiştir, lütfen nerede yanlış yaptığımı bana bildirin !!!! derlemeye çalışmaya devam et, yazan bir hata var (program sonu parantez } bekleniyor.

//--- giriş parametreleri

harici çift TakeProfit = 4;

harici çift StopLoss = 20;

harici çift Lot = 0.1;

harici çift TrailingStop = 30;

dış çift hacimmore = 600;

dış çift hacimsiz = 150;

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

//| uzman başlatma işlevi |

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

int başlangıç()

{

if (Hacim=>hacim daha fazla)

{

Yazdır ("daha fazla cilt");

{

if (Hacim=<hacimsiz)

{

Yazdır ("hacim daha az");

if(Çubuklar<20)

{

Print("20'den küçük çubuklar");

{

//----

//----

dönüş (0);

}

 

Hacmi görmek istediğiniz çubuk için "endeks"in sayı olduğu Hacim'i kullanın. Metatrader 4'te "Hacim" in her zaman kene hacmi olduğunu unutmayın.

Tim Latham:
her çubuğun hacmini sorgulamak istiyorum ama nasıl yapacağım hakkında hiçbir fikrim yok mql4 programlamada yeniyim ama öğrenmeye çalışıyorum bu basit programı denedim ama tamamen saçma olabilir, lütfen bana bildirin, ve herhangi bir öneri takdir edilecektir. Aşağıda bir çubuğun hacmini sorgulamak ve sonucu yazdırmak için betiğin başlangıcı verilmiştir, lütfen nerede yanlış yaptığımı bana bildirin !!!! derlemeye çalışmaya devam et, yazan bir hata var (program sonu parantez } bekleniyor.

//--- giriş parametreleri

harici çift TakeProfit = 4;

harici çift StopLoss = 20;

harici çift Lot = 0.1;

harici çift TrailingStop = 30;

dış çift hacimmore = 600;

dış çift hacimsiz = 150;

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

//| uzman başlatma işlevi |

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

int başlangıç()

{

if (Hacim=>hacim daha fazla)

{

Yazdır ("daha fazla cilt");

{

if (Hacim=<hacimsiz)

{

Yazdır ("hacim daha az");

if(Çubuklar<20)

{

Print("20'den küçük çubuklar");

{

//----

//----

dönüş (0);

}
 
jayjonbeach:
Herkese selam. Bir sinyal için bir kod satırı yazmak için hızlı yardım arıyorum.

Sinyal için Step_Indy ve bir EMA çaprazı kullanıyorum. Yapmak istediğim şey, EA'nın ancak her ikisi de birbirinden 10 çubuk uzaklıkta bir sinyal verdiğinde ticarete girmesini sağlamak.

Diyelim ki Adım bir sinyal veriyor, EA'nın MA çaprazı olup olmadığını görmek için 10 çubuk geriye bakmasını istiyorum, evet ise girin. (Sadece MA çapraz akım sinyalinin uzun olup olmadığını kontrol etmesini ve görmesini istemiyorum, 10 bar gibi yakın zamanda olmasını istiyorum)

Herhangi bir yardım için TIA, bunu geçmişte gördüğüm herhangi bir EA'da gördüğümü sanmıyorum.

Pekala, birkaç şey denedim ama şu ana kadar hiçbir şey işe yaramadı.

İşte bunu denediğim yollardan biri:

harici int geriye dönük inceleme = 10;

harici int EMA1 = 21;

harici int EMA2 = 55;

int GetEntrySignal()

{

int trendCurr = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest );

int trendPrev = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+1);

double TwentyOneEMA = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,1);

double FiftyFiveEMA = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1);

if(YirmiBirEMA > ElliFiveEMA)

{

if (trendCurr>0)

{

for(int i=1; i<=Bars-backback; i++)

{

eğer (trendCurr<0)

dönüş(UZUN);

başka dönüş(YOK);

}

}

}

if(YirmiBirEMA < ElliFiveEMA)

{

eğer (trendCurr<0)

{

for(int i2=1; i2<=Bars-backback; i2++)

{

if (trendCurr>0)

dönüş(KISA);

başka dönüş(YOK);

}

}

}

dönüş(YOK);

}

Herhangi bir fikir takdir edildi, ben de denedim (int i=1; i<=lookback; i++)

 

...

jayjon plajı,

TrendCurr değerini döngüde değiştirmeden tekrar tekrar test ediyorsunuz (böylece her zaman HİÇBİRİ döndürecektir)

iCustom()'u döngüye sokmayı deneyin ve ardından bu değeri test edin. Bunun gibi bir şey:

if (trendCurr>0)

{

for(int i=1; i<=lookback; i++)

{

int testValue = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+i);

if (testValue<0) return(LONG);

}

return(NONE);

}

jayjonbeach:
Pekala, birkaç şey denedim ama şu ana kadar hiçbir şey işe yaramadı.

İşte bunu denediğim yollardan biri:

harici int geriye dönük inceleme = 10;

harici int EMA1 = 21;

harici int EMA2 = 55;

int GetEntrySignal()

{

int trendCurr = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest);

int trendPrev = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+1);

double TwentyOneEMA = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,1);

double FiftyFiveEMA = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1);

if(YirmiBirEMA > ElliFiveEMA)

{

if (trendCurr>0)

{

for(int i=1; i<=Bars-backback; i++)

{

eğer (trendCurr<0)

dönüş(UZUN);

başka dönüş(YOK);

}

}

}

if(YirmiBirEMA < ElliFiveEMA)

{

eğer (trendCurr<0)

{

for(int i2=1; i2<=Bars-backback; i2++)

{

if (trendCurr>0)

dönüş(KISA);

başka dönüş(YOK);

}

}

}

dönüş(YOK);

}

Herhangi bir fikir takdir edildi