
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bunu nasıl kodlayabilirim?
Pazar dokunursa (X.XX50 veya X.XX00)
sonra satın al. Son iki sayı nasıl belirlenir?
Teşekkürler.Bu yapmalı:
if ( Point == 0.01 ) {xPrice = Close - MathMod(Close,0.50) ; }
else { xPrice = Close - ( MathMod(100*Close,0.50)*0.01 ) ; }
P1Buffer = xPrice + Point*50;
P2Buffer = xPrice ;
P3Buffer = xPrice - Point*50;
[/CODE]
When MathMod(Close,0.50) = 0 then the price ends in 00 or 50.
Here's my indicator to identify 00 lines:
[CODE]
//+------------------------------------------------------------------+
//| _TRO_00_Lines |
//| |
//| |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightGray
#property indicator_color2 LightGray
#property indicator_color3 LightGray
// indicators parameters
//---- buffers
double P1Buffer[];
double P2Buffer[];
double P3Buffer[];
double xPrice ;
int myStyle = 2 ;
int myWingDing = 250 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0, P1Buffer);
SetIndexBuffer(1, P2Buffer);
SetIndexBuffer(2, P3Buffer);
SetIndexArrow(0, myWingDing);
SetIndexArrow(1, myWingDing);
SetIndexArrow(2, myWingDing);
SetIndexStyle(0, DRAW_ARROW, myStyle, 1);
SetIndexStyle(1, DRAW_ARROW, myStyle, 1);
SetIndexStyle(2, DRAW_ARROW, myStyle, 1);
SetIndexEmptyValue(0,0);
SetIndexEmptyValue(1,0);
SetIndexEmptyValue(2,0);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i, dayi, 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--;
int limit = Bars - counted_bars;
//----
for(i = limit - 1; i >= 0; i--)
{
if ( Point == 0.01 ) {xPrice = Close - MathMod(Close,1.00) ; }
else { xPrice = Close - ( MathMod(100*Close,1.00)*0.01 ) ; }
P1Buffer = xPrice + Point*100;
P2Buffer = xPrice ;
P3Buffer = xPrice - Point*100;
} // for
return(0);
} // startYine de bir EA için buna ihtiyacım var!
kodlayıcılar lütfen yardım edin
Şamdanlardan daha fazla noktayı yukarı ve aşağı hareket ettirmek için kodda ne değiştirilir?
Kodu gönderirseniz, birileri size gerçekten yardımcı olabilir.
Lüks
İşte gösterge
Noktaları yukarı ve aşağı hareket ettirmek için kodu değiştirebileceğiniz göstergesi
Zamanın doğru kullanımı[]
Adil bir programcıyım ama mql4'te yeniyim. Bir kutu ticareti (aka koparma ticareti) uzman danışmanı üzerinde çalışıyorum. Esasen belirli bir zaman dilimi için en yüksek ve en düşük değerleri bulmalı ve bir mum o kutunun dışında kapandığında bir ticaret yapıyorum.
Esasen üç eyalet var, EA'ma başlayabilirim
1) önceki günün kapanışından sonra ve kutu başlama saatinden önce.
2) kutunun başlangıcından sonra ancak kutunun bitiminden önce.
3) kutunun bitiminden sonra.
Kafa karıştırıcı bulduğum şey Time[] dizisi çünkü indeks değişmeye devam ediyor. Durum 2'ye girdiğimi varsayalım. init işlevinde , kutunun başlangıç konumunu veren global bir değişken ayarlayacaktım. Tırnaklar geldiğinde, başlatma işlevim sürekli olarak çağrılır ve kutu zamanının sonuna ulaşıldığında, başlangıç ve bitiş konumlarına sahip olurdum. Tabii ki, Time dizisindeki indeks ilerlemeye devam ettiği için durum böyle değil.
En iyi ihtimalle, kutu başlangıç indeksinin konumunu artırmaya devam edebilirim, ancak bu, işleri yapmanın çok temiz bir yolu gibi görünmüyor.
Düşüncemi geleneksel c/c++'dan mql4'e nasıl değiştirmem gerektiğine dair bir öneriniz varsa, bunu duymayı çok isterim.
Ayrıca işim bittiğinde, daha kıdemli bir programcı tarafından yapılan bir kod incelemesinden büyük ölçüde faydalanacağım. Bunun için gönüllü olmak isteyen var mı?
zaman ayırdığınız için teşekkürler
Markus
Adil bir programcıyım ama mql4'te yeniyim. Bir kutu ticareti (aka koparma ticareti) uzman danışmanı üzerinde çalışıyorum. Esasen belirli bir zaman dilimi için en yüksek ve en düşük değerleri bulmalı ve bir mum o kutunun dışında kapandığında bir ticaret yapıyorum.
Esasen üç eyalet var, EA'ma başlayabilirim
1) önceki günün kapanışından sonra ve kutu başlama saatinden önce.
2) kutunun başlangıcından sonra ancak kutunun bitiminden önce.
3) kutunun bitiminden sonra.
Kafa karıştırıcı bulduğum şey Time[] dizisi çünkü indeks değişmeye devam ediyor. Durum 2'ye girdiğimi varsayalım. init işlevinde, kutunun başlangıç konumunu veren global bir değişken ayarlayacaktım. Tırnaklar geldiğinde, başlatma işlevim sürekli olarak çağrılır ve kutu zamanının sonuna ulaşıldığında, başlangıç ve bitiş konumlarına sahip olurdum. Tabii ki, Time dizisindeki indeks ilerlemeye devam ettiği için durum böyle değil.
En iyi ihtimalle, kutu başlangıç indeksinin konumunu artırmaya devam edebilirim, ancak bu, işleri yapmanın çok temiz bir yolu gibi görünmüyor.
Düşüncemi geleneksel c/c++'dan mql4'e nasıl değiştirmem gerektiğine dair bir öneriniz varsa, bunu duymayı çok isterim.
Ayrıca işim bittiğinde, daha kıdemli bir programcı tarafından yapılan bir kod incelemesinden büyük ölçüde faydalanacağım. Bunun için gönüllü olmak isteyen var mı?
zaman ayırdığınız için teşekkürler
MarkusMerhaba. Zaman[] işlevi değişmeye devam etmez - yalnızca geçerli grafik çubuğunun sonunda değişir. TimeCurrent() ise sürekli değişen bir değer döndürür (1 saniyelik bir çözünürlükle de olsa).
Herhangi bir çubuğun ve zaman çerçevesinin tam zamanını iTime() kullanarak da alabilirsiniz. Bunun için birkaç yol var...
aynı anda iki sipariş aç (sorun...)
Merhaba, bazı Fırsatlarda senaryonun neden aynı anda iki sipariş açtığını bilmiyorum.
biri bana bu konuda yardımcı olabilir, lütfen
if(UseStopLoss)
bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Puan,Ask+TakeProfit*Puan,EAName, MagicNo, 0,Green);
başka
bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Puan,EAName, MagicNo, 0,Green);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
Teşekkürler
kod için yardım
Herkese selam,
HMA gibi bir göstergenin tersine çevrilmesini sağlayan yakın değeri hesaplamak için bir gösterge kodlamak istiyorum. Bunun için, geri dönüşü yaratan değeri bulmak için bir dikotomi döngüsündeki mevcut değeri değiştirdiğim yakın değerler sekmesi ile HMA'nın bir değerini hesaplamak için bir fonksiyon yaratmam gerekiyor.
Birisi bana ComputeHull işlevimde yardımcı olabilir mi?
İşte kodum, ikilik araştırması olmadan, bu, hesaplamaHull işlevine sahip basit bir HMA göstergesidir, gösterge görüntülenir ancak aşağı kaydırılır
Saygılarımızla
//#özellik göstergesi_separate_window
#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 3
#özellik göstergesi_color1 Mavi
//---- giriş parametreleri
extern int HullAntPeriod=12;
//---- arabellekler
çift TempBuf1[];
çift TempBuf2[];
çift GövdeAntBuf[];
//Değişken
int HalfHullAntPeriod;
int SqrtHullAntPeriod;
//+------------------------------------------- -------------------+
//| Özel işlevler |
//+------------------------------------------- -------------------+
çift ComputeHull(int ActualBar)
{
çift KapatTemp[];
çift Sıcaklık[];
çift Temp1, Temp2;
çift sonuç = -1;
int i;
//Close Değerlerini CloseTemp'e Kopyala
ArrayResize(CloseTemp, HullAntPeriod+SqrtHullAntPeriod);
ArrayCopy(CloseTemp, Close, 0, ActualBar, HullAntPeriod+SqrtHullAntPeriod);
ArraySetAsSeries(CloseTemp, true);
ArrayResize(Temp, SqrtHullAntPeriod);
//HMA değer hesaplaması
for(i=0; i<SqrtHullAntPeriod; i++)
{
Temp1 = iMAOnArray(CloseTemp, 0, HalfHullAntPeriod, 0, MODE_LWMA, i);
Temp2 = iMAOnArray(CloseTemp, 0, HullAntPeriod, 0, MODE_LWMA, i);
Sıcaklık = 2*Sıcaklık1-Sıcaklık2;
}
ArraySetAsSeries(Sıcaklık, doğru);
sonuç = iMAOnArray(Temp, 0, SqrtHullAntPeriod, 0, MODE_LWMA, 0);
//---- tamamlamak
dönüş(sonuç);
}
//+------------------------------------------- -------------------+
//| Özel gösterge başlatma işlevi |
//+------------------------------------------- -------------------+
int init()
{
//---- Geçici veriler için 1 ek arabellek kullanılır.
Gösterge Tamponları(3);
//---- çizim ayarları
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_NONE);
//---- 2 gösterge arabelleği eşlemesi
SetIndexBuffer(0,HullAntBuf);
SetIndexBuffer(1,TempBuf1);
SetIndexBuffer(2,TempBuf2);
//---- DataWindow ve gösterge alt pencere etiketi için isim
IndicatorShortName("HULL ANTICIP("+HullAntPeriod+")");
SetIndexLabel(0,"GÖVDE BEKLENTİSİ");
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);
//---- Spesifik gösterge başlatma
HalfHullAntPeriod = MathFloor(HullAntPeriod/2);
SqrtHullAntPeriod = MathFloor(MathSqrt(HullAntPeriod));
//---- başlatma tamamlandı
dönüş(0);
}
//+------------------------------------------- -------------------+
//| Özel gösterge sıfırlama işlevi |
//+------------------------------------------- -------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
//| Özel gösterge yineleme işlevi |
//+------------------------------------------- -------------------+
int başlangıç()
{
int bar, limit, i;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Barlar-sayılan_barlar;
for(i=0; i<limit; i++)
HullAntBuf=ComputeHull(i);
//----
dönüş(0);
}
//+------------------------------------------- -------------------+
Bu neden çalışmıyor?
double Place;
int Start()
{
Highest=iHighest(Symbol(),0,MODE_HIGH,1,0);Place=iHigh(Symbol(),0,Highest);
if(Gate==0){
if(iClose(Symbol(),0,0)>=Place){
OrderModify(ticket3,Ask,Ask-TrailingStop*Point-Spread,0,0,Green);
Gate=1;}
return(0);
}hatalar alıyorum. Basit bir son durak yapamam !!!!!!!