Göstergeler, danışmanlar yazıyorum, artık ücretsiz değil :) - sayfa 6

 
KimIV >> :
Geçersiz fonksiyon parametreleri. OrderClose() işlevine tam olarak ne ilettiğinizi kontrol edin.

Kontrol ettim ... Sorunun ne olduğunu gerçekten bilmiyorum .. O kadar çok şey denedim ki %(

 

tekrar iyi akşamlar :)

Yeni bir istekle. Hala kendi başıma çözemediğimi fark ettim.

Lütfen WATR göstergesine göre bir danışman yazın (danışman kodu aşağıdadır). Gösterge döndüğünde açık emir kapanır (SL veya TP ile kapatılmamışsa) ve göstergenin gösterdiği yönde yeni bir emir açılır. Sipariş, tam olarak geri dönüş noktasında yalnızca bir tane açar. Sonra danışmanın bir sonraki tersine çevrilmesini bekleyeceğiz.

Giriş parametreleri: parti büyüklüğü, SL, TP, kayma. Görünüşe göre hiçbir şey unutmadım :)

Saygılarımla, Svetlana. ICQ 320355718

Gösterge kodu:

//+------------------------------------------- --------------------+
//| WATR.mq4 |
//| WizardSerg konkop makalesi altında yazıldı |
//| "Modern ticaret" #4/2001 |
//| http://www.wizardserg.inweb.ru |
//| sihirbazserg@mail.ru |
//+------------------------------------------- --------------------+
#özellik telif hakkı "<Modern ticaret> #4/2001'de konkop makalesi altında WizardSerg yazıldı"
#özellik bağlantısı "http://www.wizardserg.inweb.ru"
//----
#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 2
#özellik göstergesi_color1 Mercan
#özellik göstergesi_renk2 DodgerBlue
//---- giriş parametreleri
harici int WATR_K = 10;
harici çift WATR_M = 4.0;
harici int ATR = 21;
//---- arabellekler
çift ExtMapBufferUp[];
çift ExtMapBufferDown[];
//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
Gösterge Tamponları(2);
SetIndexBuffer(0, ExtMapBufferUp);
ArraySetAsSeries(ExtMapBufferUp, true);
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
SetIndexBuffer(1, ExtMapBufferDown);
ArraySetAsSeries(ExtMapBufferDown, true);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
GöstergeShortName("WATR(" + WATR_K + ", " + WATR_M + ")");
SetIndexLabel(0, "WATR_Up");
SetIndexLabel(1, "WATR_Dn");
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| özel gösterge işlevi |
//+------------------------------------------- --------------------+
bool AntiTrendBar(int i)
{
bool res = (TrendUp(i) && (Kapat[i] < Aç[i])) ||
(!TrendUp(i) && (Kapat[i] > Aç[i]));
dönüş(ler);
}
//+------------------------------------------- --------------------+
//| özel gösterge işlevi |
//+------------------------------------------- --------------------+
double CalcIndicValue(int i, bool trend)
{
double res = Kapat[i];
eğer(eğilim)
res -= (WATR_K*Nokta + WATR_M*iATR(NULL, 0, ATR, i));
başka
res += (WATR_K*Nokta + WATR_M*iATR(NULL, 0, ATR, i));
dönüş(ler);
}
//+------------------------------------------- --------------------+
//| özel gösterge işlevi |
//+------------------------------------------- --------------------+
bool TrendUp(int i)
{
dönüş((Kapat[i+1] > ExtMapBufferUp[i+1]) &&
(ExtMapBufferUp[i+1] != BOŞ_DEĞER));
}
//+------------------------------------------- --------------------+
//| özel gösterge yineleme işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
int limiti;
int counted_bars = IndicatorCounted();
//---- Son hesaplanan çubuk yeniden hesaplanacak
//---- ilk gösterge değeri == fiyat-1 puan,
// yani, trendin yukarı olduğunu düşünüyor
ExtMapBufferUp[Çubuklar] = Kapat[Çubuklar] - WATR_K*Noktası;
// limit = (sayılan_barlar > 0) ? (Barlar - sayılan_barlar) : (Barlar - 1);
limit = Çubuklar - sayılan_barlar;
//---- Ana döngü
for(int i = limit; i >= 0; i--)
{
if(AntiTrendBar(i))
{
ExtMapBufferUp[i] = ExtMapBufferUp[i+1];
ExtMapBufferDown[i] = ExtMapBufferDown[i+1];
}
başka
{
if(TrendUp(i))
{
ExtMapBufferUp[i] = CalcIndicValue(i, true);
if(ExtMapBufferUp[i] < ExtMapBufferUp[i+1])
ExtMapBufferUp[i] = ExtMapBufferUp[i+1];
ExtMapBufferDown[i] = EMPTY_VALUE;
}
başka
{
ExtMapBufferDown[i] = CalcIndicValue(i, false);
if(ExtMapBufferDown[i] > ExtMapBufferDown[i+1])
ExtMapBufferDown[i] = ExtMapBufferDown[i+1];
ExtMapBufferUp[i] = EMPTY_VALUE;
}
}
// fiyat kesişimleri
if(TrendUp(i) && (Close[i] < ExtMapBufferUp[i]))
{
ExtMapBufferDown[i] = CalcIndicValue(i, false);
ExtMapBufferUp[i] = EMPTY_VALUE;
}
if((!TrendUp(i)) && (Close[i] > ExtMapBufferDown[i]))
{
ExtMapBufferUp[i] = CalcIndicValue(i, true);
ExtMapBufferDown[i] = EMPTY_VALUE;
}
}
dönüş(0);
}
//+------------------------------------------- --------------------+



 
rusmos писал(а) >>

Kusura bakmayın ama aşağıdaki görevin, örneğin ilk partinin kodunu yazar mısınız? 0.1 ve sonraki her biri belirli, belirli bir miktarda artar.

Şimdiden teşekkürler

Bu forumda arama yapın, bu zaten istendi ve yazıldı ...

Her durumda, şöyle bir şey var ...

 
StatBars >> :

Bu forumda arama yapın, bu zaten istendi ve yazıldı ...

Teşekkür ederim.Üç saattir forumu kürekliyorum, bir sürü şey buldum ama şu anki bu değil (

 
StatBars >> :

Bu forumda arama yapın, bu zaten istendi ve yazıldı ...

Ve kod muhtemelen maksimum 10'dur.

Ama burada, muhtemelen, profesyoneller küçük şeyleri değiş tokuş etmiyorlar (

 
rusmos >> :

Ve kod muhtemelen maksimum 10 terimdir.

Ama burada, muhtemelen, profesyoneller küçük şeyleri değiş tokuş etmiyorlar (

En azından yaklaşık olarak değil, özellikle birisinin üstlenebilmesi için görevi resmileştirmek güzel olurdu.

 
rusmos писал(а) >>

Ve kod muhtemelen maksimum 10'dur.

Ama burada, muhtemelen, profesyoneller küçük şeyleri değiş tokuş etmiyorlar (

Soruyu doğru formüle edin. Ön sipariş, sonraki sipariş. İlk olarak neyden? Unih döneminin başlangıcından mı, yoksa İsa'nın geldiği günden mi, yoksa dünyanın yaratıldığı andan itibaren mi, yoksa belki kahvaltı edip yürüdüğünüz andan itibaren mi? Ne sorular, ne gibi cevaplar.

 
rusmos писал(а) >>

Ve kod muhtemelen maksimum 10'dur.

Ama burada, muhtemelen, profesyoneller küçük şeyleri değiş tokuş etmiyorlar (

 extern double RISK = 20 ;


lotsize = MarketInfo ( Symbol ( ) , MODE_LOTSIZE ) * 0.01 ;
Balance = AccountBalance ( ) * ( RISK / 100 ) ;
lots = NormalizeDouble ( Balance / lotsize , 2 ) ; // - это и есть лот для открытия позиции
Kod sadece lotu arttırmakla kalmaz, aynı zamanda azaltır, her şey depoya bağlıdır, depo büyür - lot artar... Bana buna ihtiyacın var gibi geldi...
 
sol >> :

En azından yaklaşık olarak değil, özellikle birisinin üstlenebilmesi için görevi resmileştirmek güzel olurdu.

TAMAM. İlk lot 0.1 lot ile satın alın. Buna karşılık, bir SellStop hemen 20 puan altına çok fazla 0,2 ile yerleştirilir (yani 0,1 artış)

Ayrıca, Satış yanıt olarak işe yaradıysa, 0,3 lot ile bir Baystop belirledik (yani, LAST lotu tekrar 0,1 artırdık) ve prensipte böyle devam eder.

Partideki artışın boyutunun isteğe bağlı olarak ayarlanması önemlidir.

İki ilginç seçenek var. Toplama ve çarpma.

ah, öyle görünüyor)

 
StatBars >> :
Kod sadece lotu arttırmakla kalmaz, aynı zamanda azaltır, her şey depoya bağlıdır, depo büyür - lot artar... Bana buna ihtiyacın var gibi geldi...

Depo boyutu önemli değil