Nasıl kodlanır? - sayfa 187

 

Evet, 3 adım yapmak istiyorum

Örnek:

15'e ulaş ve 10'a geri dön

30'a ulaş ve 15'e geri dön

45'e ulaş ve 15'e geri dön

Veya zararı durdurda kapatın.

Bir fotoğraf çekip daha iyi açıklamaya çalışacağım.

 
fosgate_r:
Bu benim için yeni bir şey.

Yani, kaybeden ticaret kapanışının her zaman geri dönene kadar beklemesi gerekiyor, değil mi?

Peki ya geri tepme olmazsa?

İlk SL'de kapatacak mıyız?

Şimdiye kadar teşekkürler, zaten yaptım, şimdi bu kayıp korumasıyla iyi sonuçlar elde etmek için optimize etmeye çalışıyorum.

 

Bir çizgi çizme hakkında bilgi bulmaya çalışıyorum, örneğin RSI göstergesi gibi.. Aynı göstergede çizgiler olarak çizmek istediğim iki numaram var

Bir tür diziyi içereceğini biliyorum ama bunu hangi kod grubunun yapacağını bulma şansım yok.

 

gösterge tamponu

SPACECHIMP:
Örneğin, RSI göstergesi gibi bir çizgi çizme hakkında bilgi bulmaya çalışıyorum.. Aynı gösterge üzerinde çizgiler olarak çizmek istediğim iki sayı var, bunun bir tür dizi içereceğini biliyorum ama değilim hangi kod grubunun bunu gerçekleştireceğini bulma şansına sahip olmak.

Lütfen bu makaleyi okuyun

Yeni Başlayanlar için MQL4 Dili. Özel Göstergeler (Bölüm 1) - MQL4 Makaleleri

 
smb1970:
Merhaba millet,

George Smith'in Forex Made-EZ'sine aşina olan var mı bilmiyorum.

Şu anda çalışmalarını inceliyorum ve kullandığı Oscar osilatörü için bir gösterge kodlayan var mı diye merak ediyorum.

formül

A = son sekiz çubuğun en yükseği olsun (bu dahil)

B = son sekiz çubuğun en düşük seviyesi (bu dahil)

C = mevcut barların kapanış fiyatı olsun

Let X = önceki osilatör figürü (Oscar)

Bugünün "kaba" osilatörü eşittir (CB) bölü (AB) çarpı 100.

Daha sonra kaba numaramızı (hadi Y diyelim) şöyle "pürüzsüzleştiriyoruz":

Son osilatör sayısı = ((X bölü 3 çarpı 2), artı (Y bölü 3).

Bunu kodlayan veya kodlayan varsa çok makbule geçer.

Saygılar Steve

Bunu kendim kodlamaya başladım. Bunun benim düşündüğüm şeyi yapıp yapmadığı hakkında yorum yapan var mı? Rakamları manuel olarak hesaplarsam, değerler yaptıklarıyla tam olarak örtüşmüyor gibi görünüyor. Ayrıca, yalnızca göstergenin yerleştirildiği andan itibaren başlar. Tarihi değerleri de göstermesini isterim.

#özellik göstergesi_separate_window

#özellik göstergesi_tamponları 1

#özellik göstergesi_renk1 Kırmızı

//---- arabellekler

çift ExtMapBuffer1[];

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

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

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

int init()

{

//---- göstergeler

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

string short_name = "Oscar Göstergesi";

GöstergeShortName(short_name);

//----

dönüş(1);

}

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

//| Müşteri göstergesi sıfırlama işlevi |

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

int tanım()

{

dönüş(0);

}

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

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

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

int başlangıç()

{

int counted_bars=IndicatorCounted();

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

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

//---- son sayılan çubuk yeniden sayılacak

if (counted_bars>0) counted_bars--;

int pos=Barlar-sayılan_barlar;

//---- ana hesaplama döngüsü

Çift x;

x=50;

süre(konum>=0)

{

çift a, b, c, y, osc;

// A = son sekiz çubuğun en yükseği (bu dahil)

a=Yüksek;

// B = son sekiz çubuğun en düşük seviyesi (bu dahil)

b=Düşük;

//let C = mevcut barların kapanış fiyatı

c = Kapat[konum];

// X = önceki osilatör figürü (Oscar)

//Bugünün "kaba" osilatörü eşittir (CB) bölü (AB) çarpı 100.

y=((cb)/(ab))*100;

//Sonra kaba numaramızı (hadi Y diyelim) şöyle "pürüzsüzleştiriyoruz":

//Son osilatör sayısı = ((X bölü 3 çarpı 2), artı (Y bölü 3).

osc=((x/3)*2)+(y/3);

ExtMapBuffer1[konum]= osc ;

konum--;

}

dönüş(0);

}

Minnetle alınan herhangi bir yardım.

teşekkürler Steve

 

Sor... Mode_trades

merhaba, MODE_TRADES kullanımı için örnek verebilecek var mı?

Teşekkürler.

 

smb1970'e - işte bu:

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

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

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

#property indicator_maximum 100

#property indicator_minimum 0

//

//

//

//

//

extern int OscPeriod = 8;

extern int OscPrice = PRICE_CLOSE;

double oscBuffer[];

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

//| |

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

//

//

//

//

//

int init()

{

SetIndexBuffer(0,oscBuffer);

IndicatorShortName("Osc ("+OscPeriod+")");

return(0);

}

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

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

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//

//

//

//

//

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

{

double price = iMA(NULL,0,1,0,MODE_SMA,OscPrice,i);

double high = High[ArrayMaximum(High,OscPeriod,i)];

double low = Low[ArrayMinimum(Low,OscPeriod,i)];

//

//

//

//

//

if (high!=low)

double raw = 100.00*(price-low)/(high-low);

else raw = 0.00;

oscBuffer= oscBuffer*2.0/3.0 + raw/3.0;

}

return(0);

}

Ancak, resme de bir göz atın: üstte "Oscar" altta stokastik(8)'in Ema(5)'sı veya daha da basitleştirmek için altta sinyal hattı ayarlı Stokastik(8,5,1) var üstel. Yani "Oscar" basitçe stokastik sistemin bir sinyal çizgisidir.

Dosyalar:
oscar.gif  21 kb
 

Teşekkürler!

Teşekkürler mladen, bu sadece çok yararlı değil, aynı zamanda çok açıklayıcı!

 

NewB'nin kodlama konusunda yardıma ihtiyacı var :-(

Herkese selam,

Burada biraz farklı yardıma ihtiyacım var . Farklı göstergeler arasında bir anlaşma arayacak bir kodum var. Hepsi aynı fikirde olduğunda, işlemlerin grafik resimlerinde tanımladığım şekilde girmesi için bir yol istiyorum. Şimdiye kadar 1. "Satın Al" ticaretine girebiliyorum ama bu sadece 1 ticarete girmiyor....8 ticarete kadar giriyor. Ve sonra, eğer piyasa bana karşı çıkarsa, bana karşı olmasına rağmen tekrar alıp/sattığım bir "beklenmedik ticarete" girerim. Birisi bana doğru kodun neye benzemesi gerektiğini gösterebilirse çok memnun olurum.

Bu resimlerin gösterilip gösterilmeyeceğinden emin değilim, ancak ek olarak bende de olması durumunda.

İşte ticareti yürütmesi gereken kusurlu kodum ...

while (execute_trade ==5)

{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...bu, 1 sipariş verildikten sonra durur...ama henüz çalışmıyor

bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Puan);

execute_trade=0;

if(OrderSelect(bilet, SELECT_BY_TICKET, MODE_TRADES))

Print("Biletim: ", bilet);

{

buy1 = OrderOpenPrice(); //1. emrin fiyatını alıp bu değişkene itmek

// Comment("1 numaralı sipariş açık fiyatıdır ", OrderOpenPrice() + " " + buy1 + " şundan az " + (satınal1-0.0030));

if (al1 >= (al1-0.0030))

{

//if ( OrdersTotal() <= buy_trade1 ) //bu, 1 sipariş verildikten sonra onu durdurur.

bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Puan);

//execute_trade=0;

}

} başka

Print("OrderSelect, ",GetLastError() hatasını döndürdü);

}

 

Kodlama konusunda biraz yardıma ihtiyacı olan NewB

Herkese selam,

Burada farklı bir yardıma ihtiyacım var. Farklı göstergeler arasında bir anlaşma arayacak bir kodum var. Hepsi aynı fikirde olduğunda, işlemlerin grafik resimlerinde tanımladığım şekilde girmesi için bir yol istiyorum. Şimdiye kadar 1. "Satın Al" ticaretine girebiliyorum ama bu sadece 1 ticarete girmiyor....8 ticarete kadar giriyor. Ve sonra, eğer piyasa bana karşı çıkarsa, bana karşı olmasına rağmen tekrar alıp/sattığım bir "beklenmedik ticarete" girerim. Birisi bana doğru kodun neye benzemesi gerektiğini gösterebilirse çok memnun olurum.

Bu resimlerin gösterilip gösterilmeyeceğinden emin değilim, ancak ek olarak bende de olması durumunda.

resim 1

resim 2

İşte ticareti yürütmesi gereken kusurlu kodum ...

while (execute_trade ==5)

{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...bu, 1 sipariş verildikten sonra durur...ama henüz çalışmıyor

bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Puan);

execute_trade=0;

if(OrderSelect(bilet, SELECT_BY_TICKET, MODE_TRADES))

Print("Biletim: ", bilet);

{

buy1 = OrderOpenPrice(); //1. emrin fiyatını alıp bu değişkene itmek

// Comment("1 numaralı sipariş açık fiyatıdır ", OrderOpenPrice() + " " + buy1 + " şundan az " + (satınal1-0.0030));

if (al1 >= (al1-0.0030))

{

//if ( OrdersTotal() <= buy_trade1 ) //bu, 1 sipariş verildikten sonra onu durdurur.

bilet=SiparişGönder(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Puan);

//execute_trade=0;

}

}

başka

Print("OrderSelect, ",GetLastError() hatasını döndürdü);

}