Kodlama yardımı - sayfa 201

 
Slow Moe:
Merhaba, sormak istiyorum, bu Göstergeyi sadece okları gösterecek şekilde yeniden yazmanın mümkün olup olmadığını ve şamdanlarda görünmeleri gerektiğini sormak istiyorum. Biri bana bu konuda yardımcı olabilir mi, yoksa benim için kodlayabilir mi lütfen?

Saygılarımızla

Yavaş

fxmtn-test.mq4

Yavaş

şöyle dene

Dosyalar:
 

Beautyfull çalışan mladen çok teşekkürler !!

"extern int arrowDistance = XXX;" almaya çalışıyorum bir şekilde de etkinleştirildi.

Şimdi seçim menüsünde görünüyor, ancak Mesafeyi değiştirmiyor. *okDistance nereye koyulur?

Yoksa tamamen yanılıyor muyum?

Birkaç yere koydum, ama bana sadece daha fazla nokta verdi, daha fazla mesafe değil....

Noob kodu anlamaya çalışıyor ve biraz ışık olmasını umuyor

 

Şimdi böyle mi oldu:

if (AboveBuff > 24.0) ShortBuff = Yüksek+ (Nokta*okMesafe /2);

if (BelowBuff < -24.0) LongBuffe = Low- (Nokta*okMesafe /2);

Bu doğru bir yol mu? Sadece işe yaradığı için yanlış olabilir

 
Slow Moe:
Şimdi böyle mi oldu:

if (AboveBuff > 24.0) ShortBuff = Yüksek+ (Nokta*okMesafe /2);

if (BelowBuff < -24.0) LongBuffe = Düşük- (Nokta*okMesafe /2);

Bu doğru bir yol mu? Sadece işe yaradığı için yanlış olabilir

Bu işe yaramalı, bunu böyle yapmanın başka bir yolu var

LongBuffe = Düşük okMesafe*iATR(NULL,0,20,i) ve ShortBuff = Yüksek+okMesafe**iATR(NULL,0,20,i)

 

Yavaş,

iATR() modunu kullanmak daha iyidir. Zaman dilimlerini değiştirin ve ne demek istediğimi anlayacaksınız. Bir okun yüksek veya alçaktan uzaklığı sabitlendiğinde daha yüksek zaman dilimlerinde görsel olarak bir probleminiz olacaktır (bazı zaman dilimlerinde dağınık görüneceklerdir). Sabit mesafe kullanmak yerine iATR() kullanmak bu sorunu çözer

 

Teşekkürler mrtools, mladen gerçekten çok daha iyi çalışıyor.

Kontrol edemediğim son bir gösterge...

Burada değiştirmeye çalışıyorum : SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);

50'yi değiştirmek mesafeyi değiştirdiğinden, bunun doğru nokta olduğunu düşündüm. Ama test ettiğim hiçbir şey okDistance ile çalışmadı.

 
Slow Moe:
Teşekkürler mrtools, mladen gerçekten çok daha iyi çalışıyor.

Kontrol edemediğim son bir gösterge...

Burada değiştirmeye çalışıyorum : SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);

50'yi değiştirmek mesafeyi değiştirdiğinden, bunun doğru nokta olduğunu düşündüm. Ama test ettiğim hiçbir şey okDistance ile çalışmadı.

Yavaş

Atr'yi ok mesafesi için dava ederken, muhtemelen bu mesafeyi değiştirmenin en iyi yolu bir tür çarpandır. Örneğin :

okPrice = Yüksek+iATR(NULL,0,50,0)*arrowDistance;

Burada okDistance double olarak tanımlanır ve kesirli olabilir (böylece 0,5 gibi değerlerin yanı sıra 10.5 gibi değerleri de kullanabilirsiniz). Atr periyodunun değiştirilmesi, mesafeyi önemli ölçüde değiştirmeyecektir (sadece daha uzun bir ortalama mesafeyi hesaba katacaktır)

 

değeri başka bir göstergeden almaya çalışın

merhaba com,

İlk kendi göstergemi yazmaya çalışıyorum ve bu siteden aldığım mevcut bir göstergeden de bir değer kullanmak istiyorum. Kodu indi'den buraya kopyaladım.

çubuğun mavi/kırmızı mı yoksa 1/0 mı olduğunu bilmek için yeni göstergemde neyi kodlamam gerekiyor, umrumda değil ama zaten çok denedim ve her zaman sadece sıfır alıyorum

Hatta çalışmayan göstergemde tüm kodu almaya çalıştım.

herhangi bir yardım takdir edilecektir

teşekkürler

#property copyright "fxfariz"

#property link "fxfariz@gmail.com"

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue //Red //Aqua

#property indicator_color2 Red

extern int SSP=7;

extern double Kmax=50.6; //24 21.6 21.6

extern int CountBars=300;

extern int myPeriod = 0 ;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double ExtHBuffer1[];

double ExtHBuffer2[];

int xPeriod ;

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

string TimeFrameToString(int tf)

{

string tfs;

switch(tf) {

case PERIOD_M1: tfs="M1" ; break;

case PERIOD_M5: tfs="M5" ; break;

case PERIOD_M15: tfs="M15" ; break;

case PERIOD_M30: tfs="M30" ; break;

case PERIOD_H1: tfs="H1" ; break;

case PERIOD_H4: tfs="H4" ; break;

case PERIOD_D1: tfs="D1" ; break;

case PERIOD_W1: tfs="W1" ; break;

case PERIOD_MN1: tfs="MN1";

}

return(tfs);

}

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(4);

SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red

SetIndexBuffer(0,ExtHBuffer1);

SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime

SetIndexBuffer(1,ExtHBuffer2);

SetIndexBuffer(2,ExtMapBuffer1);

SetIndexBuffer(3,ExtMapBuffer2);

if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}

string tPeriod = TimeFrameToString(xPeriod) ;

IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");

//----

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars+SSP);

SetIndexDrawBegin(1,Bars-CountBars+SSP);

int i, counted_bars=IndicatorCounted();

double SsMax, SsMin, smin, smax;

if(Bars<=SSP+1) return(0);

if(counted_bars<SSP+1)

{

for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;

for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;

}

for(i=CountBars-SSP;i>=0;i--) {

SsMax = High;

SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];

smax = SsMax-(SsMax-SsMin)*Kmax/100;

ExtMapBuffer1=smax;

ExtMapBuffer2=smax;

}

for(int b=CountBars-SSP;b>=0;b--)

{

if(ExtMapBuffer1>ExtMapBuffer2)

{

ExtHBuffer1=1;

ExtHBuffer2=0;

}

else

{

ExtHBuffer1=0;

ExtHBuffer2=1;

}

}

return(0);

}
 
BobMorane1000:
merhaba com,

İlk kendi göstergemi yazmaya çalışıyorum ve bu siteden aldığım mevcut bir göstergeden de bir değer kullanmak istiyorum. Kodu indi'den buraya kopyaladım.

çubuğun mavi/kırmızı mı yoksa 1/0 mı olduğunu bilmek için yeni göstergemde neyi kodlamam gerekiyor, umrumda değil ama zaten çok denedim ve her zaman sadece sıfır alıyorum

Hatta çalışmayan göstergemde tüm kodu almaya çalıştım.

herhangi bir yardım takdir edilecektir

teşekkürler

#property copyright "fxfariz"

#property link "fxfariz@gmail.com"

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue //Red //Aqua

#property indicator_color2 Red

extern int SSP=7;

extern double Kmax=50.6; //24 21.6 21.6

extern int CountBars=300;

extern int myPeriod = 0 ;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double ExtHBuffer1[];

double ExtHBuffer2[];

int xPeriod ;

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

string TimeFrameToString(int tf)

{

string tfs;

switch(tf) {

case PERIOD_M1: tfs="M1" ; break;

case PERIOD_M5: tfs="M5" ; break;

case PERIOD_M15: tfs="M15" ; break;

case PERIOD_M30: tfs="M30" ; break;

case PERIOD_H1: tfs="H1" ; break;

case PERIOD_H4: tfs="H4" ; break;

case PERIOD_D1: tfs="D1" ; break;

case PERIOD_W1: tfs="W1" ; break;

case PERIOD_MN1: tfs="MN1";

}

return(tfs);

}

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(4);

SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red

SetIndexBuffer(0,ExtHBuffer1);

SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime

SetIndexBuffer(1,ExtHBuffer2);

SetIndexBuffer(2,ExtMapBuffer1);

SetIndexBuffer(3,ExtMapBuffer2);

if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}

string tPeriod = TimeFrameToString(xPeriod) ;

IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");

//----

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars+SSP);

SetIndexDrawBegin(1,Bars-CountBars+SSP);

int i, counted_bars=IndicatorCounted();

double SsMax, SsMin, smin, smax;

if(Bars<=SSP+1) return(0);

if(counted_bars<SSP+1)

{

for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;

for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;

}

for(i=CountBars-SSP;i>=0;i--) {

SsMax = High;

SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];

smax = SsMax-(SsMax-SsMin)*Kmax/100;

ExtMapBuffer1=smax;

ExtMapBuffer2=smax;

}

for(int b=CountBars-SSP;b>=0;b--)

{

if(ExtMapBuffer1>ExtMapBuffer2)

{

ExtHBuffer1=1;

ExtHBuffer2=0;

}

else

{

ExtHBuffer1=0;

ExtHBuffer2=1;

}

}

return(0);

}

BobMorane1000

Bunun gibi bir şey yapabilirsin:

bool blueValue = (iCustom(NULL,0,"indicatorNameHere",SSP,Kmax,0,0)!=0);

bool redValue = (iCustom(NULL,0,"indicatorNameHere",SSP,Kmax,1,0)!=0);

Ama dikkat et. Bu gösterge, süper sinyal göstergesinin bir varyasyonudur ve süper sinyal göstergesi yeniden hesaplar (yeniden boyar)

 

çok teşekkür ederim ve uyarınız için^^ şimdi deneyeceğim...